示例#1
0
        public static string ReceiveFrameBytesSTR(this IReceivingSocket socket)
        {
            var resultBytes = socket.ReceiveFrameBytes();

            if (resultBytes == null || resultBytes.Length == 0)
            {
                return(string.Empty);
            }
            return(Encoding.UTF8.GetString(resultBytes));
        }
示例#2
0
        public static Message ReceiveMessage(this IReceivingSocket socket, Kernel kernel = null)
        {
            var message = new Message();

            while (true)
            {
                var bytes = socket.ReceiveFrameBytes();
                if (bytes.SequenceEqual(Delimiter))
                {
                    break;
                }

                message.Identities.Add(bytes);
            }

            message.Signature = socket.ReceiveFrameString();
            var header       = socket.ReceiveFrameString();
            var parentHeader = socket.ReceiveFrameString();
            var metadata     = socket.ReceiveFrameString();
            var content      = socket.ReceiveFrameString();

            if (kernel != null)
            {
                var sig = kernel.SignMessage(header, parentHeader, metadata, content);
                if (sig != message.Signature)
                {
                    Console.WriteLine("! WARNING: Invalid message signature, ignoring the message");
                    message.Signature = null;
                }
            }

            message.Header       = JsonConvert.DeserializeObject <Header>(header);
            message.ParentHeader = JsonConvert.DeserializeObject <Header>(parentHeader);
            message.MetaData     = JObject.Parse(metadata);
            message.Content      = JObject.Parse(content);
            // Console.WriteLine($"> [{message.Header.MessageType}] {metadata} {content}");
            return(message);
        }
示例#3
0
        public static byte[] ReceiveFrameBytes([NotNull] this IReceivingSocket socket)
        {
            bool more;

            return(socket.ReceiveFrameBytes(out more));
        }