void OnPing(EasyAdapter adapter, byte[] buf, int offset, int length) { var ms = PktHelper.NewPkt(PktType.Pong); PktHelper.ClosePkt(ms); adapter.WriteStream(ms); }
void OnRpcRequest(EasyAdapter adapter, byte[] buf, int offset, int length) { int msgid = _bufhelper.ReadInt(); int source = _bufhelper.ReadInt(); int destination = _bufhelper.ReadInt(); EasyAdapter dest = null; var k = _bufhelper.ReadString(); var lst = new List<EasyAdapter>(); _Rpcs.TryGetValue(k, out lst); if (lst != null) { if (lst.Count == 1) { dest = lst[0]; } else if (lst.Count > 1) { dest = lst[_random.Next(lst.Count)]; } } if (dest == null) { var ms = PktHelper.NewPkt(PktType.RpcErr); ms.WriteInt(msgid); ms.WriteInt(adapter.ID); ms.WriteInt(adapter.ID); ms.WriteString("no such method!"); //Console.WriteLine("no such method!"); PktHelper.ClosePkt(ms); adapter.WriteStream(ms); //Console.WriteLine("no such method!----"); } else { var ms = PktHelper.NewPkt(PktType.RpcRequest); ms.WriteInt(msgid); ms.WriteInt(adapter.ID); ms.WriteInt(dest.ID); //Console.WriteLine("api_" + dest.ID); ms.WriteString(k); _bufhelper.ReadBytes(out offset, out length); ms.WriteBytes(buf, offset, length); PktHelper.ClosePkt(ms); dest.WriteStream(ms); } }
void OnNewSocket(Socket sc) { Excute(() => { if (_AllAdapters.Count > MaxConnectCount) { SocketHelper.FreeSocket(sc); return; } var a = new EasyAdapter(this, sc); _AllAdapters[a.ID] = a; a.OnClose = this.Poll; var ms = PktHelper.NewPkt(PktType.Open); PktHelper.ClosePkt(ms); a.WriteStream(ms); }); }