Esempio n. 1
0
        /// <summary>
        /// Generate response action filter
        /// </summary>
        /// <param name="action">indicating the action string</param>
        /// <returns>response action filter</returns>
        protected static ResponseActionFilter GenerateResponseActionFilter(string action)
        {
            ResponseActionFilter filter = null;

            if (!String.IsNullOrEmpty(action))
            {
                filter = new ResponseActionFilter(action);
            }

            return(filter);
        }
Esempio n. 2
0
        /// <summary>
        /// Get more responses
        /// </summary>
        /// <param name="position">indicating the position</param>
        /// <param name="count">indicating the count</param>
        /// <param name="callbackInstance">indicating the callback instance</param>
        public void GetResponses(GetResponsePosition position, int count, IResponseServiceCallback callbackInstance)
        {
            if (position == GetResponsePosition.Begin)
            {
                this.ResponsesCount = 0;
                if (this.IsSessionFailed())
                {
                    IResponseServiceCallback callback = callbackInstance;
                    this.ReplyFaultMessage(callback, FrontEndFaultMessage.GenerateFaultMessage(null, this.Version, SOAFaultCode.Broker_SessionFailure, SR.SessionFailure), this.clientData);
                    this.ReplyEndOfMessage(callback, this.clientData);
                    return;
                }

                if (this.cacheBrokerQueueItem)
                {
                    // ACK the items as they were failed to send back to client
                    lock (this.lockCacheItemList)
                    {
                        this.Queue.AckResponses(this.cachedItemList, false);
                        this.cachedItemList = new List <BrokerQueueItem>();
                    }
                }

                this.Queue.ResetResponsesCallback();
            }
            else
            {
                if (this.cacheBrokerQueueItem)
                {
                    // ACK the items as they were succeeded to send back to client
                    lock (this.lockCacheItemList)
                    {
                        this.Queue.AckResponses(this.cachedItemList, true);
                        this.cachedItemList = new List <BrokerQueueItem>();
                    }
                }
            }

            ResponseActionFilter filter = GenerateResponseActionFilter(this.Action);

            this.lastResponseServiceCallback = callbackInstance;
            if (!this.Queue.RegisterResponsesCallback(this.ReceiveResponse, this.Version, filter, count, new object[] { this.lastResponseServiceCallback, this.clientData }))
            {
                this.ReplyEndOfMessage(this.lastResponseServiceCallback, this.clientData);
            }
        }
Esempio n. 3
0
 public override bool RegisterResponsesCallback(BrokerQueueCallback responseCallback, MessageVersion messageVersion, ResponseActionFilter filter, int responseCount, object state)
 {
     throw new NotImplementedException();
 }