Beispiel #1
0
        public void RegisterRequest(string clientId, long requestId, long acknowledgedRequestId)
        {
            if (LoggingEnabled)
            {
                if (!string.IsNullOrEmpty(clientId) && requestId > 0)
                {
                    RequestStatus status = new RequestStatus();
                    status.Status = Alachisoft.NCache.Common.Enum.RequestStatus.RECEIVED_AND_INEXECUTION;
                    //status.RequestLogTime = DateTime.Now;

                    Dictionary <long, RequestStatus> clientRequests;
                    bool found = false;
                    lock (_clientRequestLog)
                    {
                        found = _clientRequestLog.TryGetValue(clientId, out clientRequests);
                        if (!found)
                        {
                            clientRequests = new Dictionary <long, RequestStatus>();
                            _clientRequestLog.Add(clientId, clientRequests);
                        }

                        lock (clientRequests)
                        {
                            if (!clientRequests.ContainsKey(requestId))
                            {
                                clientRequests.Add(requestId, status);
                                _statsCollector.IncrementRequestLogCount(1);
                            }
                            else
                            {
                                clientRequests[requestId] = status;
                            }
                        }
                    }



                    if (acknowledgedRequestId >= 0)
                    {
                        if (found)
                        {
                            RemoveLogRequests(clientRequests, acknowledgedRequestId);
                        }
                    }
                }
            }
        }