public override void EndProxyWebRequest(ProxyWebRequest proxyWebRequest, QueryList queryList, IService service, IAsyncResult asyncResult) { TraceWrapper.SearchLibraryTracer.TraceDebug(this.traceId, "Entering FindMessageTrackingApplication.EndProxyWebRequest", new object[0]); FindMessageTrackingReportResponseMessageType findMessageTrackingReportResponseMessageType = service.EndFindMessageTrackingReport(asyncResult); if (findMessageTrackingReportResponseMessageType == null) { base.HandleNullResponse(proxyWebRequest); return; } if (findMessageTrackingReportResponseMessageType.ResponseClass != ResponseClassType.Success) { TraceWrapper.SearchLibraryTracer.TraceError <object, string, string>(this.traceId, "{0}: FindMTR proxy web request returned {1} and response code {2}", TraceContext.Get(), Names <ResponseClassType> .Map[(int)findMessageTrackingReportResponseMessageType.ResponseClass], findMessageTrackingReportResponseMessageType.ResponseCode); } this.ProcessResponseMessages(this.traceId, queryList, findMessageTrackingReportResponseMessageType); }
private void ProcessResponseMessages(int traceId, QueryList queryList, FindMessageTrackingReportResponseMessageType response) { if (response == null) { Application.ProxyWebRequestTracer.TraceError((long)traceId, "{0}: Proxy web request returned NULL FindMessageTrackingReportResponseMessageType", new object[] { TraceContext.Get() }); return; } foreach (BaseQuery baseQuery in ((IEnumerable <BaseQuery>)queryList)) { FindMessageTrackingBaseQuery findMessageTrackingBaseQuery = (FindMessageTrackingBaseQuery)baseQuery; findMessageTrackingBaseQuery.SetResultOnFirstCall(new FindMessageTrackingBaseQueryResult { Response = response }); } }
public FindMessageTrackingReportResponseMessageType FindMessageTrackingReport(string domain, SmtpAddress?senderAddress, SmtpAddress?recipientAddress, string serverHint, SmtpAddress?federatedDeliveryMailbox, SearchScope scope, string messageId, string subject, bool expandTree, bool searchAsRecip, bool searchForModerationResult, DateTime start, DateTime end, TrackingEventBudget eventBudget) { FindMessageTrackingReportRequestType findMessageTrackingReportRequestType = new FindMessageTrackingReportRequestType(); findMessageTrackingReportRequestType.StartDateTime = start; findMessageTrackingReportRequestType.StartDateTimeSpecified = true; findMessageTrackingReportRequestType.EndDateTime = end; findMessageTrackingReportRequestType.EndDateTimeSpecified = true; findMessageTrackingReportRequestType.MessageId = messageId; findMessageTrackingReportRequestType.Subject = subject; findMessageTrackingReportRequestType.Domain = domain; findMessageTrackingReportRequestType.Scope = WebServiceBinding.GetWebServiceScope(scope); findMessageTrackingReportRequestType.ServerHint = serverHint; TimeSpan clientTimeout; TimeSpan value; this.directoryContext.TrackingBudget.GetTimeBudgetRemainingForWSCall(this.trackingAuthority.TrackingAuthorityKind, out clientTimeout, out value); TrackingExtendedProperties trackingExtendedProperties = new TrackingExtendedProperties(expandTree, searchAsRecip, new TimeSpan?(value), false, searchForModerationResult); findMessageTrackingReportRequestType.Properties = trackingExtendedProperties.ToTrackingPropertyArray(); if (this.diagnosticsContext.Enabled) { findMessageTrackingReportRequestType.DiagnosticsLevel = Names <DiagnosticsLevel> .Map[(int)this.diagnosticsContext.DiagnosticsLevel]; } if (federatedDeliveryMailbox != null) { findMessageTrackingReportRequestType.FederatedDeliveryMailbox = new EmailAddressType(); findMessageTrackingReportRequestType.FederatedDeliveryMailbox.EmailAddress = federatedDeliveryMailbox.Value.ToString(); } if (senderAddress != null) { findMessageTrackingReportRequestType.Sender = new EmailAddressType(); findMessageTrackingReportRequestType.Sender.EmailAddress = senderAddress.Value.ToString(); } if (recipientAddress != null) { findMessageTrackingReportRequestType.Recipient = new EmailAddressType(); findMessageTrackingReportRequestType.Recipient.EmailAddress = recipientAddress.Value.ToString(); } Exception ex = null; this.WriteStartEvent(true, messageId, serverHint); FindMessageTrackingReportResponseMessageType findMessageTrackingReportResponseMessageType = this.TryCallWebServiceMethod <FindMessageTrackingReportResponseMessageType, FindMessageTrackingReportRequestType>(delegate(FindMessageTrackingReportRequestType req) { if (clientTimeout == TimeSpan.Zero) { throw new TimeoutExpiredException("Not enough time remaining"); } return(this.clientProxy.FindMessageTrackingReport(new FindMessageTrackingReportRequestTypeWrapper(req), clientTimeout)); }, findMessageTrackingReportRequestType, out ex); int count = 0; if (findMessageTrackingReportResponseMessageType != null) { if (findMessageTrackingReportResponseMessageType.ResponseClass != ResponseClassType.Success) { TrackingError trackingErrorFromWebResponseError = this.GetTrackingErrorFromWebResponseError(findMessageTrackingReportResponseMessageType.ResponseCode, this.trackingAuthority.Domain, findMessageTrackingReportResponseMessageType.MessageText); this.errors.Errors.Add(trackingErrorFromWebResponseError); } this.errors.ReadErrorsFromWSMessage(findMessageTrackingReportResponseMessageType.Diagnostics, findMessageTrackingReportResponseMessageType.Errors); this.diagnosticsContext.MergeEvents(findMessageTrackingReportResponseMessageType.Diagnostics); if (findMessageTrackingReportResponseMessageType.MessageTrackingSearchResults != null) { count = findMessageTrackingReportResponseMessageType.MessageTrackingSearchResults.Length; eventBudget.IncrementBy(10U); if (this.diagnosticsContext.VerboseDiagnostics) { foreach (FindMessageTrackingSearchResultType findMessageTrackingSearchResultType in findMessageTrackingReportResponseMessageType.MessageTrackingSearchResults) { this.diagnosticsContext.AddProperty(DiagnosticProperty.Data1, findMessageTrackingSearchResultType.MessageTrackingReportId); this.diagnosticsContext.WriteEvent(); } } } } this.WriteEndEvent(ex, count); if (ex != null) { throw ex; } return(findMessageTrackingReportResponseMessageType); }