Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / PeerNode.cs / 1 / PeerNode.cs
//------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------
namespace System.ServiceModel
{
using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.ServiceModel.Dispatcher;
using System.ServiceModel.Channels;
using System.Threading;
public sealed class PeerNode : IOnlineStatus
{
PeerNodeImplementation innerNode = null;
SynchronizationContext synchronizationContext = null;
MessageEncodingBindingElement encoderElement;
internal PeerNode(PeerNodeImplementation peerNode)
{
this.innerNode = peerNode;
}
public event EventHandler Offline;
public event EventHandler Online;
internal void FireOffline(object source, EventArgs args)
{
FireEvent(Offline, source, args);
}
internal void FireOnline(object source, EventArgs args)
{
FireEvent(Online, source, args);
}
void FireEvent(EventHandler handler, object source, EventArgs args)
{
if(handler != null)
{
try
{
SynchronizationContext context = synchronizationContext;
if(context != null)
{
context.Send( delegate (object state) { handler(source, args); }, null);
}
else
{
handler(source, args);
}
}
catch(Exception e)
{
if(DiagnosticUtility.IsFatal(e)) throw;
throw DiagnosticUtility.ExceptionUtility.ThrowHelperCallback(SR.GetString(SR.NotificationException), e);
}
}
}
public bool IsOnline { get { return InnerNode.IsOnline; } }
internal bool IsOpen { get { return InnerNode.IsOpen; } }
public int Port { get { return InnerNode.ListenerPort; } }
public PeerMessagePropagationFilter MessagePropagationFilter
{
get { return InnerNode.MessagePropagationFilter; }
set { InnerNode.MessagePropagationFilter = value; }
}
internal void OnOpen()
{
synchronizationContext = ThreadBehavior.GetCurrentSynchronizationContext();
this.innerNode.Offline += FireOffline;
this.innerNode.Online += FireOnline;
this.innerNode.EncodingElement = this.encoderElement;
}
internal void OnClose()
{
this.innerNode.Offline -= FireOffline;
this.innerNode.Online -= FireOnline;
synchronizationContext = null;
}
internal PeerNodeImplementation InnerNode
{
get { return innerNode; }
}
public void RefreshConnection()
{
PeerNodeImplementation node = InnerNode;
if(node != null)
{
node.RefreshConnection();
}
}
public override string ToString()
{
if(this.IsOpen)
{
return SR.GetString(SR.PeerNodeToStringFormat, this.InnerNode.MeshId, this.InnerNode.NodeId, this.IsOnline, this.IsOpen, this.Port);
}
else
{
return SR.GetString(SR.PeerNodeToStringFormat, "", -1, this.IsOnline, this.IsOpen, -1);
}
}
private MessageEncodingBindingElement EncodingElement
{
get {return this.encoderElement;}
set {this.encoderElement = value;}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ListContractAdapter.cs
- SynchronizationValidator.cs
- FontUnitConverter.cs
- Base64Encoder.cs
- GetParentChain.cs
- OracleCommandSet.cs
- sqlinternaltransaction.cs
- SingleAnimation.cs
- Pool.cs
- DataGridTextBox.cs
- Message.cs
- CompoundFileDeflateTransform.cs
- TemplateBindingExpression.cs
- GridViewColumnCollectionChangedEventArgs.cs
- PositiveTimeSpanValidator.cs
- XmlIlVisitor.cs
- CatalogZone.cs
- RelativeSource.cs
- NamedObject.cs
- ContextToken.cs
- embossbitmapeffect.cs
- TextEditorContextMenu.cs
- MenuItemCollection.cs
- EntityDataSourceDesignerHelper.cs
- AutomationPattern.cs
- ChtmlFormAdapter.cs
- SQLGuidStorage.cs
- RuntimeResourceSet.cs
- SerializableAuthorizationContext.cs
- GregorianCalendar.cs
- DeleteIndexBinder.cs
- MenuCommands.cs
- SymbolTable.cs
- WebPartEventArgs.cs
- DeclarativeExpressionConditionDeclaration.cs
- MutableAssemblyCacheEntry.cs
- FrameSecurityDescriptor.cs
- BitmapFrameEncode.cs
- DSASignatureFormatter.cs
- ListControl.cs
- DataGridTableCollection.cs
- InvalidPrinterException.cs
- ToolStripSplitButton.cs
- ActivityLocationReferenceEnvironment.cs
- Part.cs
- ActiveDocumentEvent.cs
- PersonalizationStateInfoCollection.cs
- _OverlappedAsyncResult.cs
- Themes.cs
- DelayedRegex.cs
- FilterableAttribute.cs
- Brushes.cs
- indexingfiltermarshaler.cs
- Polyline.cs
- ColorTransformHelper.cs
- DataSvcMapFile.cs
- ZipIOLocalFileDataDescriptor.cs
- PagesChangedEventArgs.cs
- ListBoxChrome.cs
- ChangeConflicts.cs
- SecureStringHasher.cs
- ConfigurationManager.cs
- FormsAuthenticationCredentials.cs
- ParsedAttributeCollection.cs
- ListViewDataItem.cs
- CacheHelper.cs
- NullRuntimeConfig.cs
- Deserializer.cs
- DeclarativeCatalogPart.cs
- VariableQuery.cs
- CatalogZoneBase.cs
- AssemblyFilter.cs
- ThicknessKeyFrameCollection.cs
- IntermediatePolicyValidator.cs
- XmlQueryTypeFactory.cs
- SchemaTypeEmitter.cs
- CriticalHandle.cs
- MarshalByValueComponent.cs
- TransformConverter.cs
- XmlILAnnotation.cs
- SelectionItemProviderWrapper.cs
- WmlMobileTextWriter.cs
- ErrorFormatterPage.cs
- TypeKeyValue.cs
- DataGridViewRowPostPaintEventArgs.cs
- TemplateXamlParser.cs
- DoubleLinkListEnumerator.cs
- OSFeature.cs
- Attachment.cs
- Animatable.cs
- WebMessageEncoderFactory.cs
- TcpProcessProtocolHandler.cs
- DocumentSchemaValidator.cs
- HeaderCollection.cs
- DeleteWorkflowOwnerCommand.cs
- ResourceDisplayNameAttribute.cs
- TableColumn.cs
- CatalogZone.cs
- XmlSchemaComplexContentExtension.cs
- WindowAutomationPeer.cs