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
- DesignerLinkAdapter.cs
- ExportOptions.cs
- SpellerError.cs
- CodeMemberField.cs
- MulticastNotSupportedException.cs
- ellipse.cs
- SqlProviderManifest.cs
- GenericTypeParameterConverter.cs
- SimpleLine.cs
- InvalidFilterCriteriaException.cs
- ImageMetadata.cs
- FacetDescription.cs
- DeviceContext.cs
- SendMailErrorEventArgs.cs
- AssemblyCollection.cs
- PartDesigner.cs
- PasswordRecovery.cs
- DBDataPermission.cs
- ParallelRangeManager.cs
- SqlProviderServices.cs
- Image.cs
- SelectionPattern.cs
- VerificationException.cs
- SafeNativeMethods.cs
- SortQuery.cs
- InputProcessorProfilesLoader.cs
- DesignTimeData.cs
- PtsHost.cs
- SafeThreadHandle.cs
- CacheDependency.cs
- DynamicPropertyHolder.cs
- ObfuscateAssemblyAttribute.cs
- Pts.cs
- EntityDataSourceChangedEventArgs.cs
- ViewManager.cs
- SystemResources.cs
- ErrorFormatterPage.cs
- QueryAccessibilityHelpEvent.cs
- CodeDelegateInvokeExpression.cs
- InvalidFilterCriteriaException.cs
- safelinkcollection.cs
- DispatchProxy.cs
- BinaryObjectInfo.cs
- KeyFrames.cs
- FocusManager.cs
- HttpListenerRequest.cs
- HyperLinkField.cs
- RetrieveVirtualItemEventArgs.cs
- StrokeIntersection.cs
- NamespaceList.cs
- Array.cs
- WmfPlaceableFileHeader.cs
- XmlSignatureManifest.cs
- AlphabeticalEnumConverter.cs
- QuaternionValueSerializer.cs
- SoapSchemaImporter.cs
- NetStream.cs
- SmtpClient.cs
- TimeSpanValidator.cs
- ComponentCommands.cs
- _LazyAsyncResult.cs
- securitymgrsite.cs
- DetailsViewUpdateEventArgs.cs
- VirtualizedItemPattern.cs
- WebPartConnection.cs
- ListManagerBindingsCollection.cs
- TextElementCollection.cs
- storagemappingitemcollection.viewdictionary.cs
- SelectionRangeConverter.cs
- HttpServerVarsCollection.cs
- InertiaTranslationBehavior.cs
- VariantWrapper.cs
- EventDescriptor.cs
- ToolBarButton.cs
- KerberosTicketHashIdentifierClause.cs
- DetailsViewInsertEventArgs.cs
- ProtocolImporter.cs
- InputQueue.cs
- AttributeInfo.cs
- ProfileEventArgs.cs
- RemotingSurrogateSelector.cs
- XmlSerializerFactory.cs
- PersistChildrenAttribute.cs
- InvalidOperationException.cs
- _SslState.cs
- DataSourceExpressionCollection.cs
- ObjectDesignerDataSourceView.cs
- MimeFormImporter.cs
- XmlTextEncoder.cs
- ModuleBuilderData.cs
- AssemblyResourceLoader.cs
- WebPartZoneCollection.cs
- FreeFormDragDropManager.cs
- GridItemCollection.cs
- MdiWindowListItemConverter.cs
- XmlElementAttribute.cs
- ThemeDictionaryExtension.cs
- PenCursorManager.cs
- DashStyle.cs
- SubMenuStyle.cs