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
- Barrier.cs
- _Rfc2616CacheValidators.cs
- ClientRoleProvider.cs
- DataServiceHost.cs
- Rfc4050KeyFormatter.cs
- WebPartConnectionsConnectVerb.cs
- MobileComponentEditorPage.cs
- ViewManager.cs
- XmlNamespaceMapping.cs
- UInt32Storage.cs
- ReadOnlyAttribute.cs
- HttpDictionary.cs
- UDPClient.cs
- DataTable.cs
- PeerChannelListener.cs
- StretchValidation.cs
- ExclusiveTcpListener.cs
- SchemaTypeEmitter.cs
- URIFormatException.cs
- DESCryptoServiceProvider.cs
- DataPagerFieldCollection.cs
- WorkflowRuntimeEndpoint.cs
- BooleanAnimationUsingKeyFrames.cs
- InvalidCardException.cs
- SecUtil.cs
- CodeTypeOfExpression.cs
- SingleAnimation.cs
- transactioncontext.cs
- MetadataPropertyvalue.cs
- As.cs
- StickyNote.cs
- ThaiBuddhistCalendar.cs
- DataGridViewDataErrorEventArgs.cs
- BidOverLoads.cs
- SqlAliaser.cs
- DBDataPermission.cs
- ParserHooks.cs
- PackageDigitalSignatureManager.cs
- AppDomainFactory.cs
- TraceUtility.cs
- InputScopeAttribute.cs
- BamlResourceContent.cs
- DelegateInArgument.cs
- ArrayTypeMismatchException.cs
- SecurityUtils.cs
- SmiMetaDataProperty.cs
- Pair.cs
- ConnectionString.cs
- HandleCollector.cs
- WebServiceEnumData.cs
- TraceHandlerErrorFormatter.cs
- CurrencyManager.cs
- SoundPlayer.cs
- SoapProtocolReflector.cs
- EndEvent.cs
- RowParagraph.cs
- CalendarTable.cs
- SqlGenerator.cs
- Int16Animation.cs
- ClonableStack.cs
- CompressedStack.cs
- InvokeProviderWrapper.cs
- ColorConvertedBitmap.cs
- DataBindingExpressionBuilder.cs
- BookmarkUndoUnit.cs
- CommandManager.cs
- WindowPatternIdentifiers.cs
- CqlErrorHelper.cs
- UnsafeNativeMethods.cs
- HtmlWindow.cs
- DataGridTable.cs
- Int32Animation.cs
- IntranetCredentialPolicy.cs
- AdornerPresentationContext.cs
- ReferenceService.cs
- WeakKeyDictionary.cs
- EditorPart.cs
- DataGridViewDataConnection.cs
- Resources.Designer.cs
- XmlSchemaValidationException.cs
- ReachPageContentCollectionSerializer.cs
- ZoneIdentityPermission.cs
- GraphicsContext.cs
- MembershipPasswordException.cs
- RuntimeResourceSet.cs
- ComNativeDescriptor.cs
- Debug.cs
- Calendar.cs
- CodeTypeOfExpression.cs
- ListControlConvertEventArgs.cs
- ActionFrame.cs
- XamlPathDataSerializer.cs
- RoleBoolean.cs
- XPathDocumentIterator.cs
- RawStylusSystemGestureInputReport.cs
- RegexRunnerFactory.cs
- MenuItem.cs
- X509CertificateStore.cs
- StrokeRenderer.cs
- RoleService.cs