Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.ServiceModel.Discovery / System / ServiceModel / Discovery / HelloOperationAsyncResult.cs / 1305376 / HelloOperationAsyncResult.cs
//---------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //--------------------------------------------------------------- namespace System.ServiceModel.Discovery { using System.Diagnostics.CodeAnalysis; using System.Runtime; using System.Xml; abstract class HelloOperationAsyncResult: AsyncResult where TMessage : class { static AsyncCompletion onOnOnlineAnnoucementCompletedCallback = new AsyncCompletion(OnOnOnlineAnnouncementCompleted); IAnnouncementServiceImplementation announcementServiceImpl; [SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")] internal HelloOperationAsyncResult( IAnnouncementServiceImplementation announcementServiceImpl, TMessage message, AsyncCallback callback, object state) : base(callback, state) { this.announcementServiceImpl = announcementServiceImpl; if (this.IsInvalid(message)) { this.Complete(true); return; } IAsyncResult innerAsyncResult = this.announcementServiceImpl.OnBeginOnlineAnnouncement( this.GetMessageSequence(message), this.GetEndpointDiscoveryMetadata(message), this.PrepareAsyncCompletion(onOnOnlineAnnoucementCompletedCallback), this); if (innerAsyncResult.CompletedSynchronously && OnOnOnlineAnnouncementCompleted(innerAsyncResult)) { this.Complete(true); return; } } protected abstract bool ValidateContent(TMessage message); protected abstract DiscoveryMessageSequence GetMessageSequence(TMessage message); protected abstract EndpointDiscoveryMetadata GetEndpointDiscoveryMetadata(TMessage message); static bool OnOnOnlineAnnouncementCompleted(IAsyncResult result) { HelloOperationAsyncResult thisPtr = (HelloOperationAsyncResult )result.AsyncState; thisPtr.announcementServiceImpl.OnEndOnlineAnnouncement(result); return true; } bool IsInvalid(TMessage message) { UniqueId messageId = OperationContext.Current.IncomingMessageHeaders.MessageId; if (messageId == null) { if (TD.DiscoveryMessageWithNullMessageIdIsEnabled()) { TD.DiscoveryMessageWithNullMessageId(ProtocolStrings.TracingStrings.Hello); } return true; } else if (this.announcementServiceImpl.IsDuplicate(messageId)) { if (TD.DuplicateDiscoveryMessageIsEnabled()) { TD.DuplicateDiscoveryMessage(ProtocolStrings.TracingStrings.Hello, messageId.ToString()); } return true; } else if (this.ValidateContent(message)) { return false; } else { if (TD.DiscoveryMessageWithInvalidContentIsEnabled()) { TD.DiscoveryMessageWithInvalidContent(ProtocolStrings.TracingStrings.Hello, messageId.ToString()); } return true; } } } } // 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
- ExecutionScope.cs
- SoapSchemaExporter.cs
- BindingExpression.cs
- CharacterHit.cs
- OleDbCommand.cs
- ClientRequest.cs
- ResourceReferenceExpression.cs
- BaseTemplatedMobileComponentEditor.cs
- HostVisual.cs
- CommunicationObjectManager.cs
- RelationshipEnd.cs
- StringInfo.cs
- safex509handles.cs
- MatrixTransform.cs
- FieldTemplateFactory.cs
- DynamicRendererThreadManager.cs
- PackWebResponse.cs
- ExtendedPropertyCollection.cs
- SplitContainer.cs
- DbProviderConfigurationHandler.cs
- PartialClassGenerationTask.cs
- ListViewContainer.cs
- InfiniteIntConverter.cs
- SiteMapProvider.cs
- cookiecontainer.cs
- GrammarBuilderDictation.cs
- CommandConverter.cs
- SimpleParser.cs
- ConnectionConsumerAttribute.cs
- SkewTransform.cs
- PlacementWorkspace.cs
- RadioButton.cs
- HtmlLinkAdapter.cs
- UniqueIdentifierService.cs
- CellParaClient.cs
- ExceptionHelpers.cs
- ExpressionTable.cs
- XmlDownloadManager.cs
- Timer.cs
- ProtocolsConfigurationHandler.cs
- NameValueSectionHandler.cs
- BinaryWriter.cs
- XmlAttributeCache.cs
- TcpHostedTransportConfiguration.cs
- PageAsyncTaskManager.cs
- ToolStripRenderer.cs
- SQLByte.cs
- AuthenticationException.cs
- VisualStyleRenderer.cs
- UnsafeNativeMethods.cs
- AsymmetricSignatureFormatter.cs
- OperationResponse.cs
- UrlMappingsModule.cs
- Number.cs
- XmlQueryOutput.cs
- SupportsEventValidationAttribute.cs
- OperationFormatUse.cs
- DispatcherOperation.cs
- SignatureHelper.cs
- OleDbRowUpdatedEvent.cs
- CustomWebEventKey.cs
- ChannelManagerService.cs
- CodeBinaryOperatorExpression.cs
- Publisher.cs
- VisualCollection.cs
- Properties.cs
- CodeEntryPointMethod.cs
- HitTestWithPointDrawingContextWalker.cs
- BindingValueChangedEventArgs.cs
- StdRegProviderWrapper.cs
- RNGCryptoServiceProvider.cs
- LogReserveAndAppendState.cs
- AttributeUsageAttribute.cs
- SoapHttpTransportImporter.cs
- DefaultHttpHandler.cs
- OptimizerPatterns.cs
- Typeface.cs
- Pen.cs
- CodeSnippetCompileUnit.cs
- UnsafeNetInfoNativeMethods.cs
- SamlSerializer.cs
- SchemaMerger.cs
- SoapAttributeOverrides.cs
- AccessText.cs
- StrictAndMessageFilter.cs
- TextTreeFixupNode.cs
- ResourceBinder.cs
- ParameterInfo.cs
- ThumbAutomationPeer.cs
- FrameworkContextData.cs
- MiniModule.cs
- SqlDuplicator.cs
- TextBlock.cs
- OptimalTextSource.cs
- NavigationHelper.cs
- EventArgs.cs
- WmlMobileTextWriter.cs
- Lasso.cs
- WinFormsSpinner.cs
- CompiledXpathExpr.cs