internal AcceptorI(Instance instance, string adapterName, string host, int port) { _instance = instance; _adapterName = adapterName; _logger = instance.communicator().getLogger(); _backlog = instance.communicator().getProperties().getPropertyAsIntWithDefault("Ice.TCP.Backlog", 511); // // .NET requires that a certificate be supplied. // X509Certificate2Collection certs = instance.certs(); if (certs.Count == 0) { Ice.SecurityException ex = new Ice.SecurityException(); ex.reason = "IceSSL: certificate required for server endpoint"; throw ex; } try { int protocol = instance.protocolSupport(); _addr = (IPEndPoint)IceInternal.Network.getAddressForServer(host, port, protocol, instance.preferIPv6()); _fd = IceInternal.Network.createServerSocket(false, _addr.AddressFamily, protocol); IceInternal.Network.setBlock(_fd, false); IceInternal.Network.setTcpBufSize(_fd, _instance.communicator().getProperties(), _logger); if (IceInternal.AssemblyUtil.platform_ != IceInternal.AssemblyUtil.Platform.Windows) { // // Enable SO_REUSEADDR on Unix platforms to allow // re-using the socket even if it's in the TIME_WAIT // state. On Windows, this doesn't appear to be // necessary and enabling SO_REUSEADDR would actually // not be a good thing since it allows a second // process to bind to an address even it's already // bound by another process. // // TODO: using SO_EXCLUSIVEADDRUSE on Windows would // probably be better but it's only supported by recent // Windows versions (XP SP2, Windows Server 2003). // IceInternal.Network.setReuseAddress(_fd, true); } if (_instance.networkTraceLevel() >= 2) { string s = "attempting to bind to ssl socket " + IceInternal.Network.addrToString(_addr); _logger.trace(_instance.networkTraceCategory(), s); } _addr = IceInternal.Network.doBind(_fd, _addr); } catch (System.Exception) { _fd = null; throw; } }
internal AcceptorI(Instance instance, string adapterName, string host, int port) { _instance = instance; _adapterName = adapterName; _logger = instance.communicator().getLogger(); _backlog = instance.communicator().getProperties().getPropertyAsIntWithDefault("Ice.TCP.Backlog", 511); // // .NET requires that a certificate be supplied. // X509Certificate2Collection certs = instance.certs(); if(certs.Count == 0) { Ice.SecurityException ex = new Ice.SecurityException(); ex.reason = "IceSSL: certificate required for server endpoint"; throw ex; } try { _addr = IceInternal.Network.getAddressForServer(host, port, _instance.protocolSupport()); _fd = IceInternal.Network.createSocket(false, _addr.AddressFamily); IceInternal.Network.setBlock(_fd, false); IceInternal.Network.setTcpBufSize(_fd, _instance.communicator().getProperties(), _logger); if(IceInternal.AssemblyUtil.platform_ != IceInternal.AssemblyUtil.Platform.Windows) { // // Enable SO_REUSEADDR on Unix platforms to allow // re-using the socket even if it's in the TIME_WAIT // state. On Windows, this doesn't appear to be // necessary and enabling SO_REUSEADDR would actually // not be a good thing since it allows a second // process to bind to an address even it's already // bound by another process. // // TODO: using SO_EXCLUSIVEADDRUSE on Windows would // probably be better but it's only supported by recent // Windows versions (XP SP2, Windows Server 2003). // IceInternal.Network.setReuseAddress(_fd, true); } if(_instance.networkTraceLevel() >= 2) { string s = "attempting to bind to ssl socket " + IceInternal.Network.addrToString(_addr); _logger.trace(_instance.networkTraceCategory(), s); } _addr = IceInternal.Network.doBind(_fd, _addr); } catch(System.Exception) { _fd = null; throw; } }
// // Only for use by ConnectorI, AcceptorI. // internal TransceiverI(Instance instance, Socket fd, string host, bool connected, bool incoming, string adapterName, IPEndPoint addr, IceInternal.NetworkProxy proxy) { _instance = instance; _fd = fd; _host = host; _incoming = incoming; _adapterName = adapterName; _addr = addr; _proxy = proxy; _stream = null; _logger = instance.communicator().getLogger(); _stats = instance.communicator().getStats(); _desc = connected ? IceInternal.Network.fdToString(_fd, _proxy, _addr) : "<not connected>"; _state = connected ? StateNeedAuthenticate : StateNeedConnect; _maxSendPacketSize = IceInternal.Network.getSendBufferSize(fd); if (_maxSendPacketSize < 512) { _maxSendPacketSize = 0; } _maxReceivePacketSize = IceInternal.Network.getRecvBufferSize(fd); if (_maxReceivePacketSize < 512) { _maxReceivePacketSize = 0; } if (_adapterName != null) { // // Determine whether a certificate is required from the peer. // _verifyPeer = _instance.communicator().getProperties().getPropertyAsIntWithDefault("IceSSL.VerifyPeer", 2); } else { _verifyPeer = 0; } }
// // Only for use by EndpointI. // internal ConnectorI(Instance instance, string host, IPEndPoint addr, int timeout, string connectionId) { _instance = instance; _host = host; _logger = instance.communicator().getLogger(); _addr = addr; _timeout = timeout; _connectionId = connectionId; _hashCode = _addr.GetHashCode(); _hashCode = 5 * _hashCode + _timeout; _hashCode = 5 * _hashCode + _connectionId.GetHashCode(); }
// // Only for use by ConnectorI, AcceptorI. // internal TransceiverI(Instance instance, Socket fd, IPEndPoint addr, string host, bool connected, string adapterName) { _instance = instance; _fd = fd; _addr = addr; _host = host; _adapterName = adapterName; _stream = null; _logger = instance.communicator().getLogger(); _stats = instance.communicator().getStats(); _desc = connected ? IceInternal.Network.fdToString(_fd) : "<not connected>"; _state = connected ? StateNeedAuthenticate : StateNeedConnect; _maxSendPacketSize = IceInternal.Network.getSendBufferSize(fd); if(_maxSendPacketSize < 512) { _maxSendPacketSize = 0; } _maxReceivePacketSize = IceInternal.Network.getRecvBufferSize(fd); if(_maxReceivePacketSize < 512) { _maxReceivePacketSize = 0; } if(_adapterName != null) { // // Determine whether a certificate is required from the peer. // _verifyPeer = _instance.communicator().getProperties().getPropertyAsIntWithDefault("IceSSL.VerifyPeer", 2); } else { _verifyPeer = 0; } }
// // Only for use by EndpointI. // internal ConnectorI(Instance instance, string host, EndPoint addr, int timeout, string connectionId) { _instance = instance; _host = host; _logger = instance.communicator().getLogger(); _addr = (IPEndPoint)addr; _timeout = timeout; _connectionId = connectionId; _hashCode = 5381; IceInternal.HashUtil.hashAdd(ref _hashCode, _addr); IceInternal.HashUtil.hashAdd(ref _hashCode, _timeout); IceInternal.HashUtil.hashAdd(ref _hashCode, _connectionId); }
// // Only for use by EndpointI. // internal ConnectorI(Instance instance, string host, EndPoint addr, IceInternal.NetworkProxy proxy, int timeout, string conId) { _instance = instance; _host = host; _logger = instance.communicator().getLogger(); _addr = (IPEndPoint)addr; _proxy = proxy; _timeout = timeout; _connectionId = conId; _hashCode = 5381; IceInternal.HashUtil.hashAdd(ref _hashCode, _addr); IceInternal.HashUtil.hashAdd(ref _hashCode, _timeout); IceInternal.HashUtil.hashAdd(ref _hashCode, _connectionId); }
// // Only for use by ConnectorI, AcceptorI. // internal TransceiverI(Instance instance, IceInternal.Transceiver del, string hostOrAdapterName, bool incoming) { _instance = instance; _delegate = del; _incoming = incoming; if (_incoming) { _adapterName = hostOrAdapterName; } else { _host = hostOrAdapterName; } _sslStream = null; _verifyPeer = _instance.communicator().GetPropertyAsInt("IceSSL.VerifyPeer") ?? 2; }