public void Send(Message message, String hostName, int port) { Task.Run(() => { TcpClient client = new TcpClient(); client.Connect(hostName, port); ClientFrameCodec.Instance.Encode(message, client.GetStream()); }); }
public InvalidSubscriptionException(Message request, Nack nack) : base(TextForErrorCode(nack.error) + ": " + nack.FormattedMessage) { switch (request.TypeId) { case SubAddRqst.ID: Expression = ((SubAddRqst)request).subscriptionExpr; break; case SubModRqst.ID: Expression = ((SubModRqst)request).subscriptionExpr; break; default: Expression = ""; break; } Reason = nack.error == NackError.ExpisTrivial ? SubscriptionError.TrivialExpression : SubscriptionError.SyntaxError; }
public void Encode(Message message, Stream outStream) { // buffer is auto deallocated MemoryStream buffer = new MemoryStream(); message.Encode(buffer); // write frame type int frameSize = (int)buffer.Length + 4; // (= TypeId + data len) BinWriter.QuickWrite(outStream, (w) => { w.Write(frameSize); w.Write(message.TypeId); }); buffer.Position = 0; buffer.CopyTo(outStream); // if (isEnabled (TRACE) && buffer.limit () <= MAX_BUFFER_DUMP) // trace ("Codec output: " + buffer.getHexDump (), this); // sanity check frame is 4-byte aligned if (frameSize % 4 != 0) throw new ProtocolCodecException ("Frame length not 4 byte aligned for " + message.GetType().Name); /*int maxLength = maxFrameLengthFor (session); if (frameSize <= maxLength) { // write out whole frame buffer.flip (); out.write (buffer); } else { throw new FrameTooLargeException (maxLength, frameSize); }*/ }
public ErrorMessage(Exception error, Message cause) { Error = error; Cause = cause; }
protected void OnMessageReceived(Message message) { if (MessageReceived != null) { MessageReceived(this, new MessageEvent(message)); } }
public MessageEvent(Message message) { Message = message; }
public async void Send(Message message) { MemoryStream str = new MemoryStream(); ClientFrameCodec.Instance.Encode(message, str); byte[] buf = str.ToArray(); await Stream.WriteAsync(buf, 0, buf.Length); }