Esempio n. 1
0
        protected bool InternalTrySend(ISocketSession session, IProtoHandler protoHandler, ArraySegment<byte> segment)
        {
            if (!session.TrySend(segment))
                return false;

            return true;
        }
Esempio n. 2
0
        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));
        }
Esempio n. 5
0
            /// <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);
 }
Esempio n. 9
0
 public override void Send(ISocketSession session, IProtoHandler protoHandler, IList<ArraySegment<byte>> segments)
 {
     base.Send(session, protoHandler, protoHandler.DataEncoder.EncodeData(segments));
 }
Esempio n. 10
0
 public virtual void Send(ISocketSession session, IProtoHandler protoHandler, ArraySegment<byte> data)
 {
     InternalSend(session, protoHandler, new ArraySegment<byte>[] { data });
 }
Esempio n. 11
0
 public virtual void Send(ISocketSession session, IProtoHandler protoHandler, IList<ArraySegment<byte>> segments)
 {
     InternalSend(session, protoHandler, segments);
 }
Esempio n. 12
0
 public override bool TrySend(ISocketSession session, IProtoHandler protoHandler, IList <ArraySegment <byte> > segments)
 {
     return(base.TrySend(session, protoHandler, protoHandler.DataEncoder.EncodeData(segments)));
 }
Esempio n. 13
0
 public override void Send(ISocketSession session, IProtoHandler protoHandler, IList <ArraySegment <byte> > segments)
 {
     base.Send(session, protoHandler, protoHandler.DataEncoder.EncodeData(segments));
 }
Esempio n. 14
0
 public override void Send(ISocketSession session, IProtoHandler protoHandler, ArraySegment <byte> data)
 {
     base.Send(session, protoHandler, protoHandler.DataEncoder.EncodeData(data));
 }
Esempio n. 15
0
 public override bool TrySend(ISocketSession session, IProtoHandler protoHandler, IList<ArraySegment<byte>> segments)
 {
     return base.TrySend(session, protoHandler, protoHandler.DataEncoder.EncodeData(segments));
 }
Esempio n. 16
0
        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);
        }
Esempio n. 17
0
 public override void Send(ISocketSession session, IProtoHandler protoHandler, ArraySegment<byte> data)
 {
     base.Send(session, protoHandler, protoHandler.DataEncoder.EncodeData(data));
 }