private async Task <TResult> SendSyncRequestAsync <TResult>(IVPNRequest request) where TResult : IVPNResponse { await __SyncCallSemaphore.WaitAsync(__CancellationToken.Token); try { SendRequest(request); return(await Task.Run(() => GetSyncResponse <TResult>())); } finally { __SyncCallSemaphore.Release(); } }
private void SendRequest(IVPNRequest request) { Logging.Info("Sending: " + request); // Hello request can be sent without being in "connected if (!(request is IVPNHelloRequest)) { CheckConnected(); } lock (__StreamWriter) { __StreamWriter.WriteLine(JsonConvert.SerializeObject(request, new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All })); __StreamWriter.Flush(); } }