Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / clr / src / ManagedLibraries / Remoting / Channels / IPC / IpcChannel.cs / 1305376 / IpcChannel.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== //============================================================================ // File: IpcChannel.cs // Author: [....]@Microsoft.Com // Summary: Implements a combined ipc channel // //========================================================================= using System; using System.Collections; using System.Runtime.Remoting; using System.Runtime.Remoting.Messaging; using System.Globalization; using System.Security.AccessControl; using System.Security.Permissions; namespace System.Runtime.Remoting.Channels.Ipc { public class IpcChannel : IChannelReceiver, IChannelSender, ISecurableChannel { private IpcClientChannel _clientChannel = null; // client channel private IpcServerChannel _serverChannel = null; // server channel private int _channelPriority = 20; // channel priority private String _channelName = "ipc"; // channel name public IpcChannel() { _clientChannel = new IpcClientChannel(); // server channel will not be activated. } // IpcChannel public IpcChannel(String portName) : this() { _serverChannel = new IpcServerChannel(portName); } // IpcChannel public IpcChannel(IDictionary properties, IClientChannelSinkProvider clientSinkProvider, IServerChannelSinkProvider serverSinkProvider) : this(properties, clientSinkProvider, serverSinkProvider, null) { } public IpcChannel(IDictionary properties, IClientChannelSinkProvider clientSinkProvider, IServerChannelSinkProvider serverSinkProvider, CommonSecurityDescriptor securityDescriptor) { 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 "portName": { serverData["portName"] = entry.Value; portFound = true; break; } default: clientData[entry.Key] = entry.Value; serverData[entry.Key] = entry.Value; break; } } } _clientChannel = new IpcClientChannel(clientData, clientSinkProvider); if (portFound) _serverChannel = new IpcServerChannel(serverData, serverSinkProvider, securityDescriptor); } // IpcChannel // // 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 IpcChannelHelper.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 IpcChannel } // namespace System.Runtime.Remoting.Channels.Ipc // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== //============================================================================ // File: IpcChannel.cs // Author: [....]@Microsoft.Com // Summary: Implements a combined ipc channel // //========================================================================= using System; using System.Collections; using System.Runtime.Remoting; using System.Runtime.Remoting.Messaging; using System.Globalization; using System.Security.AccessControl; using System.Security.Permissions; namespace System.Runtime.Remoting.Channels.Ipc { public class IpcChannel : IChannelReceiver, IChannelSender, ISecurableChannel { private IpcClientChannel _clientChannel = null; // client channel private IpcServerChannel _serverChannel = null; // server channel private int _channelPriority = 20; // channel priority private String _channelName = "ipc"; // channel name public IpcChannel() { _clientChannel = new IpcClientChannel(); // server channel will not be activated. } // IpcChannel public IpcChannel(String portName) : this() { _serverChannel = new IpcServerChannel(portName); } // IpcChannel public IpcChannel(IDictionary properties, IClientChannelSinkProvider clientSinkProvider, IServerChannelSinkProvider serverSinkProvider) : this(properties, clientSinkProvider, serverSinkProvider, null) { } public IpcChannel(IDictionary properties, IClientChannelSinkProvider clientSinkProvider, IServerChannelSinkProvider serverSinkProvider, CommonSecurityDescriptor securityDescriptor) { 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 "portName": { serverData["portName"] = entry.Value; portFound = true; break; } default: clientData[entry.Key] = entry.Value; serverData[entry.Key] = entry.Value; break; } } } _clientChannel = new IpcClientChannel(clientData, clientSinkProvider); if (portFound) _serverChannel = new IpcServerChannel(serverData, serverSinkProvider, securityDescriptor); } // IpcChannel // // 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 IpcChannelHelper.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 IpcChannel } // namespace System.Runtime.Remoting.Channels.Ipc // 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
- ComboBox.cs
- WindowsAuthenticationModule.cs
- NameValueCollection.cs
- ExtendedProtectionPolicyElement.cs
- StorageComplexTypeMapping.cs
- PathStreamGeometryContext.cs
- ZoneIdentityPermission.cs
- WebServiceResponseDesigner.cs
- SafeArrayTypeMismatchException.cs
- InvokePattern.cs
- TextView.cs
- HttpProfileGroupBase.cs
- TemplatePropertyEntry.cs
- propertytag.cs
- CodePrimitiveExpression.cs
- sqlinternaltransaction.cs
- Cursors.cs
- OdbcStatementHandle.cs
- TransformGroup.cs
- DataStreamFromComStream.cs
- ContextMenuStripGroup.cs
- Matrix3DConverter.cs
- FileSystemWatcher.cs
- QueryReaderSettings.cs
- DistributedTransactionPermission.cs
- DelegatingTypeDescriptionProvider.cs
- RequestCachePolicyConverter.cs
- ContextMenu.cs
- Debug.cs
- TextChange.cs
- Metafile.cs
- PriorityRange.cs
- QilSortKey.cs
- WebPartDescriptionCollection.cs
- DependencyProperty.cs
- FillRuleValidation.cs
- SerializationSectionGroup.cs
- PageStatePersister.cs
- XamlDesignerSerializationManager.cs
- HideDisabledControlAdapter.cs
- LoginName.cs
- DbMetaDataCollectionNames.cs
- ColumnMapCopier.cs
- DiscoveryClientProtocol.cs
- TogglePatternIdentifiers.cs
- bidPrivateBase.cs
- SubMenuStyleCollection.cs
- NamedPipeActivation.cs
- _Semaphore.cs
- ObjectTypeMapping.cs
- HtmlFormParameterReader.cs
- XPathSelfQuery.cs
- CmsUtils.cs
- CodeTypeDelegate.cs
- FormatterServices.cs
- TemplateColumn.cs
- AttributeQuery.cs
- ScriptReferenceBase.cs
- DataListCommandEventArgs.cs
- StringSorter.cs
- ComponentEditorPage.cs
- DriveNotFoundException.cs
- DeviceContext.cs
- BaseAddressPrefixFilterElement.cs
- SchemaAttDef.cs
- Bitmap.cs
- MembershipValidatePasswordEventArgs.cs
- ManagedCodeMarkers.cs
- XsdBuilder.cs
- ZipIOModeEnforcingStream.cs
- BindStream.cs
- DSASignatureDeformatter.cs
- Subtree.cs
- DocumentGrid.cs
- AnalyzedTree.cs
- PropertyInformation.cs
- ContainerControlDesigner.cs
- Splitter.cs
- BitmapDecoder.cs
- MimeBasePart.cs
- METAHEADER.cs
- HttpApplicationFactory.cs
- LookupBindingPropertiesAttribute.cs
- CommandField.cs
- DataGrid.cs
- SqlClientWrapperSmiStreamChars.cs
- ContentAlignmentEditor.cs
- ClientScriptManager.cs
- SymbolMethod.cs
- WebPartVerbsEventArgs.cs
- CorePropertiesFilter.cs
- GenerateTemporaryTargetAssembly.cs
- RowToParametersTransformer.cs
- AppDomainEvidenceFactory.cs
- DateTimeParse.cs
- EnumerableRowCollectionExtensions.cs
- StyleReferenceConverter.cs
- StateWorkerRequest.cs
- ShaperBuffers.cs
- NamespaceCollection.cs