private void OnFrontendMessageReceived(IRemote conn, Message msg)
{
Console.WriteLine("OnFrontendMessageReceived id:{0} ip:{1} port:{2}", conn.Id, conn.RemoteIp, conn.RemotePort);
Console.WriteLine("OnFrontendMessageReceived msgLen:{0}", msg.Buffer.Length);
// forward frontend msg to backend,
// which is based on uuid associated with the msg
var stream = new MemoryStream(msg.Buffer);
var br = new BinaryReader(stream);
var msgType = (GateMessage)br.ReadByte();
Console.WriteLine("OnFrontendMessageReceived msgType:{0}", msgType);
switch (msgType)
{
case GateMessage.Send:
{
var uuid = new Guid(br.ReadBytes(UuidLen));
var key = br.ReadInt32();
Console.WriteLine("OnFrontendMessageReceived key:{0} uuid:{1}", key, uuid);
broker.RouteData(key, uuid, msg.Buffer, msg.Buffer.Length - 17, 17);
}
break;
case GateMessage.Handshake:
{
var uuid = new Guid(br.ReadBytes(UuidLen));
Console.WriteLine("OnFrontendMessageReceived uuid:{0}", uuid);
uuidToClients[uuid] = conn;
// send back a ack
}
break;
default:
throw new ArgumentOutOfRangeException();
}
}
private void OnBackendMessageReceived(IRemote conn, Message msg)