protected bool InternalTrySend(ISocketSession session, IProtoHandler protoHandler, ArraySegment<byte> segment) { if (!session.TrySend(segment)) return false; return true; }
protected void InternalSend(ISocketSession session, IProtoHandler protoHandler, ArraySegment<byte> segment) { if (!session.CanSend() || (protoHandler != null && !protoHandler.CanSend())) return; if (InternalTrySend(session, protoHandler, segment)) return; var sendTimeOut = m_SendTimeOut; //Don't retry, timeout directly if (sendTimeOut < 0) { throw new TimeoutException("The sending attempt timed out"); } var timeOutTime = sendTimeOut > 0 ? DateTime.Now.AddMilliseconds(sendTimeOut) : DateTime.Now; var spinWait = new SpinWait(); while (session.CanSend()) { spinWait.SpinOnce(); if (InternalTrySend(session, protoHandler, segment)) return; //If sendTimeOut = 0, don't have timeout check if (sendTimeOut > 0 && DateTime.Now >= timeOutTime) { throw new TimeoutException("The sending attempt timed out"); } } }
protected bool InternalTrySend(ISocketSession session, IProtoHandler protoHandler, ArraySegment <byte> segment) { if (!session.TrySend(segment)) { return(false); } return(true); }
public virtual bool TrySend(ISocketSession session, IProtoHandler protoHandler, ArraySegment <byte> data) { if (!session.CanSend() || (protoHandler != null && !protoHandler.CanSend())) { return(false); } return(InternalTrySend(session, protoHandler, data)); }
/// <summary> /// 取消注册包处理函数 /// </summary> /// <param name="handler">要注册的网络消息包处理类.</param> public void UnRegisterHandler(IProtoHandler handler) { if (handler == null) { throw new GameFrameworkException("Packet handler is invalid."); } this.UnRegisterHandler(handler.PacketId, handler.Handler); }
protected void InternalSend(ISocketSession session, IProtoHandler protoHandler, ArraySegment <byte> segment) { if (!session.CanSend() || (protoHandler != null && !protoHandler.CanSend())) { return; } if (InternalTrySend(session, protoHandler, segment)) { return; } var sendTimeOut = m_SendTimeOut; //Don't retry, timeout directly if (sendTimeOut < 0) { throw new TimeoutException("The sending attempt timed out"); } var timeOutTime = sendTimeOut > 0 ? DateTime.Now.AddMilliseconds(sendTimeOut) : DateTime.Now; var spinWait = new SpinWait(); while (session.CanSend()) { spinWait.SpinOnce(); if (InternalTrySend(session, protoHandler, segment)) { return; } //If sendTimeOut = 0, don't have timeout check if (sendTimeOut > 0 && DateTime.Now >= timeOutTime) { throw new TimeoutException("The sending attempt timed out"); } } }
public virtual void Send(ISocketSession session, IProtoHandler protoHandler, ArraySegment <byte> data) { InternalSend(session, protoHandler, new ArraySegment <byte>[] { data }); }
public virtual void Send(ISocketSession session, IProtoHandler protoHandler, IList <ArraySegment <byte> > segments) { InternalSend(session, protoHandler, segments); }
public override void Send(ISocketSession session, IProtoHandler protoHandler, IList<ArraySegment<byte>> segments) { base.Send(session, protoHandler, protoHandler.DataEncoder.EncodeData(segments)); }
public virtual void Send(ISocketSession session, IProtoHandler protoHandler, ArraySegment<byte> data) { InternalSend(session, protoHandler, new ArraySegment<byte>[] { data }); }
public virtual void Send(ISocketSession session, IProtoHandler protoHandler, IList<ArraySegment<byte>> segments) { InternalSend(session, protoHandler, segments); }
public override bool TrySend(ISocketSession session, IProtoHandler protoHandler, IList <ArraySegment <byte> > segments) { return(base.TrySend(session, protoHandler, protoHandler.DataEncoder.EncodeData(segments))); }
public override void Send(ISocketSession session, IProtoHandler protoHandler, IList <ArraySegment <byte> > segments) { base.Send(session, protoHandler, protoHandler.DataEncoder.EncodeData(segments)); }
public override void Send(ISocketSession session, IProtoHandler protoHandler, ArraySegment <byte> data) { base.Send(session, protoHandler, protoHandler.DataEncoder.EncodeData(data)); }
public override bool TrySend(ISocketSession session, IProtoHandler protoHandler, IList<ArraySegment<byte>> segments) { return base.TrySend(session, protoHandler, protoHandler.DataEncoder.EncodeData(segments)); }
public virtual bool TrySend(ISocketSession session, IProtoHandler protoHandler, ArraySegment<byte> data) { if (!session.CanSend() || (protoHandler != null && !protoHandler.CanSend())) return false; return InternalTrySend(session, protoHandler, data); }
public override void Send(ISocketSession session, IProtoHandler protoHandler, ArraySegment<byte> data) { base.Send(session, protoHandler, protoHandler.DataEncoder.EncodeData(data)); }