Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.ServiceModel.Discovery / System / ServiceModel / Discovery / ByeOperationAsyncResult.cs / 1305376 / ByeOperationAsyncResult.cs
//----------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//---------------------------------------------------------------
namespace System.ServiceModel.Discovery
{
using System.Diagnostics.CodeAnalysis;
using System.Runtime;
using System.Xml;
abstract class ByeOperationAsyncResult : AsyncResult
where TMessage : class
{
static AsyncCompletion onOnOfflineAnnoucementCompletedCallback =
new AsyncCompletion(OnOnOfflineAnnouncementCompleted);
IAnnouncementServiceImplementation announcementServiceImpl;
[SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
internal ByeOperationAsyncResult(
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.OnBeginOfflineAnnouncement(
this.GetMessageSequence(message),
this.GetEndpointDiscoveryMetadata(message),
this.PrepareAsyncCompletion(onOnOfflineAnnoucementCompletedCallback),
this);
if (innerAsyncResult.CompletedSynchronously && OnOnOfflineAnnouncementCompleted(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 OnOnOfflineAnnouncementCompleted(IAsyncResult result)
{
ByeOperationAsyncResult thisPtr = (ByeOperationAsyncResult)result.AsyncState;
thisPtr.announcementServiceImpl.OnEndOfflineAnnouncement(result);
return true;
}
bool IsInvalid(TMessage message)
{
UniqueId messageId = OperationContext.Current.IncomingMessageHeaders.MessageId;
if (messageId == null)
{
if (TD.DiscoveryMessageWithNullMessageIdIsEnabled())
{
TD.DiscoveryMessageWithNullMessageId(ProtocolStrings.TracingStrings.Bye);
}
return true;
}
else if (this.announcementServiceImpl.IsDuplicate(messageId))
{
if (TD.DuplicateDiscoveryMessageIsEnabled())
{
TD.DuplicateDiscoveryMessage(ProtocolStrings.TracingStrings.Bye, messageId.ToString());
}
return true;
}
else if (this.ValidateContent(message))
{
return false;
}
else
{
if (TD.DiscoveryMessageWithInvalidContentIsEnabled())
{
TD.DiscoveryMessageWithInvalidContent(ProtocolStrings.TracingStrings.Bye, 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
- TemplateXamlParser.cs
- CounterCreationDataConverter.cs
- WebException.cs
- ReachSerializationCacheItems.cs
- StringDictionary.cs
- FileUtil.cs
- AssemblyBuilder.cs
- MetafileHeaderWmf.cs
- AsyncPostBackErrorEventArgs.cs
- WindowsToolbarAsMenu.cs
- XPathExpr.cs
- ResourceExpressionBuilder.cs
- RightsManagementInformation.cs
- IPEndPointCollection.cs
- LambdaCompiler.Generated.cs
- RoleManagerEventArgs.cs
- CreateUserWizard.cs
- HwndProxyElementProvider.cs
- ServiceProviders.cs
- CompositeActivityValidator.cs
- XsltCompileContext.cs
- DPTypeDescriptorContext.cs
- PostBackOptions.cs
- ParallelEnumerableWrapper.cs
- RenderDataDrawingContext.cs
- LambdaCompiler.Binary.cs
- AuthenticationModuleElement.cs
- TextViewBase.cs
- ReturnEventArgs.cs
- ModifierKeysValueSerializer.cs
- NavigatorInput.cs
- TextDecorationUnitValidation.cs
- Gdiplus.cs
- ClientRuntimeConfig.cs
- ResourceKey.cs
- ArgumentOutOfRangeException.cs
- BinarySecretSecurityToken.cs
- Thickness.cs
- Keywords.cs
- DocumentOrderComparer.cs
- Brush.cs
- CookieParameter.cs
- CommandEventArgs.cs
- BaseTemplateParser.cs
- ArrayHelper.cs
- PermissionListSet.cs
- FilterableAttribute.cs
- XmlAnyAttributeAttribute.cs
- RootProjectionNode.cs
- CssStyleCollection.cs
- GridViewAutoFormat.cs
- ExpressionHelper.cs
- Themes.cs
- Condition.cs
- GeneralTransform3DTo2DTo3D.cs
- PrinterResolution.cs
- RoleService.cs
- EntryIndex.cs
- TextOutput.cs
- Function.cs
- ShapeTypeface.cs
- MultipleViewPatternIdentifiers.cs
- ProxyFragment.cs
- TemplateParser.cs
- SecurityManager.cs
- TemplateApplicationHelper.cs
- _ListenerRequestStream.cs
- ApplicationCommands.cs
- ObjectManager.cs
- DataPagerFieldCommandEventArgs.cs
- DetailsViewPageEventArgs.cs
- CharConverter.cs
- StrongNameIdentityPermission.cs
- ActiveXHost.cs
- ColorContextHelper.cs
- ClientScriptManager.cs
- WebPartConnection.cs
- LineSegment.cs
- ActivityTypeResolver.xaml.cs
- SpotLight.cs
- PeerEndPoint.cs
- ExpressionEditorAttribute.cs
- FormsAuthenticationConfiguration.cs
- ProfileParameter.cs
- XhtmlBasicTextViewAdapter.cs
- SingleResultAttribute.cs
- ListSourceHelper.cs
- VirtualDirectoryMappingCollection.cs
- EdmPropertyAttribute.cs
- ApplicationTrust.cs
- SslStream.cs
- AttributeCollection.cs
- ExternalException.cs
- Overlapped.cs
- AttributedMetaModel.cs
- SqlOuterApplyReducer.cs
- SystemGatewayIPAddressInformation.cs
- IPPacketInformation.cs
- RadioButton.cs
- HttpPostServerProtocol.cs