private static async Task ReadAsync(IAsyncDvcChannel dvc) { while (true) { var packet = await dvc.ReadMessageAsync(); Console.WriteLine("> " + Encoding.UTF8.GetString(packet)); } }
private static async void HandleTest1(IAsyncDvcChannel obj) { await obj.SendMessageAsync(Encoding.UTF8.GetBytes("Connected")); while (true) { var text = Encoding.UTF8.GetString(await obj.ReadMessageAsync()); Console.WriteLine($"{obj.GetHashCode():x8}\tReceived {text}"); await obj.SendMessageAsync(Encoding.UTF8.GetBytes(text)); } }
// Called from DVC API public async void AcceptConnection(IAsyncDvcChannel channel) { ServiceRegistration existingRegistration; try { var cts = new CancellationTokenSource(TimeSpan.FromSeconds(5)); // Read service name var serviceNameUtf8 = await channel.ReadMessageAsync(cts.Token).ConfigureAwait(false); var serviceName = Encoding.UTF8.GetString(serviceNameUtf8); // Lookup service lock (syncRegisteredServices) { if (!RegisteredServices.TryGetValue(serviceName, out existingRegistration)) { throw new ChannelNotAvailableException($"Service '{serviceName}' not registered"); } } // Accept await channel.SendMessageAsync(Encoding.UTF8.GetBytes("ACCEPTED")).ConfigureAwait(false); } catch (Exception ex) { Logger.Error(ex, "Exception trying to accept a new brokered connection"); try { await channel.SendMessageAsync(Encoding.UTF8.GetBytes("ERROR Service not registered")).ConfigureAwait(false); channel.Dispose(); } catch (OperationCanceledException) { /* no-op */ } catch (ObjectDisposedException) { /* no-op */ } catch (DvcChannelDisconnectedException) { /* no-op */ } catch (Exception ex2) { Logger.Error(ex2, "Could not notify RDS endpoint of failed conncetion attempt"); } return; } if (!existingRegistration.TryAcceptConnection(channel)) { KillRegistration(existingRegistration); } }
private async Task <Message> ReceiveAsync(TimeSpan timeout) { try { var ct = GetCancellationTokenForTimeout(timeout); var encodedBytes = TakeOwnership(await channel.ReadMessageAsync(ct)); return(DecodeMessage(encodedBytes)); } catch (ObjectDisposedException) { /* no-op */ } catch (OperationCanceledException) { /* no-op */ } catch (DvcChannelDisconnectedException) { /* no-op */ } catch (SocketException socketException) { throw ConvertSocketException(socketException, "Receive"); } // ODE, Cancellation, Disconnection -> end of stream return(null); }
private async void ReadAsync(IAsyncDvcChannel obj) { try { while (true) { listBox.Items.Add(Encoding.UTF8.GetString(await obj.ReadMessageAsync())); } } catch (TaskCanceledException) { listBox.Items.Add("Ending read due to cancelled"); } catch (ObjectDisposedException) { listBox.Items.Add("Ending read due to ODE"); } catch (DvcChannelDisconnectedException) { listBox.Items.Add("Ending read due to disconnected"); } }
private static async void ReceiveAsync(IAsyncDvcChannel obj) { while (true) { Console.WriteLine($"{obj.GetHashCode():x8}\t > " + Encoding.UTF8.GetString(await obj.ReadMessageAsync())); } }