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
- StylusButtonCollection.cs
- ExecutedRoutedEventArgs.cs
- SystemNetworkInterface.cs
- OleDbCommandBuilder.cs
- LocatorPartList.cs
- SignalGate.cs
- CryptoHelper.cs
- BigInt.cs
- MasterPageBuildProvider.cs
- XhtmlBasicPanelAdapter.cs
- ClientBuildManager.cs
- ViewCellRelation.cs
- DefaultClaimSet.cs
- DataGridColumnCollection.cs
- RowToFieldTransformer.cs
- FamilyMapCollection.cs
- Hash.cs
- TraceHandlerErrorFormatter.cs
- GlyphsSerializer.cs
- AssemblyInfo.cs
- DynamicContractTypeBuilder.cs
- HttpChannelBindingToken.cs
- XmlSchemaGroup.cs
- ServiceReference.cs
- DataViewManager.cs
- UnmanagedMemoryStreamWrapper.cs
- QilIterator.cs
- EventData.cs
- DataGridViewSelectedRowCollection.cs
- StaticResourceExtension.cs
- RightsManagementInformation.cs
- TextCompositionManager.cs
- DbSetClause.cs
- TdsParserSessionPool.cs
- AuthenticationModuleElementCollection.cs
- DiffuseMaterial.cs
- CharKeyFrameCollection.cs
- RangeContentEnumerator.cs
- XmlSchemaAttribute.cs
- FilterableAttribute.cs
- CannotUnloadAppDomainException.cs
- TemplateBaseAction.cs
- CompiledQueryCacheEntry.cs
- COSERVERINFO.cs
- CommonXSendMessage.cs
- HighContrastHelper.cs
- CharKeyFrameCollection.cs
- XamlBrushSerializer.cs
- FileFormatException.cs
- Merger.cs
- NetworkStream.cs
- ProcessInputEventArgs.cs
- ValidatingReaderNodeData.cs
- IsolatedStoragePermission.cs
- ColorAnimationUsingKeyFrames.cs
- CellConstant.cs
- StringValueSerializer.cs
- BooleanConverter.cs
- BrowserCapabilitiesCodeGenerator.cs
- TreeViewImageKeyConverter.cs
- AnimationClockResource.cs
- HandlerBase.cs
- ExternalException.cs
- LowerCaseStringConverter.cs
- PageWrapper.cs
- TextChange.cs
- NotFiniteNumberException.cs
- EdmError.cs
- WebConvert.cs
- BeginStoryboard.cs
- WeakReference.cs
- DynamicDataRouteHandler.cs
- SkipStoryboardToFill.cs
- CroppedBitmap.cs
- ObjectCloneHelper.cs
- ExclusiveCanonicalizationTransform.cs
- RelationshipEnd.cs
- AssociationProvider.cs
- OracleBinary.cs
- Mouse.cs
- WorkflowDataContext.cs
- SecurityContext.cs
- SqlTriggerContext.cs
- CodeIndexerExpression.cs
- SqlNode.cs
- AccessDataSourceView.cs
- NavigatingCancelEventArgs.cs
- HelpProvider.cs
- XmlSerializationGeneratedCode.cs
- Atom10FormatterFactory.cs
- RelatedView.cs
- AndCondition.cs
- InvokePatternIdentifiers.cs
- PartialTrustVisibleAssemblyCollection.cs
- GridViewColumnHeader.cs
- SimpleTableProvider.cs
- RegexRunner.cs
- DocumentXmlWriter.cs
- DrawingAttributes.cs
- ApplicationBuildProvider.cs