private static async Task Send(IInteract context, BufferBlock <ResponseMessageModel> messages, CancellationToken token) { while (await messages.OutputAvailableAsync(token)) { using (var stream = _streamFactory.Create()) { var message = await messages.ReceiveAsync(token); ProtoBuf.Serializer.Serialize(stream, message); await context.Send(stream, token); } } }
public async Task SendAsync(ChunkedStream message, CancellationToken token) { var connect = _connect.Result; loop: try { if (!connect.IsCompleted) { await connect; } await _interact.Send(message, token); } catch (TaskCanceledException) { throw; } catch { connect = await Reconnect(token); goto loop; } }