예제 #1
0
 protected virtual bool RemoveServerRequest(Client client, RemoveServerRequest request)
 {
     client.SendRemoveServerReply(RemoveServerStatus.NotLeader, null);
     return true;
 }
예제 #2
0
 public bool RemoveServerRequest(RemoveServerRequest request)
 {
     var client = _server.GetClient(request.From);
     return RemoveServerRequest(client, request);
 }
예제 #3
0
 public async Task RemoveServer([FromBody] RemoveServerRequest request)
 {
     await _statisticsCounterController.RemoveServer(request.ServerAddress);
 }
예제 #4
0
        protected override bool RemoveServerRequest(Client client, RemoveServerRequest request)
        {
            //System.Diagnostics.Debug.Assert(_server.Clients.Count(x => x.ID.Equals(request.From)) == 1);
            foreach (var c in _server.Clients)
            {
                if (c.ID.Equals(request.From))
                {
                    foreach (var cc in _serversToRemove)
                        if (cc.ID.Equals(request.From))
                            return true; // already queued for removal

                    // add to queue
                    _serversToRemove.Add(client);
                    return true;
                }
            }

            // client was in the server's list, this can happen if
            // the server to be removed never got the OK, send again
            client.SendRemoveServerReply(RemoveServerStatus.Ok, client.ID);

            return true;
        }
예제 #5
0
 public void SendRemoveServerRequest()
 {
     Console.WriteLine("{0}: Sending remove server request to {1}", _server.Name, this.ID);
     var message = new RemoveServerRequest()
     {
         From = _server.ID,
         //EndPoint = new IPEndPoint(_server.Config.IP, _server.Config.Port)
     };
     _lastMessage = message;
     _server.Transport.SendMessage(this, message);
     _rpcDue = _server.Tick + _server.PersistedStore.RPC_TIMEOUT;
 }