public async Task SendAsync(Stream stream, TransmitDelegate next) { using (var cryptoStream = new CryptoStream(stream, new ToBase64Transform(), CryptoStreamMode.Write)) { await next(cryptoStream); } }
private async Task SendMessageAsync(Func <Stream, Task> writer) { var transformIterator = ((IEnumerable <IMiddleware>)_middleware).Reverse().GetEnumerator(); TransmitDelegate transformDelegator = null; transformDelegator = async transformedStream => { if (transformIterator.MoveNext()) { using (_logger?.Tracer($"Middleware[{transformIterator.Current.GetType()}].SendAsync(...)")) { await transformIterator.Current.SendAsync(transformedStream, transformDelegator).ConfigureAwait(false); } } else { await writer(transformedStream).ConfigureAwait(false); } }; await _writeLock.WaitAsync(); try { using (var writeStream = _clientWebSocket.GetWriteStream()) { await transformDelegator .Invoke(writeStream) .ContinueWith(async task => { // Dispose first before handling return state transformIterator.Dispose(); // Unwrap and allow the outer exception handler to handle this case task.WaitAndUnwrapException(); }) .ConfigureAwait(false); } } finally { _writeLock.Release(); } }
internal void AddTransmitButton(ToolStripContainer topToolBar, TransmitDelegate transmitDelegate) { transDelegate = transmitDelegate; if (transDelegate != null) { if (transmitToolStrip.Items.Count > 0) { transmitToolStrip.Items.RemoveAt(0); } ToolStripItem button; button = new ToolStripButton(); button.DisplayStyle = ToolStripItemDisplayStyle.ImageAndText; button.ImageScaling = ToolStripItemImageScaling.SizeToFit; //button. button.Text = "Transmit"; button.ImageKey = "Transmit"; button.Name = "Transmit"; button.ToolTipText = "Transmit to FaxGateway"; transmitToolStrip.Items.Add(button); } else { if (transmitToolStrip.Items.Count > 0) { transmitToolStrip.Items.RemoveAt(0); } } ToolStripLabel statusText = new ToolStripLabel(); statusText.AutoSize = true; statusText.TextAlign = ContentAlignment.MiddleCenter; statusText.Padding = new Padding(10, 10, 10, 10); statusText.Name = "FileName"; // statusText.Text = "Image File name"; // statusText.Font = new Font("Arial", 10); transmitToolStrip.Items.Add(statusText); return; }
//public class SerialData //{ public SerialPacket() { /* Receive State Variables */ receive_state = PROC_STATE_AWAITING_START_BYTE; receive_next_char_is_escaped = false; /* Function Pointers */ Transmit = null; TransmitPacketComplete = null; ReceivePacketComplete = null; ReceiveDataError = null; /* Transmit State Variables */ transmit_state = PROC_STATE_TRANSMIT_COMPLETE; transmit_address = 0; transmit_length = 0; transmit_checksum = 0; transmit_data_index = 0; }