Esempio n. 1
0
        /// <summary>
        /// Handles the FindPartsResponse message from a store.
        /// </summary>
        /// <param name="header">The message header.</param>
        /// <param name="findPartsResponse">The FindPartsResponse message.</param>
        protected virtual void HandleFindPartsResponse(IMessageHeader header, FindPartsResponse findPartsResponse)
        {
            var uri  = GetRequestedUri(header);
            var args = Notify(OnFindPartsResponse, header, findPartsResponse, uri);

            HandleFindPartsResponse(args);
        }
        /// <summary>
        /// Sends a FindPartsResponse message to a customer.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <param name="parts">The list of <see cref="ObjectPart" /> objects.</param>
        /// <param name="sortOrder">The sort order.</param>
        /// <returns>The message identifier.</returns>
        public virtual long FindPartsResponse(IMessageHeader request, IList <ObjectPart> parts, string sortOrder)
        {
            if (!parts.Any())
            {
                return(Acknowledge(request.MessageId, MessageFlags.NoData));
            }

            long messageId = 0;

            for (var i = 0; i < parts.Count; i++)
            {
                var messageFlags = i < parts.Count - 1
                    ? MessageFlags.MultiPart
                    : MessageFlags.MultiPartAndFinalPart;

                var header = CreateMessageHeader(Protocols.GrowingObjectQuery, MessageTypes.GrowingObjectQuery.FindPartsResponse, request.MessageId, messageFlags);

                var response = new FindPartsResponse
                {
                    ObjectParts     = new[] { parts[i] },
                    ServerSortOrder = sortOrder ?? string.Empty
                };

                messageId = Session.SendMessage(header, response);
                sortOrder = string.Empty; // Only needs to be set in the first message
            }

            return(messageId);
        }
Esempio n. 3
0
        /// <summary>
        /// Sends a FindPartsResponse message to a customer.
        /// </summary>
        /// <param name="correlatedHeader">The message header that the messages to send are correlated with.</param>
        /// <param name="parts">The list of <see cref="ObjectPart"/> objects.</param>
        /// <param name="context">The response context.</param>
        /// <param name="isFinalPart">Whether or not this is the final part of a multi-part message.</param>
        /// <param name="extension">The message header extension.</param>
        /// <returns>The sent message on success; <c>null</c> otherwise.</returns>
        public virtual EtpMessage <FindPartsResponse> FindPartsResponse(IMessageHeader correlatedHeader, IList <ObjectPart> parts, ResponseContext context, bool isFinalPart = true, IMessageHeaderExtension extension = null)
        {
            var body = new FindPartsResponse
            {
                Uri             = context?.Uri ?? string.Empty,
                Format          = context?.Format ?? Formats.Xml,
                ServerSortOrder = context?.ServerSortOrder ?? string.Empty,
                Parts           = parts ?? new List <ObjectPart>(),
            };

            return(SendResponse(body, correlatedHeader, extension: extension, isMultiPart: true, isFinalPart: isFinalPart));
        }