Example #1
0
        private async Task HandlePlainText(HttpContext context, ulong auth_key, BinaryReader reader)
        {
            var message_id   = reader.ReadUInt64();
            var message_size = reader.ReadInt32();
            var envelop      = MessageContext.Create(reader.ReadMTObject());

            envelop.AuthKey(auth_key);
            envelop.MessageId(message_id);
            envelop.MessageSize(message_size);
            this.logger.LogDebug(
                "PlainText request received: {0}", envelop.Body);

            var response = await MTServer.Instance.Services.Bus().Send(envelop);

            var writer = new BinaryWriter(context.Response.Body);

            writer.Write(auth_key);
            writer.Write(message_id);
            writer.Write(message_size);
            if (response != null)
            {
                MTObjectSerializer.Serialize(response as MTObject, writer);
                this.logger.LogDebug(
                    $"PlainText request successfully handled. Response: '{response}'");
            }
            else
            {
                this.logger.LogWarning(
                    $"No response for: '{envelop.Body}'");
                //context.Response.StatusCode = 404;
            }
            writer.Close();
        }
 public static MTObject ToMTObject(this byte[] bytes)
 {
     using (var mem = new MemoryStream(bytes))
         using (var reader = new BinaryReader(mem))
         {
             return(MTObjectSerializer.Deserialize(reader));
         }
 }
        public object Deserialize(byte[] bytes)
        {
            using (var memory = new MemoryStream(bytes, false))


                using (var reader = new BinaryReader(memory))
                {
                    return(MTObjectSerializer.Deserialize(reader));
                }
        }
Example #4
0
        public static IMessageContext DeserializeMessage(this IMTServiceProvider services, string packet)
        {
            IMessageContext result  = null;
            MessagePacket   _packet = JsonConvert.DeserializeObject <MessagePacket>(packet);
            object          message = null;

            if (_packet.Data != null && _packet.Data.Length > 1)
            {
                message = _packet.Type == typeof(MTObject).Name
                                        ? MTObjectSerializer.DeserializeEx(_packet.Data)
                                        : JsonConvert.DeserializeObject(Encoding.UTF8.GetString(_packet.Data), Type.GetType(_packet.Type));
            }
            result = MessageContext.Create(message, null, _packet.Headers, serviceProvider: services);
            return(result);
        }
Example #5
0
        public static string Serialize(this IMessageContext context)
        {
            var result = "";

            var packet = new MessagePacket();

            packet.Headers = new Dictionary <string, string>(context.Headers);
            packet.Data    = new byte[] { };

            if (context.Body != null)
            {
                if (context.Body as MTObject != null)
                {
                    packet.Data = MTObjectSerializer.SerializeEx(context.Body as MTObject);
                    packet.Type = typeof(MTObject).Name;
                }
                else
                {
                    packet.Data = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(context.Body));
                    packet.Type = context.Body.GetType().AssemblyQualifiedName;
                }
            }
            return(JsonConvert.SerializeObject(packet));
        }
Example #6
0
 public void Write(MTObject @object)
 {
     MTObjectSerializer.Serialize(@object, this);
 }
 public static MTObject ReadMTObject(this BinaryReader reader)
 {
     return(MTObjectSerializer.Deserialize(reader));
 }
Example #8
0
 public MTObject ReadObject()
 {
     return(MTObjectSerializer.Deserialize(this));
 }