コード例 #1
0
ファイル: OrderedQueue.cs プロジェクト: pedrodaniel10/DAD
        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);
        }
コード例 #2
0
 public void Init(MessageServiceClient messageServiceClient, Uri url, string serverId)
 {
     this.ReplicaState = new ReplicaState(messageServiceClient, url, serverId);
 }
コード例 #3
0
 public RequestsExecutor(ReplicaState replicaState, MessageServiceClient messageServiceClient)
 {
     this.replicaState         = replicaState;
     this.messageServiceClient = messageServiceClient;
 }