internal void AddResponse(Common.Net.Address address, CommandResponse response) { _type = response.Type; lock (_responseMutex) { if (_responses.ContainsKey(address)) { if (!response.IsInternalResponse && response.NeedsDeserialization) { if (_rawResponses == null) { _rawResponses = new List <CommandResponse>(); } _rawResponses.Add(response); } else { ResponseList responseList; if (response.CommandID <= 0) { var responses = _responses[address]; foreach (var rsp in responses.Values) { if (!rsp.IsComplete()) { rsp.AddResponse(response); break; } } return; } if (_responses[address].TryGetValue(response.CommandID, out responseList)) { if (Connection.WriteRequestIdInResponse || !responseList.IsComplete()) { responseList.AddResponse(response); } } } } } }
internal void AddResponse(Common.Net.Address address, CommandResponse response) { _type = response.Type; lock (_responseMutex) { if (_responses.ContainsKey(address)) { ResponseList responseList; if (_responses[address].TryGetValue(response.CommandID, out responseList)) { if (!responseList.IsComplete) { responseList.AddResponse(response); } } } } }