public static void AddRequestToQueue(ReplicaState replicaState, ClientRequest clientRequest, Executor clientExecutor) { if (!replicaState.ClientTable.TryGetValue(clientRequest.ClientId, out Tuple <int, ClientResponse> clientTableCell) || clientTableCell == null) { // Not in dictionary... Add with value as null replicaState.ClientTable.Add(clientRequest.ClientId, new Tuple <int, ClientResponse>(-1, null)); } lock (clientExecutor) { if (clientExecutor.AddedToQueue) { Log.Debug($"Request #{clientExecutor.OpNumber} is scheduled to join Execution Queue."); return; } clientExecutor.AddedToQueue = true; } // Add to execution queue replicaState.ExecutionQueue.Add(clientRequest, clientExecutor); }
public void Init(MessageServiceClient messageServiceClient, Uri url, string serverId) { this.ReplicaState = new ReplicaState(messageServiceClient, url, serverId); }
public RequestsExecutor(ReplicaState replicaState, MessageServiceClient messageServiceClient) { this.replicaState = replicaState; this.messageServiceClient = messageServiceClient; }