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
- SoapCommonClasses.cs
- SoapHeaders.cs
- ArrayElementGridEntry.cs
- sqlstateclientmanager.cs
- Console.cs
- SafeMarshalContext.cs
- ExtensionFile.cs
- PackageRelationshipCollection.cs
- StringReader.cs
- Maps.cs
- UnconditionalPolicy.cs
- DatatypeImplementation.cs
- Light.cs
- PixelFormat.cs
- SynchronizedDisposablePool.cs
- TextSelection.cs
- RepeaterDesigner.cs
- DataBindingHandlerAttribute.cs
- ResourceDisplayNameAttribute.cs
- StreamWithDictionary.cs
- RoleManagerSection.cs
- OrderedDictionary.cs
- TimeSpan.cs
- PropertyMap.cs
- JsonDeserializer.cs
- ChangePassword.cs
- GorillaCodec.cs
- PageAsyncTaskManager.cs
- HtmlEmptyTagControlBuilder.cs
- CellLabel.cs
- SafeFreeMibTable.cs
- StorageMappingItemLoader.cs
- SqlDataRecord.cs
- XsdDataContractExporter.cs
- ReadWriteObjectLock.cs
- OdbcInfoMessageEvent.cs
- WebPartMenu.cs
- PtsHelper.cs
- SmtpAuthenticationManager.cs
- SharedDp.cs
- Exceptions.cs
- SqlCommandSet.cs
- _TimerThread.cs
- SeverityFilter.cs
- StorageSetMapping.cs
- ProcessHost.cs
- EmptyReadOnlyDictionaryInternal.cs
- SupportsPreviewControlAttribute.cs
- SqlNode.cs
- FtpRequestCacheValidator.cs
- ObjectStateFormatter.cs
- DeploymentSectionCache.cs
- MenuItem.cs
- KnownBoxes.cs
- SupportingTokenParameters.cs
- LayoutSettings.cs
- DoubleAnimationClockResource.cs
- BStrWrapper.cs
- XmlNamedNodeMap.cs
- FormatPage.cs
- DebugView.cs
- DateTimeFormat.cs
- DisableDpiAwarenessAttribute.cs
- TextEmbeddedObject.cs
- ObjectSpanRewriter.cs
- OracleRowUpdatedEventArgs.cs
- ColorConverter.cs
- TemplatePropertyEntry.cs
- WriteableOnDemandStream.cs
- RepeaterItem.cs
- HideDisabledControlAdapter.cs
- FaultDesigner.cs
- EventHandlersDesigner.cs
- GeometryDrawing.cs
- MaterialGroup.cs
- ComboBoxAutomationPeer.cs
- TextParagraphProperties.cs
- RegistrationServices.cs
- DigestTraceRecordHelper.cs
- DataTableMapping.cs
- XsltLibrary.cs
- WebPartVerb.cs
- SafeLocalMemHandle.cs
- UIHelper.cs
- SemaphoreFullException.cs
- DockingAttribute.cs
- CompilerGlobalScopeAttribute.cs
- SortAction.cs
- SecurityHeaderLayout.cs
- PointCollection.cs
- EventDescriptor.cs
- SuppressMessageAttribute.cs
- SqlProviderManifest.cs
- SqlUtils.cs
- DataColumn.cs
- CompensateDesigner.cs
- TextContainer.cs
- SoapTypeAttribute.cs
- XmlSchemaSimpleType.cs
- FileNotFoundException.cs