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
- DataGridViewElement.cs
- WindowsImpersonationContext.cs
- NativeStructs.cs
- VisualBasicExpressionConverter.cs
- WebPartTracker.cs
- DurationConverter.cs
- ButtonChrome.cs
- XmlObjectSerializerReadContextComplex.cs
- sqlstateclientmanager.cs
- Literal.cs
- SqlInfoMessageEvent.cs
- Compiler.cs
- ResourceAssociationType.cs
- ZoneMembershipCondition.cs
- MultipartContentParser.cs
- ScrollEvent.cs
- FixedSOMSemanticBox.cs
- ToolBarPanel.cs
- ChangePassword.cs
- FixedSOMContainer.cs
- Clipboard.cs
- Directory.cs
- TextRunProperties.cs
- ValidationError.cs
- WmlFormAdapter.cs
- IncrementalReadDecoders.cs
- TransformerInfoCollection.cs
- ClientSponsor.cs
- HandlerMappingMemo.cs
- ApplicationCommands.cs
- SqlDataReaderSmi.cs
- PrintDialogException.cs
- FactoryMaker.cs
- BaseComponentEditor.cs
- ControlCachePolicy.cs
- MetadataCache.cs
- XmlSchemaSimpleTypeUnion.cs
- UDPClient.cs
- GridViewRowPresenterBase.cs
- DataGrid.cs
- Visitor.cs
- UIElement.cs
- FigureParagraph.cs
- storepermission.cs
- XmlElementElementCollection.cs
- DataGridViewRowCollection.cs
- EFTableProvider.cs
- ApplicationFileCodeDomTreeGenerator.cs
- ParseChildrenAsPropertiesAttribute.cs
- SerialErrors.cs
- RichTextBoxConstants.cs
- HttpChannelBindingToken.cs
- TimelineGroup.cs
- MachineKeySection.cs
- ParameterSubsegment.cs
- MediaPlayerState.cs
- BulletedListEventArgs.cs
- SourceFilter.cs
- CommentEmitter.cs
- ObjectAnimationBase.cs
- IgnoreSectionHandler.cs
- DescendentsWalker.cs
- ExtendedPropertyCollection.cs
- PageScaling.cs
- ProfileManager.cs
- ExpressionEditorSheet.cs
- DesignColumnCollection.cs
- TextProperties.cs
- OpenFileDialog.cs
- FacetChecker.cs
- HyperLinkField.cs
- TdsValueSetter.cs
- JsonXmlDataContract.cs
- ContentDisposition.cs
- DescendantQuery.cs
- CompositeFontParser.cs
- StrongNameIdentityPermission.cs
- ActiveXMessageFormatter.cs
- ItemContainerGenerator.cs
- FixedSOMLineCollection.cs
- PerformanceCounter.cs
- PerformanceCounterPermissionEntryCollection.cs
- DiagnosticsConfigurationHandler.cs
- StrokeCollectionConverter.cs
- DictionaryTraceRecord.cs
- DataGridViewRowsRemovedEventArgs.cs
- RegisteredDisposeScript.cs
- RegexFCD.cs
- PublisherMembershipCondition.cs
- RetrieveVirtualItemEventArgs.cs
- SerializerDescriptor.cs
- SoapElementAttribute.cs
- TableRowGroup.cs
- DbReferenceCollection.cs
- FixedHyperLink.cs
- DBAsyncResult.cs
- Pool.cs
- StateDesigner.CommentLayoutGlyph.cs
- WorkflowQueueInfo.cs
- DescendantOverDescendantQuery.cs