Пример #1
0
 void IZoneNodePlayer.ClientFlush(BattleCodec codec)
 {
     try
     {
         if (pause_logic == false)
         {
             lock (mLogicSendingQueue)
             {
                 if (mLogicSendingQueue.Count > 0)
                 {
                     remote_logic?.BatchInvoke(mLogicSendingQueue);
                     mLogicSendingQueue.Clear();
                 }
             }
         }
         if (pause_client == false)
         {
             if (mSendingQueue.events.Count > 0)
             {
                 mSendingQueue.sequenceNo = node.ZoneNode.ZoneTick;
                 using (var buffer = MemoryStreamObjectPool.AllocAutoRelease())
                 {
                     try
                     {
                         if (codec.doEncodeWithHead(mSendingQueue, buffer))
                         {
                             var notify = BinaryMessage.FromBuffer(client_event_route, buffer);
                             remote_session?.WormholeTransport(notify);
                         }
                     }
                     catch (Exception err)
                     {
                         log.Error(err.Message, err);
                     }
                     finally
                     {
                         mSendingQueue.events.Clear();
                     }
                 }
             }
         }
     }
     catch (Exception err)
     {
         log.Error(err.Message, err);
     }
 }
Пример #2
0
 public virtual void client_rpc_Handle(BinaryMessage action)
 {
     try
     {
         using (var buffer = MemoryStreamObjectPool.AllocAutoRelease(action.DataSegment))
             using (var input = IOStreamObjectPool.AllocInputAutoRelease(base.ServerCodec.Factory, buffer))
             {
                 var roleID = input.GetUTF();
                 var player = GetPlayer(roleID);
                 if (player == null)
                 {
                     return;
                 }
                 //drop 4 for bytes size//
                 buffer.Position += 4;
                 player.client_rpc_Handle(buffer);
             }
     }
     catch (Exception e)
     {
         log.Error(e.Message, e);
     }
 }