Exemplo n.º 1
0
        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;
        }
Exemplo n.º 3
0
        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);
            }*/
        }
Exemplo n.º 4
0
 public ErrorMessage(Exception error, Message cause)
 {
     Error = error;
     Cause = cause;
 }
Exemplo n.º 5
0
 protected void OnMessageReceived(Message message)
 {
     if (MessageReceived != null)
     {
         MessageReceived(this, new MessageEvent(message));
     }
 }
Exemplo n.º 6
0
 public MessageEvent(Message message)
 {
     Message = message;
 }
Exemplo n.º 7
0
        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);            
        }