/// <summary> /// Takes a <see cref="Message"/> and converts it into a byte buffer. /// </summary> /// <param name="ctx"></param> /// <param name="message"></param> public void HandleDownstream(IPipelineHandlerContext ctx, IPipelineMessage message) { if (message is SendCommandMessage) { var evt = (SendCommandMessage) message; var slice = EncodeCommand(evt.Command); message = new SendSlice(slice); } ctx.SendDownstream(message); }
/// <summary> /// Send a buffer slice. /// </summary> /// <param name="message"></param> public virtual void Send(SendSlice message) { if (_socket == null) throw new InvalidOperationException("Socket is disconnected"); var buffer = message.BufferSlice; try { var tmp = Encoding.UTF8.GetString(buffer.Buffer, buffer.StartOffset, buffer.Count); Logger.Trace(tmp); Logger.Debug("Sending " + buffer.Count + " bytes"); _stream.BeginWrite(buffer.Buffer, buffer.StartOffset, buffer.Count, OnSent, message.BufferSlice); } catch (Exception err) { HandleDisconnect(err); Dispose(); } }