public async Task <ResponseBase> SendRequest(RequestBase request, int timeout = 3000) { ResponseBase result = null; if (Connected) { try { Console.Out.WriteLine("sending " + request.GetType().ToString()); byte[] data = RequestSerializer.Serialize(request); lock (responses) { // This tells the system that we're waiting for a specific response with this token responses[request.Token] = null; } await SendCommand(CommandTypes.Request, data); WaitForResponse(request.Token).Wait(timeout); lock (responses) { if (responses.ContainsKey(request.Token)) { result = responses[request.Token]; responses.Remove(request.Token); } } } catch (Exception) {} } return(result); }
public async Task SendResponse(ResponseBase response) { if (Connected) { try { byte[] data = RequestSerializer.Serialize(response); await SendCommand(CommandTypes.Response, data); } catch (Exception) {} } }