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)); } }
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); }
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)); }
public void Write(MTObject @object) { MTObjectSerializer.Serialize(@object, this); }
public static MTObject ReadMTObject(this BinaryReader reader) { return(MTObjectSerializer.Deserialize(reader)); }
public MTObject ReadObject() { return(MTObjectSerializer.Deserialize(this)); }