Ejemplo n.º 1
0
        /// <summary>
        /// 执行Api行为
        /// </summary>
        /// <param name="actionContext">上下文</param>
        /// <exception cref="SerializerException"></exception>
        private void ExecuteAction(ActionContext actionContext)
        {
            var parameters  = FastTcpCommon.GetApiActionParameters(this.Serializer, actionContext);
            var returnValue = actionContext.Action.Execute(this, parameters);

            if (actionContext.Action.IsVoidReturn == false && this.IsConnected)
            {
                var returnByes = this.Serializer.Serialize(returnValue);
                actionContext.Packet.Body = returnByes;
                this.Send(actionContext.Packet.ToByteRange());
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 调用自身实现的Api行为
        /// 将返回值发送给客户端
        /// </summary>
        /// <param name="actionContext">上下文</param>
        /// <param name="filters">过滤器</param>
        private void ExecuteAction(ActionContext actionContext, IEnumerable <IFilter> filters)
        {
            // 执行Filter
            this.ExecFiltersBeforeAction(filters, actionContext);

            var parameters  = FastTcpCommon.GetApiActionParameters(actionContext.Session.Serializer, actionContext);
            var returnValue = actionContext.Action.Execute(this, parameters);

            // 执行Filter
            this.ExecFiltersAfterAction(filters, actionContext);

            // 返回数据
            if (actionContext.Action.IsVoidReturn == false && actionContext.Session.IsConnected)
            {
                var returnBytes = actionContext.Session.Serializer.Serialize(returnValue);
                actionContext.Packet.Body = returnBytes;
                var session = actionContext.Session;
                session.Send(actionContext.Packet.ToByteRange());
            }
        }