Пример #1
0
        /// <summary>
        /// Constructs my default state from the <paramref name="configuration"/>
        /// </summary>
        /// <param name="configuration">The <code>Configuration</code>.</param>
        /// <param name="type">The <code>ClientConsumerType</code>.</param>
        /// <param name="poolSize">The size of the pool of workers.</param>
        public Client(Configuration configuration, ClientConsumerType type, int poolSize)
        {
            _configuration = configuration;

            Type clientConsumerType;
            IEnumerable <object> parameters;

            switch (type)
            {
            case ClientConsumerType.Correlating:
                clientConsumerType = typeof(ClientCorrelatingRequesterConsumerActor);
                parameters         = Definition.Parameters(configuration);
                break;

            case ClientConsumerType.RoundRobin:
                clientConsumerType = typeof(RoundRobinClientRequestConsumerActor);
                var rrDefinition = Definition.Has <ClientConsumerWorkerActor>(Definition.Parameters(configuration));
                var rrSpec       = new RouterSpecification <IClientConsumer>(poolSize, rrDefinition);
                parameters = Definition.Parameters(configuration, rrSpec);
                break;

            case ClientConsumerType.LoadBalancing:
                clientConsumerType = typeof(LoadBalancingClientRequestConsumerActor);
                var lbDefinition = Definition.Has <ClientConsumerWorkerActor>(Definition.Parameters(configuration));
                var lbSpec       = new RouterSpecification <IClientConsumer>(poolSize, lbDefinition);
                parameters = Definition.Parameters(configuration, lbSpec);
                break;

            default:
                throw new ArgumentException($"ClientConsumerType is not mapped: {type}");
            }

            _consumer = configuration.Stage.ActorFor <IClientConsumer>(Definition.Has(clientConsumerType, parameters));
        }
Пример #2
0
 protected internal virtual void InitRoutees(RouterSpecification <P> specification)
 {
     for (var i = 0; i < specification.InitialPoolSize; ++i)
     {
         var protocols = new Type[] { specification.RouterProtocol, typeof(IAddressable) };
         var two       = ChildActorFor(protocols, specification.RouterDefinition);
         Subscribe(Routee <P> .Of(two.Get <P>(0), two.Get <IAddressable>(1)));
     }
 }
Пример #3
0
 public SmallestMailboxRouter(RouterSpecification specification) : base(specification)
 {
 }
Пример #4
0
 public LoadBalancingClientRequestConsumerActor(
     Client.Configuration configuration,
     RouterSpecification <IClientConsumer> specification)
     : base(specification)
 {
 }
Пример #5
0
 public RandomRouter(RouterSpecification <P> specification, Random seededRandom) : base(specification)
     => _random = seededRandom;
Пример #6
0
 public RandomRouter(RouterSpecification <P> specification, int seed) : this(specification, new Random(seed))
 {
 }
Пример #7
0
 /// <summary>
 /// Constructs my default state.
 /// </summary>
 /// <param name="configuration">The <see cref="Configuration"/></param>
 /// <param name="specification">The <see cref="RouterSpecification{T}"/></param>
 /// <exception cref="Exception">When the router cannot be initialized</exception>
 public RoundRobinClientRequestConsumerActor(Client.Configuration configuration, RouterSpecification <IClientConsumer> specification) : base(specification)
 {
 }
Пример #8
0
 public RoundRobinRouter(RouterSpecification <P> specification) : base(specification)
 {
     poolIndex = 0;
 }
Пример #9
0
 public Router(RouterSpecification <P> specification)
 {
     routees = new List <Routee <P> >();
     InitRoutees(specification);
 }
 protected ContentBasedRouter(RouterSpecification <P> specification) : base(specification)
 {
 }
Пример #11
0
 protected internal BroadcastRouter(RouterSpecification <TP> specification) : base(specification)
 {
 }