Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
 public async Task SendResponse(ResponseBase response)
 {
     if (Connected)
     {
         try
         {
             byte[] data = RequestSerializer.Serialize(response);
             await SendCommand(CommandTypes.Response, data);
         }
         catch (Exception) {}
     }
 }