Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / clr / src / ManagedLibraries / Remoting / Channels / TCP / CombinedTcpChannel.cs / 1305376 / CombinedTcpChannel.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== //========================================================================== // File: CombinedTcpChannel.cs // // Summary: Merges the client and server TCP channels // // Classes: public TcpChannel // //========================================================================= using System; using System.Collections; using System.Runtime.Remoting; using System.Runtime.Remoting.Messaging; using System.Globalization; using System.Security.Permissions; namespace System.Runtime.Remoting.Channels.Tcp { public class TcpChannel : IChannelReceiver, IChannelSender, ISecurableChannel { private TcpClientChannel _clientChannel = null; // client channel private TcpServerChannel _serverChannel = null; // server channel private int _channelPriority = 1; // channel priority private String _channelName = "tcp"; // channel name public TcpChannel() { _clientChannel = new TcpClientChannel(); // server channel will not be activated. } // TcpChannel public TcpChannel(int port) : this() { _serverChannel = new TcpServerChannel(port); } // TcpChannel public TcpChannel(IDictionary properties, IClientChannelSinkProvider clientSinkProvider, IServerChannelSinkProvider serverSinkProvider) { Hashtable clientData = new Hashtable(); Hashtable serverData = new Hashtable(); bool portFound = false; // divide properties up for respective channels if (properties != null) { foreach (DictionaryEntry entry in properties) { switch ((String)entry.Key) { // general channel properties case "name": _channelName = (String)entry.Value; break; case "priority": _channelPriority = Convert.ToInt32((String)entry.Value, CultureInfo.InvariantCulture); break; case "port": { serverData["port"] = entry.Value; portFound = true; break; } default: clientData[entry.Key] = entry.Value; serverData[entry.Key] = entry.Value; break; } } } _clientChannel = new TcpClientChannel(clientData, clientSinkProvider); if (portFound) _serverChannel = new TcpServerChannel(serverData, serverSinkProvider); } // TcpChannel // // ISecurableChannel implementation // public bool IsSecured { [SecurityPermission(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.Infrastructure, Infrastructure=true)] get { if (_clientChannel != null) return _clientChannel.IsSecured; if (_serverChannel != null) return _serverChannel.IsSecured; return false; } [SecurityPermission(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.Infrastructure, Infrastructure=true)] set { if (((IList)ChannelServices.RegisteredChannels).Contains(this)) throw new InvalidOperationException(CoreChannel.GetResourceString("Remoting_InvalidOperation_IsSecuredCannotBeChangedOnRegisteredChannels")); if (_clientChannel != null) _clientChannel.IsSecured = value; if (_serverChannel != null) _serverChannel.IsSecured = value; } } // // IChannel implementation // public int ChannelPriority { [SecurityPermission(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.Infrastructure, Infrastructure=true)] get { return _channelPriority; } } // ChannelPriority public String ChannelName { [SecurityPermission(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.Infrastructure, Infrastructure=true)] get { return _channelName; } } // ChannelName // returns channelURI and places object uri into out parameter [SecurityPermission(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.Infrastructure, Infrastructure=true)] public String Parse(String url, out String objectURI) { return TcpChannelHelper.ParseURL(url, out objectURI); } // Parse // // end of IChannel implementation // // // IChannelSender implementation // [SecurityPermission(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.Infrastructure, Infrastructure=true)] public IMessageSink CreateMessageSink(String url, Object remoteChannelData, out String objectURI) { return _clientChannel.CreateMessageSink(url, remoteChannelData, out objectURI); } // CreateMessageSink // // end of IChannelSender implementation // // // IChannelReceiver implementation // public Object ChannelData { [SecurityPermission(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.Infrastructure, Infrastructure=true)] get { if (_serverChannel != null) return _serverChannel.ChannelData; else return null; } } // ChannelData [SecurityPermission(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.Infrastructure, Infrastructure=true)] public String[] GetUrlsForUri(String objectURI) { if (_serverChannel != null) return _serverChannel.GetUrlsForUri(objectURI); else return null; } // GetUrlsforURI [SecurityPermission(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.Infrastructure, Infrastructure=true)] public void StartListening(Object data) { if (_serverChannel != null) _serverChannel.StartListening(data); } // StartListening [SecurityPermission(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.Infrastructure, Infrastructure=true)] public void StopListening(Object data) { if (_serverChannel != null) _serverChannel.StopListening(data); } // StopListening // // IChannelReceiver implementation // } // class TcpChannel } // namespace System.Runtime.Remoting.Channels.Tcp // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- HttpWriter.cs
- SystemIPv6InterfaceProperties.cs
- SiteMapNodeItem.cs
- TextRenderingModeValidation.cs
- AssemblyName.cs
- LiteralControl.cs
- ExpressionBuilderContext.cs
- Thumb.cs
- WebConvert.cs
- StorageInfo.cs
- ToolStripDropDownItemDesigner.cs
- EncodingNLS.cs
- Expression.cs
- SettingsBindableAttribute.cs
- Span.cs
- ToolStripActionList.cs
- ImageCollectionCodeDomSerializer.cs
- ResourceExpressionEditor.cs
- NumberFunctions.cs
- Int16.cs
- PointValueSerializer.cs
- ChildChangedEventArgs.cs
- DataRecordInternal.cs
- NetWebProxyFinder.cs
- RectAnimationBase.cs
- XslAst.cs
- CookieParameter.cs
- DataGridViewAdvancedBorderStyle.cs
- EntityDataSourceState.cs
- XmlSchemaCollection.cs
- CssClassPropertyAttribute.cs
- ToolStripGripRenderEventArgs.cs
- QuotedPrintableStream.cs
- NotCondition.cs
- CommandID.cs
- HtmlFormParameterReader.cs
- EntitySqlQueryBuilder.cs
- DataGridViewCellPaintingEventArgs.cs
- SystemNetworkInterface.cs
- precedingsibling.cs
- XamlPoint3DCollectionSerializer.cs
- FileDialog_Vista_Interop.cs
- XmlDomTextWriter.cs
- SqlInternalConnectionTds.cs
- XmlTextReaderImplHelpers.cs
- ConfigurationProperty.cs
- BitmapFrameEncode.cs
- Point3DIndependentAnimationStorage.cs
- SocketAddress.cs
- PriorityChain.cs
- PostBackOptions.cs
- BitmapCodecInfo.cs
- PoisonMessageException.cs
- DoubleLink.cs
- WebBrowserProgressChangedEventHandler.cs
- DirectoryInfo.cs
- EnumMember.cs
- ReflectPropertyDescriptor.cs
- ActivityExecutor.cs
- ProviderSettings.cs
- HostedElements.cs
- DataObjectSettingDataEventArgs.cs
- MessageDispatch.cs
- GPRECTF.cs
- CodeBlockBuilder.cs
- HttpApplicationFactory.cs
- DelegateTypeInfo.cs
- ResourceWriter.cs
- RelatedPropertyManager.cs
- FixedHighlight.cs
- DmlSqlGenerator.cs
- PersonalizationEntry.cs
- AnnotationHelper.cs
- AliasedSlot.cs
- TextElementCollectionHelper.cs
- RegexWorker.cs
- SQLSingleStorage.cs
- DataGridViewRowDividerDoubleClickEventArgs.cs
- XPathAncestorQuery.cs
- LocalFileSettingsProvider.cs
- FormsIdentity.cs
- QilParameter.cs
- FaultContext.cs
- MdiWindowListItemConverter.cs
- SharedDp.cs
- DelegateCompletionCallbackWrapper.cs
- BaseComponentEditor.cs
- SpellerInterop.cs
- VectorAnimation.cs
- DependencyPropertyAttribute.cs
- DesignBindingEditor.cs
- UnsafeNativeMethods.cs
- DuplicateWaitObjectException.cs
- ColorTransform.cs
- CustomWebEventKey.cs
- SettingsBase.cs
- ResourceManager.cs
- sqlpipe.cs
- SpeakInfo.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs