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
- TextOutput.cs
- PersonalizationStateQuery.cs
- ShaderRenderModeValidation.cs
- ButtonBaseAdapter.cs
- WebScriptEnablingBehavior.cs
- SqlAliasesReferenced.cs
- WebBrowser.cs
- CqlParser.cs
- TextDecorationUnitValidation.cs
- TransformGroup.cs
- DesignerHierarchicalDataSourceView.cs
- RSATokenProvider.cs
- SecurityHeader.cs
- CacheRequest.cs
- IncomingWebRequestContext.cs
- KeyPressEvent.cs
- BezierSegment.cs
- AnnotationAdorner.cs
- VirtualDirectoryMapping.cs
- HighlightComponent.cs
- HtmlInputControl.cs
- RegexGroupCollection.cs
- SubMenuStyle.cs
- TraceListeners.cs
- ApplicationDirectoryMembershipCondition.cs
- DeviceContexts.cs
- EtwTrace.cs
- MonthChangedEventArgs.cs
- ByteArrayHelperWithString.cs
- TableProvider.cs
- PropertiesTab.cs
- ExceptionValidationRule.cs
- Root.cs
- CompositeActivityValidator.cs
- CanonicalizationDriver.cs
- BamlReader.cs
- WinInetCache.cs
- IsolatedStorageFilePermission.cs
- EditorPartChrome.cs
- CodeDomSerializerException.cs
- DefaultWorkflowLoaderService.cs
- RoutedEventConverter.cs
- Roles.cs
- FileDialog_Vista.cs
- EditorPartCollection.cs
- XslVisitor.cs
- streamingZipPartStream.cs
- PostBackOptions.cs
- Task.cs
- SizeFConverter.cs
- DetailsViewRow.cs
- ChtmlCalendarAdapter.cs
- XmlSchemaAttributeGroupRef.cs
- DetailsViewPagerRow.cs
- ColumnTypeConverter.cs
- NonDualMessageSecurityOverHttpElement.cs
- Transaction.cs
- DocumentOrderQuery.cs
- HttpWriter.cs
- EtwTrackingBehavior.cs
- HtmlTernaryTree.cs
- RecipientServiceModelSecurityTokenRequirement.cs
- NominalTypeEliminator.cs
- GeneralTransform3DCollection.cs
- TypeSystemHelpers.cs
- ConditionalAttribute.cs
- HttpRuntime.cs
- XmlSchemaObject.cs
- wgx_commands.cs
- ReadOnlyMetadataCollection.cs
- ThumbButtonInfoCollection.cs
- XomlCompilerHelpers.cs
- QueryMatcher.cs
- ViewStateException.cs
- LinkConverter.cs
- CheckoutException.cs
- QueryResult.cs
- X509ChainElement.cs
- Collection.cs
- SspiNegotiationTokenProviderState.cs
- HttpResponseWrapper.cs
- ListItemCollection.cs
- ValueTypeIndexerReference.cs
- SecUtil.cs
- StrokeNodeOperations2.cs
- OperationContractGenerationContext.cs
- SiteIdentityPermission.cs
- DataSourceProvider.cs
- AsyncPostBackErrorEventArgs.cs
- ApplyTemplatesAction.cs
- ClickablePoint.cs
- ProfileInfo.cs
- InternalException.cs
- CodeBinaryOperatorExpression.cs
- DataServiceExpressionVisitor.cs
- LogicalChannelCollection.cs
- RectangleConverter.cs
- recordstatefactory.cs
- ContentControl.cs
- IxmlLineInfo.cs