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
- MetadataPropertyvalue.cs
- CounterCreationDataCollection.cs
- XmlDocumentType.cs
- DeflateStream.cs
- PnrpPermission.cs
- ContainsRowNumberChecker.cs
- SqlParameterizer.cs
- ImageCollectionEditor.cs
- UpdateException.cs
- figurelengthconverter.cs
- SessionPageStateSection.cs
- ByteViewer.cs
- AssociationSetMetadata.cs
- CryptoStream.cs
- BindingContext.cs
- FixedSOMTable.cs
- CanExecuteRoutedEventArgs.cs
- RemoteWebConfigurationHostStream.cs
- ServiceOperationParameter.cs
- EntityDataSourceEntityTypeFilterConverter.cs
- MessageQueueCriteria.cs
- StateMachineWorkflowInstance.cs
- SspiNegotiationTokenProviderState.cs
- Lease.cs
- StyleSheetRefUrlEditor.cs
- ColorAnimationUsingKeyFrames.cs
- ContentFilePart.cs
- MultiSelector.cs
- NativeRightsManagementAPIsStructures.cs
- RelationshipEndCollection.cs
- SecurityException.cs
- ICspAsymmetricAlgorithm.cs
- DataRecordInfo.cs
- SystemInfo.cs
- InputBinder.cs
- RectangleHotSpot.cs
- OleDbFactory.cs
- PrimaryKeyTypeConverter.cs
- GcHandle.cs
- ToolTipAutomationPeer.cs
- sqlinternaltransaction.cs
- SQLBytesStorage.cs
- KnownTypeHelper.cs
- RunInstallerAttribute.cs
- ScrollPattern.cs
- WebConvert.cs
- Nodes.cs
- ToolboxComponentsCreatedEventArgs.cs
- XsdDateTime.cs
- Debugger.cs
- ModuleBuilderData.cs
- ToolboxComponentsCreatedEventArgs.cs
- DocumentViewerHelper.cs
- HwndTarget.cs
- TableParaClient.cs
- Span.cs
- SpecialNameAttribute.cs
- HyperLinkField.cs
- WinEventHandler.cs
- WorkflowMarkupSerializationException.cs
- OverrideMode.cs
- ProtocolsConfigurationEntry.cs
- DbParameterCollectionHelper.cs
- SQLDecimalStorage.cs
- SafeBitVector32.cs
- PrintDocument.cs
- PrimitiveType.cs
- TemplatingOptionsDialog.cs
- SinglePhaseEnlistment.cs
- CustomAttributeFormatException.cs
- HtmlTextViewAdapter.cs
- CustomAttributeFormatException.cs
- ColorConverter.cs
- RequestSecurityToken.cs
- safex509handles.cs
- OdbcEnvironmentHandle.cs
- ServiceActivationException.cs
- ConsoleTraceListener.cs
- LogSwitch.cs
- OdbcEnvironment.cs
- DbProviderFactories.cs
- ServicePointManager.cs
- SizeChangedInfo.cs
- Operators.cs
- HttpProfileGroupBase.cs
- Scripts.cs
- ConfigurationValidatorBase.cs
- TypeSystem.cs
- ProfileParameter.cs
- ProfileSection.cs
- UserPreferenceChangedEventArgs.cs
- View.cs
- Exceptions.cs
- FontStyles.cs
- DatasetMethodGenerator.cs
- HandleCollector.cs
- CodeBlockBuilder.cs
- _NativeSSPI.cs
- ModifiableIteratorCollection.cs
- NameSpaceExtractor.cs