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
- TableRowCollection.cs
- FreezableDefaultValueFactory.cs
- MultipleViewPattern.cs
- QueryableFilterUserControl.cs
- WorkflowRuntimeServiceElementCollection.cs
- UnsafeNativeMethods.cs
- BasicHttpMessageSecurity.cs
- MouseButtonEventArgs.cs
- RichTextBoxConstants.cs
- Color.cs
- RowToFieldTransformer.cs
- LoadWorkflowAsyncResult.cs
- FrameworkElement.cs
- AuthenticationService.cs
- TagPrefixCollection.cs
- UnionExpr.cs
- SizeConverter.cs
- SynchronizedInputHelper.cs
- FreeFormDesigner.cs
- TemplatedMailWebEventProvider.cs
- SqlBulkCopyColumnMapping.cs
- DictionaryManager.cs
- ScrollEvent.cs
- XmlImplementation.cs
- SafeFindHandle.cs
- QuadraticBezierSegment.cs
- ToolStripSystemRenderer.cs
- DataGridViewDataErrorEventArgs.cs
- RSAPKCS1KeyExchangeFormatter.cs
- SHA384Managed.cs
- DBCommand.cs
- ToolStripContentPanelDesigner.cs
- Attributes.cs
- StrokeNodeEnumerator.cs
- ImageInfo.cs
- COM2TypeInfoProcessor.cs
- Process.cs
- ContainerParaClient.cs
- WebContext.cs
- BitmapInitialize.cs
- Label.cs
- MemberNameValidator.cs
- KnownAssemblyEntry.cs
- NavigationPropertyEmitter.cs
- BlurBitmapEffect.cs
- DataListItemCollection.cs
- AxHost.cs
- SubMenuStyle.cs
- DesignerSerializationOptionsAttribute.cs
- LineGeometry.cs
- SoapExtensionStream.cs
- SaveFileDialog.cs
- BitmapEffectInputData.cs
- DllNotFoundException.cs
- EdmMember.cs
- DynamicDiscoveryDocument.cs
- HtmlTableRow.cs
- CustomError.cs
- ProviderCollection.cs
- DirectoryNotFoundException.cs
- HeaderCollection.cs
- ViewRendering.cs
- WinInetCache.cs
- StrongNameUtility.cs
- WebPartTransformerCollection.cs
- HttpRequestCacheValidator.cs
- MultitargetingHelpers.cs
- ListViewGroupItemCollection.cs
- GeometryCombineModeValidation.cs
- InputLangChangeEvent.cs
- PeerResolverElement.cs
- MenuItemBindingCollection.cs
- LoginCancelEventArgs.cs
- DaylightTime.cs
- ResourceProviderFactory.cs
- PageCache.cs
- DSASignatureFormatter.cs
- ValidationHelper.cs
- CodeExpressionCollection.cs
- SmiXetterAccessMap.cs
- IdentityNotMappedException.cs
- LinkUtilities.cs
- LicenseContext.cs
- DefaultTypeArgumentAttribute.cs
- SqlVisitor.cs
- ServiceParser.cs
- XmlMemberMapping.cs
- BinaryCommonClasses.cs
- CalloutQueueItem.cs
- FileClassifier.cs
- ELinqQueryState.cs
- DesignerImageAdapter.cs
- SystemIPGlobalStatistics.cs
- XmlSchemas.cs
- TreeViewDataItemAutomationPeer.cs
- DatagridviewDisplayedBandsData.cs
- DataGridSortCommandEventArgs.cs
- NumberEdit.cs
- FragmentQueryProcessor.cs
- GraphicsPathIterator.cs