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
- VisualBasicSettings.cs
- SafeArchiveContext.cs
- Utils.cs
- EntityDataSourceMemberPath.cs
- CodeSnippetCompileUnit.cs
- DesignerObjectListAdapter.cs
- HttpServerUtilityBase.cs
- JsonClassDataContract.cs
- PhoneCall.cs
- ImageResources.Designer.cs
- CustomAssemblyResolver.cs
- ObjectDisposedException.cs
- EdmFunctionAttribute.cs
- EUCJPEncoding.cs
- XmlSchemaElement.cs
- SystemColorTracker.cs
- ExpressionBuilderContext.cs
- CompilerError.cs
- WorkflowEventArgs.cs
- RowToFieldTransformer.cs
- DbMetaDataColumnNames.cs
- SQLDecimalStorage.cs
- CheckBoxPopupAdapter.cs
- PageStatePersister.cs
- UsernameTokenFactoryCredential.cs
- PathParser.cs
- AssemblyUtil.cs
- SqlNode.cs
- RequestQueryProcessor.cs
- Util.cs
- SizeAnimationBase.cs
- BufferModeSettings.cs
- MetadataHelper.cs
- UITypeEditor.cs
- ReaderWriterLockWrapper.cs
- AdornerPresentationContext.cs
- ButtonBaseAdapter.cs
- CheckBox.cs
- comcontractssection.cs
- WebPartTransformer.cs
- PropertyMetadata.cs
- LogReserveAndAppendState.cs
- APCustomTypeDescriptor.cs
- ReservationCollection.cs
- FixedSOMLineRanges.cs
- ComboBox.cs
- EmptyEnumerable.cs
- XmlWrappingReader.cs
- TextRangeAdaptor.cs
- MessageBox.cs
- ISAPIApplicationHost.cs
- ToolStripButton.cs
- SoapReflectionImporter.cs
- DnsPermission.cs
- DataControlField.cs
- TransactionInterop.cs
- RefreshEventArgs.cs
- AxisAngleRotation3D.cs
- CellTreeNodeVisitors.cs
- DtdParser.cs
- WindowsGraphics.cs
- ImmutableCollection.cs
- TextBox.cs
- MobileListItemCollection.cs
- LogicalMethodInfo.cs
- SmiMetaDataProperty.cs
- RoutedEventHandlerInfo.cs
- ConfigurationManagerHelperFactory.cs
- ProfileService.cs
- DataGridTextBoxColumn.cs
- EntityClientCacheEntry.cs
- Popup.cs
- RangeValuePattern.cs
- Compiler.cs
- PostBackTrigger.cs
- DesignerTransaction.cs
- CompilerGeneratedAttribute.cs
- TemplateXamlParser.cs
- MediaContextNotificationWindow.cs
- DesignRelation.cs
- Pair.cs
- HebrewCalendar.cs
- DataGridViewCellStyle.cs
- NativeStructs.cs
- PriorityBindingExpression.cs
- UnknownBitmapEncoder.cs
- InkPresenterAutomationPeer.cs
- HtmlPhoneCallAdapter.cs
- ISAPIApplicationHost.cs
- SplitContainer.cs
- DataTableReaderListener.cs
- XPathParser.cs
- WeakEventTable.cs
- PackageDigitalSignatureManager.cs
- WorkflowItemPresenter.cs
- WbemException.cs
- LineMetrics.cs
- StateFinalizationActivity.cs
- OutOfProcStateClientManager.cs
- TabletCollection.cs