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); } }
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); } }