public void Send <T>(RequestFormat request, Response <T> response) where T : class { if (this.state != SocketState.Connected) { return; } SocketRequestEntry ingameRequest = new SocketRequestEntry(request, typeof(T)); ingameRequest.RequestTime = DateTime.UtcNow; requests.Add(ingameRequest); EnqueueRequestId(lastRequestId); byte[] bytes = BsonSerializer.SerializeToByte(request); Send(bytes); if (Logger.IsMutePacket(request.method) == false) { Logger.Debug(string.Format("<color=#86E57F>[Send]</color> method = {0} rid = {1}", request.method, request.id)); } this.responseList.Add(new ResponseEntry <T>() { request = ingameRequest, responseCallback = response }); }