Example #1
0
        public KMessageSequence <TNodeId> Decode(IKMessageContext <TNodeId> context, ReadOnlySequence <byte> buffer)
        {
            var p = global::MessagePack.MessagePackSerializer.Deserialize <MessageSequence>(buffer);
            var s = new KMessageSequence <TNodeId>(p.Network, Decode(context, p.Messages));

            return(s);
        }
Example #2
0
        public KMessageSequence <TNodeId> Decode(IKMessageContext <TNodeId> resources, ReadOnlySequence <byte> buffer)
        {
            var p = MessageSequence.Parser.ParseFrom(buffer);
            var s = new KMessageSequence <TNodeId>(p.Network, Decode(resources, p.Messages));

            return(s);
        }
Example #3
0
        /// <summary>
        /// Writes the message sequence to the HTTP response.
        /// </summary>
        /// <param name="context"></param>
        /// <param name="format"></param>
        /// <param name="responses"></param>
        /// <returns></returns>
        async Task WriteAsync(HttpContext context, IKMessageFormat <TNodeId> format, KMessageSequence <TNodeId> responses)
        {
            var w = PipeWriter.Create(context.Response.Body);

            format.Encode(new KMessageContext <TNodeId>(format.ContentType.Yield()), w, responses);
            await w.FlushAsync(context.RequestAborted);

            w.Complete();
        }
Example #4
0
        /// <summary>
        /// Returns the responses.
        /// </summary>
        /// <param name="context"></param>
        /// <param name="responses"></param>
        /// <returns></returns>
        async Task ReplyAsync(HttpContext context, KMessageSequence <TNodeId> responses)
        {
            foreach (var accept in context.Request.Headers.GetCommaSeparatedValues("Accept"))
            {
                if (formats.FirstOrDefault(i => i.ContentType == accept) is IKMessageFormat <TNodeId> format)
                {
                    await WriteAsync(context, format, responses);

                    return;
                }
            }
        }
 public void Encode(IKMessageContext <TNodeId> context, IBufferWriter <byte> buffer, KMessageSequence <TNodeId> messages)
 {
     encoder.Encode(context, buffer, messages);
 }
Example #6
0
 public void Encode(IKMessageContext <TNodeId> context, IBufferWriter <byte> buffer, KMessageSequence <TNodeId> sequence)
 {
     using var writer = new Utf8JsonWriter(buffer);
     writer.WriteStartObject();
     writer.WriteNumber("network", sequence.Network);
     writer.WritePropertyName("messages");
     Write(writer, context, sequence);
     writer.WriteEndObject();
 }
        public void Encode(IKMessageContext <TNodeId> context, IBufferWriter <byte> buffer, KMessageSequence <TNodeId> sequence)
        {
            var p = new MessageSequence();

            p.Network  = sequence.Network;
            p.Messages = Encode(context, sequence).ToArray();
            global::MessagePack.MessagePackSerializer.Serialize(buffer, p);
        }
        public void Encode(IKMessageContext <TNodeId> context, IBufferWriter <byte> buffer, KMessageSequence <TNodeId> sequence)
        {
            var p = new MessageSequence();

            p.Network = sequence.Network;
            p.Messages.AddRange(Encode(context, sequence));
            p.WriteTo(buffer);
        }
Example #9
0
 /// <summary>
 /// Initializes a new instance.
 /// </summary>
 /// <param name="format"></param>
 /// <param name="messages"></param>
 public KUdpPacket(string format, KMessageSequence <TNodeId>?messages)
 {
     this.format   = format ?? throw new ArgumentNullException(nameof(format));
     this.messages = messages;
 }