/// <summary>
        /// Processes the request data.
        /// </summary>
        /// <param name="readBuffer">The read buffer.</param>
        /// <param name="offset">The offset.</param>
        /// <param name="length">The length.</param>
        /// <param name="toBeCopied">if set to <c>true</c> [to be copied].</param>
        /// <returns>
        /// return offset delta of next receiving buffer
        /// </returns>
        int IAppSession.ProcessRequest(byte[] readBuffer, int offset, int length, bool toBeCopied)
        {
            int rest, offsetDelta;

            while (true)
            {
                var requestInfo = FilterRequest(readBuffer, offset, length, toBeCopied, out rest, out offsetDelta);

                if (requestInfo != null)
                {
                    try
                    {
                        AppServer.ExecuteCommand(this, requestInfo);
                    }
                    catch (Exception e)
                    {
                        HandleException(e);
                    }
                }

                if (rest <= 0)
                {
                    return(offsetDelta);
                }

                //Still have data has not been processed
                offset = offset + length - rest;
                length = rest;
            }
        }
Exemple #2
0
        /// <summary>
        /// Processes the request data.
        /// </summary>
        /// <param name="readBuffer">The read buffer.</param>
        /// <param name="offset">The offset.</param>
        /// <param name="length">The length.</param>
        /// <param name="toBeCopied">if set to <c>true</c> [to be copied].</param>
        /// <returns>
        /// return offset delta of next receiving buffer
        /// </returns>
        int IAppSession.ProcessRequest(byte[] readBuffer, int offset, int length, bool toBeCopied)
        {
            int left, offsetDelta;

            while (true)
            {
                var requestInfo = FilterRequest(readBuffer, offset, length, toBeCopied, out left, out offsetDelta);

                if (requestInfo == null)
                {
                    return(offsetDelta);
                }

                AppServer.ExecuteCommand(this, requestInfo);

                if (left <= 0)
                {
                    return(offsetDelta);
                }

                offset = offset + length - left;
                length = left;

                continue;
            }
        }
Exemple #3
0
 void IPackageHandler <TRequestInfo> .Handle(TRequestInfo package)
 {
     try
     {
         AppServer.ExecuteCommand(this, package);
     }
     catch (Exception e)
     {
         HandleException(e);
     }
 }
Exemple #4
0
 /// <summary>
 /// Executes the command.
 /// </summary>
 /// <param name="session">The session.</param>
 /// <param name="cmdInfo">The CMD info.</param>
 public void ExecuteCommand(TAppSession session, TCommandInfo cmdInfo)
 {
     AppServer.ExecuteCommand(session, cmdInfo);
 }