Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.ServiceModel.Discovery / System / ServiceModel / Discovery / ResolveRequestResponseAsyncResult.cs / 1305376 / ResolveRequestResponseAsyncResult.cs
//---------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //--------------------------------------------------------------- namespace System.ServiceModel.Discovery { using System.Diagnostics.CodeAnalysis; using System.Runtime; abstract class ResolveRequestResponseAsyncResult: AsyncResult { readonly ResolveCriteria resolveCriteria; readonly IDiscoveryServiceImplementation discoveryServiceImpl; readonly DiscoveryOperationContext context; static AsyncCompletion onOnResolveCompletedCallback = new AsyncCompletion(OnOnResolveCompleted); EndpointDiscoveryMetadata matchingEndpoint; [SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")] protected ResolveRequestResponseAsyncResult( TResolveMessage resolveMessage, IDiscoveryServiceImplementation discoveryServiceImpl, AsyncCallback callback, object state) : base(callback, state) { Fx.Assert(resolveMessage != null, "The resolveMessage must be non null."); Fx.Assert(discoveryServiceImpl != null, "The discoveryServiceImpl must be non null."); this.discoveryServiceImpl = discoveryServiceImpl; if (!this.Validate(resolveMessage)) { this.Complete(true); return; } else { this.context = new DiscoveryOperationContext(OperationContext.Current); this.resolveCriteria = this.GetResolveCriteria(resolveMessage); if (this.ProcessResolveRequest()) { this.Complete(true); return; } } } protected virtual bool Validate(TResolveMessage resolveMessage) { return (DiscoveryService.EnsureMessageId() && this.ValidateContent(resolveMessage) && this.EnsureNotDuplicate()); } protected abstract bool ValidateContent(TResolveMessage resolveMessage); protected abstract ResolveCriteria GetResolveCriteria(TResolveMessage resolveMessage); protected abstract TResponseMessage GetResolveResponse( DiscoveryMessageSequence discoveryMessageSequence, EndpointDiscoveryMetadata matchingEndpoints); protected TResponseMessage End() { this.context.AddressRequestResponseMessage(OperationContext.Current); return this.GetResolveResponse( this.discoveryServiceImpl.GetNextMessageSequence(), this.matchingEndpoint); } static bool OnOnResolveCompleted(IAsyncResult result) { ResolveRequestResponseAsyncResult thisPtr = (ResolveRequestResponseAsyncResult )result.AsyncState; thisPtr.matchingEndpoint = thisPtr.discoveryServiceImpl.EndResolve(result); return true; } bool ProcessResolveRequest() { IAsyncResult result = this.discoveryServiceImpl.BeginResolve( this.resolveCriteria, this.PrepareAsyncCompletion(onOnResolveCompletedCallback), this); return (result.CompletedSynchronously && OnOnResolveCompleted(result)); } bool EnsureNotDuplicate() { bool isDuplicate = this.discoveryServiceImpl.IsDuplicate(OperationContext.Current.IncomingMessageHeaders.MessageId); if (isDuplicate && TD.DuplicateDiscoveryMessageIsEnabled()) { TD.DuplicateDiscoveryMessage( ProtocolStrings.TracingStrings.Resolve, OperationContext.Current.IncomingMessageHeaders.MessageId.ToString()); } return !isDuplicate; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- TypeToArgumentTypeConverter.cs
- HtmlInputCheckBox.cs
- WindowsContainer.cs
- CodeFieldReferenceExpression.cs
- MetadataUtilsSmi.cs
- SQLDoubleStorage.cs
- WebPartZoneCollection.cs
- X509CertificateValidator.cs
- QilDataSource.cs
- StrokeCollection2.cs
- CellTreeNode.cs
- ActivityStatusChangeEventArgs.cs
- PerformanceCounterPermissionEntry.cs
- PointCollection.cs
- ListParagraph.cs
- LiteralLink.cs
- FaultCode.cs
- ResolveInfo.cs
- PerformanceCounterLib.cs
- DeclaredTypeElement.cs
- SourceItem.cs
- InputProviderSite.cs
- BuildProvider.cs
- PTProvider.cs
- ImageAnimator.cs
- HtmlTextViewAdapter.cs
- BitmapImage.cs
- HTTPNotFoundHandler.cs
- Encoder.cs
- StorageMappingItemLoader.cs
- HyperLink.cs
- CodeTypeReference.cs
- GradientBrush.cs
- WebPartsSection.cs
- CssClassPropertyAttribute.cs
- WizardStepBase.cs
- EventHandlerService.cs
- FormViewCommandEventArgs.cs
- ServiceDescriptionImporter.cs
- WithStatement.cs
- WeakReadOnlyCollection.cs
- GridViewDeletedEventArgs.cs
- MissingMethodException.cs
- TranslateTransform.cs
- ExternalDataExchangeService.cs
- UserPreferenceChangingEventArgs.cs
- ForeignKeyConstraint.cs
- InheritablePropertyChangeInfo.cs
- EntityCodeGenerator.cs
- AttributeExtensions.cs
- JsonFormatGeneratorStatics.cs
- ProfilePropertySettingsCollection.cs
- EntityClassGenerator.cs
- RtfNavigator.cs
- BaseUriHelper.cs
- BindValidator.cs
- Cursors.cs
- AsymmetricAlgorithm.cs
- UnsafeNativeMethods.cs
- ContextMenuAutomationPeer.cs
- TransformGroup.cs
- SpellerInterop.cs
- RegexCharClass.cs
- SectionRecord.cs
- SafeHandle.cs
- SessionSwitchEventArgs.cs
- PropertyGridEditorPart.cs
- RequestedSignatureDialog.cs
- ListViewCommandEventArgs.cs
- XmlSortKeyAccumulator.cs
- CredentialManagerDialog.cs
- Label.cs
- ToolStripRendererSwitcher.cs
- SqlConnection.cs
- ZipIOExtraFieldZip64Element.cs
- WebProxyScriptElement.cs
- Visual3D.cs
- NetCodeGroup.cs
- ParseChildrenAsPropertiesAttribute.cs
- COM2PropertyBuilderUITypeEditor.cs
- StandardOleMarshalObject.cs
- PropertyValidationContext.cs
- ZoomingMessageFilter.cs
- ChtmlPhoneCallAdapter.cs
- ModifyActivitiesPropertyDescriptor.cs
- XXXInfos.cs
- RC2.cs
- NamedPermissionSet.cs
- SByteConverter.cs
- MimeTypeAttribute.cs
- OneOf.cs
- TableLayoutColumnStyleCollection.cs
- ManipulationStartingEventArgs.cs
- IdentitySection.cs
- HandledEventArgs.cs
- MissingFieldException.cs
- BaseTemplateCodeDomTreeGenerator.cs
- XmlQueryOutput.cs
- LoginNameDesigner.cs
- CompositionTarget.cs