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
- InfoCardRSAPKCS1SignatureFormatter.cs
- Helper.cs
- TemplateInstanceAttribute.cs
- InvalidWMPVersionException.cs
- ObjectDataSourceEventArgs.cs
- _IPv6Address.cs
- _FixedSizeReader.cs
- TextMetrics.cs
- WebConvert.cs
- InvalidWMPVersionException.cs
- Opcode.cs
- WebBaseEventKeyComparer.cs
- EventHandlerList.cs
- XmlSchemaInfo.cs
- ContextMenu.cs
- CompilerScopeManager.cs
- precedingsibling.cs
- RtfToXamlReader.cs
- HttpApplication.cs
- FontStyles.cs
- EventTrigger.cs
- TraceLog.cs
- ValidatorCompatibilityHelper.cs
- StatusBar.cs
- _Rfc2616CacheValidators.cs
- ScopedKnownTypes.cs
- TraceContext.cs
- XmlSchema.cs
- SmtpException.cs
- ValidateNames.cs
- AutomationEvent.cs
- InvokeProviderWrapper.cs
- UnsafeNativeMethodsCLR.cs
- util.cs
- EventMap.cs
- SendMailErrorEventArgs.cs
- UnsafeNativeMethods.cs
- WpfXamlMember.cs
- ImageList.cs
- IndexOutOfRangeException.cs
- WebBrowserContainer.cs
- RootBuilder.cs
- CombinedGeometry.cs
- WebResponse.cs
- TreeNodeCollection.cs
- SystemInfo.cs
- SafeHandle.cs
- QilUnary.cs
- RepeatInfo.cs
- DataGridViewTextBoxCell.cs
- DataGridViewRowContextMenuStripNeededEventArgs.cs
- TogglePattern.cs
- StreamGeometryContext.cs
- Style.cs
- Int16Animation.cs
- DataGridViewRowStateChangedEventArgs.cs
- GenerateHelper.cs
- JumpTask.cs
- Wizard.cs
- GacUtil.cs
- OrderByExpression.cs
- HtmlInputControl.cs
- FlagsAttribute.cs
- DebugView.cs
- XmlSchemaComplexContentExtension.cs
- MeasurementDCInfo.cs
- EdmToObjectNamespaceMap.cs
- XmlIlGenerator.cs
- WebServiceData.cs
- NumericUpDown.cs
- AccessibleObject.cs
- AQNBuilder.cs
- XmlSchemaSearchPattern.cs
- MenuCommands.cs
- XmlHierarchicalEnumerable.cs
- NativeMethods.cs
- DirectoryInfo.cs
- LinqTreeNodeEvaluator.cs
- QueueException.cs
- ListMarkerLine.cs
- XslNumber.cs
- ChangePassword.cs
- BuildProviderAppliesToAttribute.cs
- StdValidatorsAndConverters.cs
- XPathAncestorIterator.cs
- _LocalDataStore.cs
- ADConnectionHelper.cs
- PartialToken.cs
- XmlSchemaValidator.cs
- SecurityTokenTypes.cs
- TextInfo.cs
- FixUp.cs
- ReturnType.cs
- DataKeyArray.cs
- HttpInputStream.cs
- rsa.cs
- MissingManifestResourceException.cs
- InputReferenceExpression.cs
- LogicalExpr.cs
- ProcessModelInfo.cs