示例#1
0
        public ClientResponse Command(ClientReqeust reqeust)
        {
            ClientResponse response = new ClientResponse();
            LogEntry       logEntry = new LogEntry
            {
                Command = reqeust.Command,
                Index   = _stateController.PersistentState.LastLogIndex + 1,
                Term    = _stateController.PersistentState.CurrentTerm
            };

            _uncommittiedLogs.Add(logEntry);
            return(response);
        }
示例#2
0
 public ClientResponse ClientInvoke(ClientReqeust request)
 {
     lock (this)
     {
         if (_node.CurrentRole.Type == RoleType.Follower)
         {
             Follower follower = (Follower)_node.CurrentRole;
             //todo rediret request to leader node
             IHost _host = _node.Peers[0].RemoteClient;
             return(_host.ClientInvoke(request));
         }
         return((_node.CurrentRole as Leader).Command(request));
     }
 }