Пример #1
0
        /// <summary>
        /// Invoke this method upon start.
        /// </summary>
        /// <param name="args"></param>
        public void OnStart(string[] args)
        {
            Contract.Requires<ArgumentNullException>(args != null);

            var sect = RnetServiceConfigurationSection.GetDefaultSection();
            if (sect == null)
                throw new ConfigurationErrorsException("Rnet.Service configuration not found.");

            // spawn each host
            foreach (var conf in sect.Hosts)
            {
                // expose new bus on a new host with new container
                var container = new CompositionContainer(catalog);
                var context = new AsyncContextThread();
                var bus = new RnetBus(conf.Bus);
                var host = new RnetHost(bus, conf.Uri, container);
                instances.Add(new Instance(container, context, bus, host));

                // schedule initialization
                context.Factory.Run(async () =>
                {
                    await bus.Start();
                    await host.StartAsync();
                }).Wait();
            }
        }
Пример #2
0
            /// <summary>
            /// Initializes a new instance.
            /// </summary>
            /// <param name="container"></param>
            /// <param name="sync"></param>
            /// <param name="bus"></param>
            /// <param name="host"></param>
            public Instance(CompositionContainer container, AsyncContextThread sync, RnetBus bus, RnetHost host)
            {
                Contract.Requires<ArgumentNullException>(container != null);
                Contract.Requires<ArgumentNullException>(sync != null);
                Contract.Requires<ArgumentNullException>(bus != null);
                Contract.Requires<ArgumentNullException>(host != null);

                Container = container;
                Context = sync;
                Bus = bus;
                Host = host;
            }