Example #1
0
        /// <summary>
        /// completed handle
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ReceiveCompleted(object sender, SocketAsyncEventArgs e)
        {
            if (e.BytesTransferred > 0 && e.SocketError == SocketError.Success)
            {
                var session = new UdpSession(e.RemoteEndPoint, this);
                TMessage message = null;
                try { message = this._protocol.Parse(new ArraySegment<byte>(e.Buffer, 0, e.BytesTransferred)); }
                catch (Exception ex)
                {
                    XzySocketBase.Log.Trace.Error(ex.Message, ex);
                    this._service.OnError(session, ex);
                }

                if (message != null) this._service.OnReceived(session, message);
            }

            //receive again
            this.BeginReceive(e);
        }
 /// <summary>
 /// on error
 /// </summary>
 /// <param name="session"></param>
 /// <param name="ex"></param>
 public virtual void OnError(UdpSession session, Exception ex)
 {
 }
 /// <summary>
 /// on message received
 /// </summary>
 /// <param name="session"></param>
 /// <param name="message"></param>
 public virtual void OnReceived(UdpSession session, TMessage message)
 {
 }