Ejemplo n.º 1
0
        public static void CommitExchange(this IBus bus, string channelName)
        {
            var channels = Assimilate.GetInstanceOf <IChannelManager>();
            var channel  = channels.GetChannelFor(channelName) as IHaveChannelProxy;

            channel.Proxy.Channel.TxCommit();
        }
Ejemplo n.º 2
0
        public void Initialize()
        {
            var handlerInterfaces    = GetHandlerInterfaces().ToList();
            var dispatcherPairs      = GetMessageDispatcherPairs(handlerInterfaces);
            var actorDispatcherPairs = GetActorDispatcherPairs(handlerInterfaces);
            var sagaPairs            = GetSagaDispatcherPairs();

            var simpleInterface = typeof(IDispatchMessage);

            Assimilate.Dependencies(x =>
            {
                dispatcherPairs
                .ForEach(p =>
                {
                    x.For(p.Item1).Use(p.Item2);
                    x.For(simpleInterface).Add(p.Item2);
                });

                actorDispatcherPairs
                .ForEach(p =>
                {
                    x.For(p.Item1).Use(p.Item2);
                    x.For(simpleInterface).Add(p.Item2);
                });

                sagaPairs
                .ForEach(p =>
                {
                    x.For(p.Item1).Use(p.Item2);
                    x.For(simpleInterface).Add(p.Item2);
                });
            });
        }
Ejemplo n.º 3
0
        public TActor CreateInstanceFrom <TKey>(TKey id, object command)
        {
            var actor = Assimilate.GetInstanceOf <TActor>();

            KeyAccessor.SetId(actor, id);
            return(actor);
        }
Ejemplo n.º 4
0
        public static IBus AddRabbitQueue(this IBus bus, Action <EndpointConfigurator> configurate)
        {
            var endpoints = Assimilate.GetInstanceOf <IEndpointManager>();

            endpoints.ConfigureEndpoint(configurate);
            return(bus);
        }
Ejemplo n.º 5
0
        public ILuceneIndexer GetIndexingObserverForIndex(string indexName)
        {
            var indexer = Assimilate.GetInstanceOf <BaseIndexingObserver>();

            indexer.DocumentQueue = GetDocumentQueue(indexName);
            return(indexer);
        }
Ejemplo n.º 6
0
        protected void IndexEvent <T>(ILuceneIndexer indexer, T newEvent)
        {
            var visitor = Assimilate.GetInstanceOf <IVisit <T> >();

            visitor.Subscribe(indexer);
            visitor.Accept(newEvent);
        }
Ejemplo n.º 7
0
        private static void ConfigureStandardDependencies()
        {
            var assemblies = AppDomain
                             .CurrentDomain
                             .GetAssemblies()
                             .Where(a => a.GetReferencedAssemblies().Any(r => r.FullName.Contains("Mikado")) && !a.FullName.Contains("DynamicProxyGenAssembly2"))
                             .ToList();

            Assimilate.Dependencies(x => x.Scan(s =>
            {
                assemblies.ForEach(s.Assembly);
                s.ConnectImplementationsToTypesClosing(typeof(IRule <>));
            }));
            var rules =
                Assimilate
                .Assimilation
                .DependencyAdapter
                .RegisteredPluginTypes
                .Where(x => typeof(IRule).IsAssignableFrom(x) || x.IsAssignableFrom(typeof(IRule)))
                .Distinct();

            var simpleInterface = typeof(IRule);

            Assimilate.Dependencies(x => rules.ForEach(p => x.For(simpleInterface).Add(p)));
        }
Ejemplo n.º 8
0
        protected override void OnStartup(StartupEventArgs e)
        {
            base.OnStartup(e);

            Assimilate
            .Initialize()
            .Rabbit(x => x.AddBroker(s => s.Defaults()
                                     .Address(ConfigurationManager.AppSettings["RabbitHost"]))
                    .EnrollAsMeshNode(true))
            .Dependencies(x =>
            {
                x.For <IEventAggregator>().Use <EventAggregator>().AsSingleton();
                x.For <IOrderCollectionViewModel>().Use <OrderCollectionViewModel>();
                x.For <IOrderItemViewModel>().Use <OrderItemViewModel>();
                x.For <IOrderViewModel>().Use <OrderViewModel>();
                x.For <IOrderViewModelFactory>().Use <OrderViewModelFactory>();
            });

            var mainWindow = new MainWindow();
            var viewModel  = Assimilate.GetInstanceOf <IOrderCollectionViewModel>();

            mainWindow.DataContext  = viewModel;
            viewModel.RequestClose += (sender, args) => mainWindow.Close();
            viewModel.Dispatcher    = mainWindow.Dispatcher;
            mainWindow.Show();
        }
Ejemplo n.º 9
0
 public static void WriteMember(object instance, string memberName, object value)
 {
     try
     {
         var type = instance.GetType();
         CreateLookupsForType(type);
         var parts = memberName.Split('.');
         if (parts.Length > 1)
         {
             var parent = ReadFromCache(instance, type, parts[0]);
             if (parent == null)
             {
                 var intended = GetMemberType(type, parts[0]);
                 parent = Assimilate.GetInstanceOf(intended);
             }
             WriteMember(parent, string.Join(".", parts.Skip(1)), value);
         }
         else
         {
             WriteThroughCache(instance, type, memberName, value);
         }
     }
     catch (Exception e)
     {
         // do nothing
     }
 }
Ejemplo n.º 10
0
 static void Main(string[] args)
 {
     Assimilate
     .Core <StructureMapAdapter>()
     .Relax(x => x.UseDefaults().Server(ConfigurationManager.AppSettings["couchdb"]))
     .RelaxLuceneSearchProvider(@"http://localhost:8420/", TimeSpan.FromSeconds(10))
     .AddColorConsoleLogger <ChangeWatcher>(x => x
                                            .Info()
                                            .DefineColor()
                                            .Text.IsGreen().ForAllOutput()
                                            .MessageLayout(m => m.Message().Date().Newline())
                                            )
     .AddConsoleLogger <RelaxDemoService>(x => x
                                          .Info()
                                          .MessageLayout(m => m.Message().Newline())
                                          )
     .Dependencies(x => x.For(typeof(IRemoteProxy <>)).Use(typeof(RemoteProxy <>)))
     .Daemon(x => x
             .Arguments(args)
             .Name("relaxdemo")
             .DisplayName("Relax Demo")
             .Description("Relax Integration Testing")
             )
     .RunDaemon();
 }
Ejemplo n.º 11
0
        public static DistributedLock Create <T>(T lockId)
        {
            var manager      = Assimilate.GetInstanceOf <ILockManager>();
            var lockInstance = new DistributedLock(manager, lockId);

            manager.AcquireLock(lockId);
            return(lockInstance);
        }
Ejemplo n.º 12
0
        public ILuceneSearchProvider GetSearchProviderForIndex(string indexName)
        {
            var searchProvider = Assimilate.GetInstanceOf <BaseSearchProvider>();

            searchProvider.IndexWriter = GetIndexWriter(indexName);
            searchProvider.Analyzer    = GetQueryAnalyzer(indexName);
            return(searchProvider);
        }
Ejemplo n.º 13
0
        public static IAssimilate Riak(this IAssimilate assimilate, Action <RiakConfigurator> configurate)
        {
            var configurator = new RiakConfigurator();

            configurate(configurator);
            Assimilate.Dependencies(x => x.For <IRiakConfiguration>().Use(configurator.Configuration));
            return(assimilate);
        }
Ejemplo n.º 14
0
        public IMemento <T> GetMemento <T>(T instance)
        {
            var memento = Assimilate.GetInstanceOf <IMemento <T> >();

            //TODO: Add exception handling for null mememnto instance
            memento.Capture(instance);
            return(memento);
        }
Ejemplo n.º 15
0
 static void Main(string[] args)
 {
     Assimilate
     .Initialize()
     .Daemon(x => x.Name("shortorder.host").AsDynamicHost(b => b.HostApplicationsFrom(@"..\..\..\..\services\")))
     .AddConsoleLogger <HostService>(x => x.Debug().MessageLayout(m => m.Message().Newline()))
     .RunDaemon();
 }
Ejemplo n.º 16
0
        public static void Configure(Action <CouchConfigurator> configure)
        {
            Assimilate.Initialize();
            var config = new CouchConfigurator();

            configure(config);
            Configure(config.Configuration);
        }
Ejemplo n.º 17
0
 public void Initialize()
 {
     Assimilate
     .Initialize()
     .Daemon(x => x.Name("shortorder.persistenceservice ) )"))
     .Rabbit(x => x.AddBroker(b => b.Defaults()))
     .RunDaemon();
 }
Ejemplo n.º 18
0
        public ServiceClient(ILogger <IServiceConfiguration> logger)
        {
            Logger = logger;
            Logger.Log(LogLevel.Info, "{0} proxy instantiated", typeof(TContract).AssemblyQualifiedName);
            var configurationStrategy = Assimilate.GetInstanceOf <IServiceClientConfigurationStrategy <TContract> >();

            configurationStrategy.ConfigureServiceClient(this);
        }
Ejemplo n.º 19
0
 public WcfClientConfigurator RegisterService <TContract, TStrategy>()
     where TStrategy : IServiceClientConfigurationStrategy <TContract>
     where TContract : class
 {
     Assimilate.Dependencies(x => x
                             .For <IServiceClientConfigurationStrategy <TContract> >()
                             .Use <TStrategy>());
     return(this);
 }
Ejemplo n.º 20
0
        public void Dispatch(IEnvelope envelope)
        {
            var actor   = Agent.GetActor(envelope.CorrelationId);
            var message = (TMessage)envelope.Message;

            Handler = Handler ?? Assimilate.GetInstanceOf <IHandle <TActor, TMessage> >();
            Handler.Handle(actor, message)(envelope);
            Agent.Memoize(actor);
        }
Ejemplo n.º 21
0
 public void Initialize()
 {
     Assimilate
     .Initialize()
     .RocketSockets(x => x.UseDefaultEndpoint())
     .HyperStack(x => x
                 .ConfigureHost(c => c
                                .BasePath(ConfigurationManager.AppSettings["BasePath"])
                                .AddViewSearchFolder("template")
                                )
                 .RegisterApplications(routes => routes
                                       .DefineApplication(request => request.RequestUri.EndsWith("fav.ico"), (request, response, exception) =>
     {
         response(HttpStatus.NoContent.ToString(), new Dictionary <string, string>(), (bytes, error, continuation) => () => { });
     })
                                       .DefineApplication <FileServer>(request =>
     {
         var last = request.PathSegments.LastOrDefault() ?? "";
         return(last.Contains(".") || request.RequestUri.Equals("/"));
     })
                                       .DefineApplication <IdService>(request =>
                                                                      "uniqueid".Equals(request.PathSegments.FirstOrDefault()) &&
                                                                      request.Method.Equals("GET"))
                                       .DefineApplication <MenuItemList>(request =>
                                                                         "menu".Equals(request.PathSegments.FirstOrDefault()) &&
                                                                         request.Method.Equals("GET"))
                                       .DefineApplication <NewMenuItem>(request =>
                                                                        "menuitem".Equals(request.PathSegments.FirstOrDefault()) &&
                                                                        request.PathSegments.Count == 2 &&
                                                                        request.Method.Equals("PUT"))
                                       .DefineApplication <UpdateMenuItem>(request =>
                                                                           "menuitem".Equals(request.PathSegments.FirstOrDefault()) &&
                                                                           request.PathSegments.Count == 2 &&
                                                                           request.Method.Equals("POST"))
                                       .DefineApplication <NewOrder>(request =>
                                                                     "order".Equals(request.PathSegments.FirstOrDefault()) &&
                                                                     request.Method.Equals("PUT"))
                                       .DefineApplication <OrderList>(request =>
                                                                      "order".Equals(request.PathSegments.FirstOrDefault()) &&
                                                                      request.PathSegments.Count == 1 &&
                                                                      request.Method.Equals("GET"))
                                       .DefineApplication <OrderStatus>(request =>
                                                                        "order".Equals(request.PathSegments.FirstOrDefault()) &&
                                                                        request.PathSegments.Count == 2 &&
                                                                        request.Method.Equals("GET"))
                                       .DefineApplication(request => true, (request, response, exception) =>
     {
         response(HttpStatus.NoContent.ToString(), new Dictionary <string, string>(), (bytes, error, continuation) => () => { });
     })
                                       )
                 )
     .AddConsoleLogger <HostService>(x => x.Debug().MessageLayout(m => m.Message().Newline()))
     .Rabbit(x => x.AddBroker(b => b.Defaults().Address(ConfigurationManager.AppSettings["RabbitHost"])).EnrollAsMeshNode(true))
     .Daemon(x => x.Name("shortstack.http"))
     .Dependencies(x => x.For <FileServer>().Use <FileServer>().AsSingleton())
     .RunDaemon();
 }
Ejemplo n.º 22
0
        public void PublishOnCommit <TEvent>(Action <TEvent> populateEvent)
        {
            var newEvent  = Assimilate.GetInstanceOf <TEvent>();
            var baseEvent = newEvent as IEvent;

            PopulateDefaultEventFields(baseEvent);
            populateEvent(newEvent);
            Events.Add(baseEvent);
        }
Ejemplo n.º 23
0
 static void Main(string[] args)
 {
     Assimilate
     .Initialize()
     .Rabbit(x => x.AddBroker(b => b.Defaults()))
     .AddConsoleLogger <PingService>(x => x.Debug().MessageLayout(m => m.Message().Newline()))
     .Daemon(x => x.Name("ping"))
     .RunDaemon();
 }
Ejemplo n.º 24
0
 static void Main(string[] args)
 {
     Assimilate
     .Initialize()
     .Daemon(x => x.Arguments(args).Name("node"))
     .Rabbit(x => x.AddBroker(b => b.Address("localhost").AMQP091()).EnrollAsMeshNode(false))
     .AddConsoleLogger <NodeService>(x => x.Debug().MessageLayout(m => m.Message().Newline()))
     .RunDaemon();
 }
Ejemplo n.º 25
0
        public DaemonConfigurator AsDynamicHost(Action <BootStrapConfigurator> bootstrapper)
        {
            var configurator = new BootStrapConfigurator();

            bootstrapper(configurator);
            Configuration.BootStrapConfiguration = configurator.Configuration;
            Assimilate.Dependencies(x => x.For <IBootStrapper>().Use <BootStrapper>().AsSingleton());
            return(this);
        }
Ejemplo n.º 26
0
        public void Reply <TResponse>(TResponse response)
        {
            var bus = Assimilate.GetInstanceOf <IBus>();

            bus.Publish(
                "local",
                response,
                x => { x.CorrelationId = MessageId.ToString(); });
        }
Ejemplo n.º 27
0
        private void ReadServiceInfoFromMetadataExchange(string mexAddress)
        {
            var cache           = Assimilate.GetInstanceOf <IServiceMetadataCache>();
            var serviceEndPoint = cache.GetEndPoint <TContract>(mexAddress);

            Configuration = "";
            Endpoint      = serviceEndPoint.Address;
            Binding       = serviceEndPoint.Binding;
        }
Ejemplo n.º 28
0
        public IOrderItemViewModel GetOrderItemViewModelFromValue(string description, int itemId, int qty)
        {
            var orderItem = Assimilate.GetInstanceOf <IOrderItemViewModel>();

            orderItem.Description = description;
            orderItem.ItemId      = itemId;
            orderItem.Qty         = qty;
            return(orderItem);
        }
Ejemplo n.º 29
0
        public IChannel CreateChannel(IChannelDefinition definition)
        {
            var namedPipeChannelDefinition = definition as NamedPipeChannelDefinition;
            var serializer       = Assimilate.GetInstanceOf(definition.SerializerType) as IMessageSerializer;
            var proxy            = new PipeProxy(namedPipeChannelDefinition, Dispatcher, serializer);
            var namedPipeChannel = new NamedPipeChannel(namedPipeChannelDefinition, proxy, Dispatcher);

            return(namedPipeChannel);
        }
Ejemplo n.º 30
0
        static void Main(string[] args)
        {
            Assimilate
            .Initialize()
            .Daemon(x => x.Name("localChannelTest").Arguments(args))
            .AddConsoleLogger <Service>(x => x.Info().MessageLayout(m => m.Message().Newline()))
            .RunDaemon();

            Console.ReadKey();
        }