示例#1
0
 void OnPing(EasyAdapter adapter, byte[] buf, int offset, int length)
 {
     var ms = PktHelper.NewPkt(PktType.Pong);
     PktHelper.ClosePkt(ms);
     adapter.WriteStream(ms);
 }
示例#2
0
 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);
     }
 }
示例#3
0
 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);
     });
 }