Esempio n. 1
0
        static void Main(string[] args)
        {
            var msgBus = new FakeMessageBus();

            var fabService    = new FabService(msgBus);
            var fcdService    = new FcdService(msgBus);
            var fxService     = new FxService(msgBus);
            var feService     = new FeService(msgBus);
            var resultService = new ResultSaverService(msgBus);

            msgBus.RegisterHandler <XChanged>(fxService.When);
            msgBus.RegisterHandler <FXProcessed>(feService.When);
            msgBus.RegisterHandler <FEProcessed>(resultService.When);
            msgBus.RegisterHandler <AChanged>(fabService.When);
            msgBus.RegisterHandler <FABProcessed>(fcdService.When);
            msgBus.RegisterHandler <FCDProcessed>(feService.When);
            msgBus.RegisterHandler <CxChanged>(fcdService.When);
            msgBus.RegisterHandler <CxChanged>(fxService.When);

            msgBus.Publish(new XChanged(1));
            msgBus.Publish(new AChanged(2));
            msgBus.Publish(new CxChanged(5, 7));

            Console.ReadLine();
        }
Esempio n. 2
0
        /*--------------------------------------------------------------------------------------------*/
        private static FabSpecService BuildService(FabService pSvc, Func <string, ApiEntry> pGetEntry)
        {
            var s = new FabSpecService();

            s.Name        = pSvc.Name;
            s.Uri         = pSvc.Uri;
            s.Summary     = ApiLang.Text <ServiceText>(s.Name + "Summ");
            s.Description = ApiLang.Text <ServiceText>(s.Name + "Desc");
            s.Operations  = new List <FabSpecServiceOperation>();

            foreach (FabServiceOperation svcOp in pSvc.Operations)
            {
                if (svcOp == null)
                {
                    throw new Exception("Missing ServiceOperation for '" + pSvc.Name + "'.");
                }

                string   key = svcOp.Method + " " + s.Uri + svcOp.Uri;
                ApiEntry ae;

                try {
                    ae = pGetEntry(key);
                }
                catch (Exception e) {
                    throw new Exception("No ApiEntry for '" + pSvc.Name + "' with key '" + key + "'.", e);
                }

                FabSpecServiceOperation sso = BuildServiceOp(s.Name, svcOp, ae);
                s.Operations.Add(sso);
            }

            return(s);
        }
Esempio n. 3
0
        /*--------------------------------------------------------------------------------------------*/
        private static FabService BuildOauthMenu()
        {
            var s = new FabService();

            s.Name = "Oauth";
            s.Uri  = "/Oauth";

            if (OauthAt == null)
            {
                OauthAt     = NewOperation <FabOauthAccess>("AccessToken");
                OauthAtac   = NewOperation <FabOauthAccess>("AccessTokenAuthCode");
                OauthAtr    = NewOperation <FabOauthAccess>("AccessTokenRefresh");
                OauthAtcc   = NewOperation <FabOauthAccess>("AccessTokenClientCredentials");
                OauthLogin  = NewOperation <FabOauthLogin>("Login");
                OauthLogout = NewOperation <FabOauthLogout>("Logout");
            }

            s.Operations.Add(OauthAt);
            s.Operations.Add(OauthAtac);
            s.Operations.Add(OauthAtr);
            s.Operations.Add(OauthAtcc);
            s.Operations.Add(OauthLogin);
            s.Operations.Add(OauthLogout);

            return(s);
        }
Esempio n. 4
0
        /*--------------------------------------------------------------------------------------------*/
        private static FabService BuildModMenu()
        {
            var s = new FabService();

            s.Name = "Modify";
            s.Uri  = "/Mod";

            foreach (ApiEntry e in CreateExecutors.ApiEntries)
            {
                string name = e.Path.Replace(s.Uri + "/", "");
                var    op   = NewOperation(name, e.ResponseType, e.RequestMethod);
                s.Operations.Add(op);
            }

            return(s);
        }
Esempio n. 5
0
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        private static FabService BuildMetaMenu()
        {
            var s = new FabService();

            s.Name = "Meta";
            s.Uri  = "/Meta";

            if (MetaSpec == null)
            {
                MetaSpec    = NewOperation <FabResponse <FabSpec> >("Spec");
                MetaVersion = NewOperation <FabResponse <FabMetaVersion> >("Version");
                MetaTime    = NewOperation <FabResponse <FabMetaTime> >("Time");
            }

            s.Operations.Add(MetaSpec);
            s.Operations.Add(MetaVersion);
            s.Operations.Add(MetaTime);

            return(s);
        }
Esempio n. 6
0
        /*--------------------------------------------------------------------------------------------*/
        private static FabService BuildTravMenu()
        {
            var s = new FabService();

            s.Name = "Traversal";
            s.Uri  = "/Trav";

            foreach (ApiEntry e in TraversalExecutors.ApiEntries)
            {
                if (e.Path.IndexOf("*") != -1)
                {
                    continue;
                }

                string name = e.Path.Replace(s.Uri + "/", "");
                var    op   = NewOperation(name, e.ResponseType, e.RequestMethod);
                s.Operations.Add(op);
            }

            return(s);
        }
Esempio n. 7
0
        /*--------------------------------------------------------------------------------------------*/
        private static FabSpecService BuildTraversalService(FabService pSvc,
                                                            Func <string, ApiEntry> pGetEntry)
        {
            IList <ITravRule> rules = TraversalUtil.GetTravRules();
            var map = new Dictionary <SpecStepAttribute, IList <ITravRule> >();

            foreach (ITravRule rule in rules)
            {
                SpecStepAttribute ssa = GetAttribute <SpecStepAttribute>(rule.Step.GetType());

                if (!map.ContainsKey(ssa))
                {
                    map.Add(ssa, new List <ITravRule>());
                }

                map[ssa].Add(rule);
            }

            ////

            FabSpecService svc = BuildService(pSvc, pGetEntry);

            svc.Steps = new List <FabSpecServiceStep>();

            foreach (SpecStepAttribute ssa in map.Keys)
            {
                if (ssa.IsRoot)
                {
                    continue;
                }

                svc.Steps.Add(BuildTraversalServiceStep(ssa, map[ssa]));
            }

            return(svc);
        }