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
- IndentedWriter.cs
- UTF8Encoding.cs
- ManualResetEvent.cs
- InitiatorServiceModelSecurityTokenRequirement.cs
- CheckBoxList.cs
- DLinqDataModelProvider.cs
- DataGridViewCellEventArgs.cs
- TcpAppDomainProtocolHandler.cs
- StorageConditionPropertyMapping.cs
- GeneratedCodeAttribute.cs
- List.cs
- NetworkInterface.cs
- PathFigureCollectionValueSerializer.cs
- GridView.cs
- Object.cs
- InputMethodStateChangeEventArgs.cs
- DataChangedEventManager.cs
- BufferedGraphicsContext.cs
- CaseInsensitiveOrdinalStringComparer.cs
- KeyValueConfigurationElement.cs
- ConnectionManagementElement.cs
- WebPartAuthorizationEventArgs.cs
- UnaryQueryOperator.cs
- DataGridViewSortCompareEventArgs.cs
- WS2007HttpBindingCollectionElement.cs
- RegisteredArrayDeclaration.cs
- SchemaNotation.cs
- ReadOnlyNameValueCollection.cs
- FixUp.cs
- HttpModulesSection.cs
- IntegerValidatorAttribute.cs
- TimeManager.cs
- IndicShape.cs
- GenericEnumerator.cs
- CompilerParameters.cs
- TextClipboardData.cs
- DefaultEventAttribute.cs
- SequenceDesigner.cs
- ColumnTypeConverter.cs
- PropertyEmitter.cs
- SingleKeyFrameCollection.cs
- AppDomainProtocolHandler.cs
- XmlUrlEditor.cs
- DataFormat.cs
- ValueType.cs
- XmlSchemaChoice.cs
- IndexOutOfRangeException.cs
- DbConnectionPoolGroupProviderInfo.cs
- DataGridViewRowHeaderCell.cs
- MsmqIntegrationMessagePool.cs
- Claim.cs
- ServiceEndpointAssociationProvider.cs
- ExceptionAggregator.cs
- TreeNodeStyle.cs
- HostVisual.cs
- HttpRawResponse.cs
- AutomationProperty.cs
- CrossSiteScriptingValidation.cs
- LogFlushAsyncResult.cs
- Events.cs
- FamilyCollection.cs
- BitmapCache.cs
- DbConnectionInternal.cs
- ToolStripSeparator.cs
- Rules.cs
- IdentityElement.cs
- WindowsFormsHost.cs
- InkCanvasAutomationPeer.cs
- SocketInformation.cs
- NativeMethods.cs
- securitycriticaldataformultiplegetandset.cs
- RepeatInfo.cs
- ServiceDescriptionReflector.cs
- LicenseManager.cs
- MSHTMLHostUtil.cs
- DbMetaDataFactory.cs
- InstanceKey.cs
- BindingManagerDataErrorEventArgs.cs
- TableLayoutPanelCellPosition.cs
- DiscoveryClient.cs
- SAPICategories.cs
- DbProviderManifest.cs
- unsafenativemethodsother.cs
- DeploymentSection.cs
- DesignerTextBoxAdapter.cs
- Evidence.cs
- SqlResolver.cs
- JapaneseLunisolarCalendar.cs
- SystemInfo.cs
- RegexMatchCollection.cs
- XomlDesignerLoader.cs
- PerfCounterSection.cs
- ConfigurationStrings.cs
- DoubleAnimationBase.cs
- LinearKeyFrames.cs
- DiscoveryReferences.cs
- ClassData.cs
- DesignerForm.cs
- SQLInt64.cs
- wgx_exports.cs