/// <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)); }
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))); } }
public SmallestMailboxRouter(RouterSpecification specification) : base(specification) { }
public LoadBalancingClientRequestConsumerActor( Client.Configuration configuration, RouterSpecification <IClientConsumer> specification) : base(specification) { }
public RandomRouter(RouterSpecification <P> specification, Random seededRandom) : base(specification) => _random = seededRandom;
public RandomRouter(RouterSpecification <P> specification, int seed) : this(specification, new Random(seed)) { }
/// <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) { }
public RoundRobinRouter(RouterSpecification <P> specification) : base(specification) { poolIndex = 0; }
public Router(RouterSpecification <P> specification) { routees = new List <Routee <P> >(); InitRoutees(specification); }
protected ContentBasedRouter(RouterSpecification <P> specification) : base(specification) { }
protected internal BroadcastRouter(RouterSpecification <TP> specification) : base(specification) { }