/// <summary>
        /// on received
        /// </summary>
        /// <param name="session"></param>
        /// <param name="cmdInfo"></param>
        public override void OnReceived(UdpSession session, TCommandInfo cmdInfo)
        {
            if (string.IsNullOrEmpty(cmdInfo.CmdName))
            {
                return;
            }

            ThreadPool.QueueUserWorkItem(_ =>
            {
                Command.IUdpCommand <TCommandInfo> cmd = null;
                this._dicCommand.TryGetValue(cmdInfo.CmdName, out cmd);
                try
                {
                    if (cmd == null)
                    {
                        this.HandleUnKnowCommand(session, cmdInfo);
                    }
                    else
                    {
                        cmd.ExecuteCommand(session, cmdInfo);
                    }
                }
                catch (Exception ex)
                {
                    this.OnCommandExecException(session, cmdInfo, ex);
                }
            });
        }
Beispiel #2
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;
                try {
                    if (this._protocolHandler.TryParse(new ArraySegment <byte>(e.Buffer, 0, e.BytesTransferred), out message))
                    {
                        this._service.OnReceived(session, message);
                    }
                } catch (Exception ex)
                {
                    SocketBase.Log.Trace.Error(ex.Message, ex);
                    this._service.OnError(session, ex);
                }
            }

            //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)
 {
 }
Beispiel #5
0
 /// <summary>
 /// OnReceived
 /// </summary>
 /// <param name="session"></param>
 /// <param name="cmdInfo"></param>
 public virtual void OnReceived(UdpSession session, TCommandInfo cmdInfo)
 {
 }
 /// <summary>
 /// on command exec exception
 /// </summary>
 /// <param name="session"></param>
 /// <param name="cmdInfo"></param>
 /// <param name="ex"></param>
 protected virtual void OnCommandExecException(UdpSession session, TCommandInfo cmdInfo, Exception ex)
 {
 }
 /// <summary>
 /// handle unknow command.
 /// </summary>
 /// <param name="session"></param>
 /// <param name="commandInfo"></param>
 protected virtual void HandleUnKnowCommand(UdpSession session, TCommandInfo commandInfo)
 {
 }