public Task RegisterMemberAsync(
            Cluster cluster, string clusterName, string host, int port, string[] kinds,
            IMemberStatusValue statusValue, IMemberStatusValueSerializer serializer
            )
        {
            var props = Props.FromFunc(
                ctx =>
            {
                if (ctx.Message is GetKinds && ctx.Sender != null)
                {
                    ctx.Respond(new GetKindsResponse {
                        Kinds = { _kinds }
                    });
                }

                return(Actor.Done);
            }
                );

            cluster.Remote.Serialization.RegisterFileDescriptor(ProtosReflection.Descriptor);

            cluster.Remote.RegisterKnownKind(KindsResponder, props);

            _kinds    = kinds;
            _okStatus = serializer.Deserialize("Ok!");
            _koStatus = serializer.Deserialize("Ko!");

            _isServer = host == _serverHost && port == _serverPort;

            return(Actor.Done);
        }
Exemplo n.º 2
0
        public Task RegisterMemberAsync(Cluster cluster,
                                        string clusterName, string address, int port, string[] kinds, IMemberStatusValue statusValue,
                                        IMemberStatusValueSerializer statusValueSerializer
                                        )
        {
            var props = Props
                        .FromProducer(() => new ConsulClusterMonitor(cluster.System, _options, _consulConfig))
                        .WithGuardianSupervisorStrategy(Supervision.AlwaysRestartStrategy)
                        .WithDispatcher(Mailbox.Dispatchers.SynchronousDispatcher);

            _clusterMonitor = cluster.System.Root.SpawnNamed(props, "ClusterMonitor");

            cluster.System.Root.Send(
                _clusterMonitor, new Messages.RegisterMember
            {
                ClusterName           = clusterName,
                Address               = address,
                Port                  = port,
                Kinds                 = kinds,
                StatusValue           = statusValue,
                StatusValueSerializer = statusValueSerializer
            }
                );

            return(Actor.Done);
        }
        private async Task Register(RegisterMember cmd, ISpawnerContext context)
        {
            _id                    = $"{cmd.ClusterName}@{cmd.Address}:{cmd.Port}";
            _clusterName           = cmd.ClusterName;
            _address               = cmd.Address;
            _port                  = cmd.Port;
            _kinds                 = cmd.Kinds;
            _statusValueSerializer = cmd.StatusValueSerializer;

            await RegisterService(cmd.StatusValue, context);
        }
Exemplo n.º 4
0
        public async Task RegisterMemberAsync(string clusterName, string address, int port, string[] kinds, IMemberStatusValue statusValue, IMemberStatusValueSerializer statusValueSerializer)
        {
            _id                    = $"{clusterName}@{address}:{port}";
            _clusterName           = clusterName;
            _address               = address;
            _port                  = port;
            _kinds                 = kinds;
            _index                 = 0;
            _statusValue           = statusValue;
            _statusValueSerializer = statusValueSerializer;

            await RegisterServiceAsync();
            await RegisterMemberValsAsync();

            UpdateTtl();
        }
 public ClusterConfig WithMemberStatusValueSerializer(IMemberStatusValueSerializer serializer)
 {
     MemberStatusValueSerializer = serializer;
     return(this);
 }
Exemplo n.º 6
0
        public Task RegisterMemberAsync(string clusterName, string host, int port, string[] kinds, IMemberStatusValue statusValue, IMemberStatusValueSerializer serializer)
        {
            _kinds    = kinds;
            _okStatus = serializer.FromValueBytes(Encoding.UTF8.GetBytes("Ok!"));
            _koStatus = serializer.FromValueBytes(Encoding.UTF8.GetBytes("Ko!"));

            _isServer = host == _serverHost && port == _serverPort;

            return(Actor.Done);
        }
Exemplo n.º 7
0
 public Task RegisterMemberAsync(string clusterName, string h, int p, string[] kinds, IMemberStatusValue statusValue, IMemberStatusValueSerializer serializer)
 {
     return(Task.FromResult(0));
 }