/// <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); }
/// <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)); }