internal TcpAcceptor( TcpEndpoint endpoint, Communicator communicator, string host, ushort port, string adapterName) { _adapterName = adapterName; _endpoint = endpoint; _communicator = communicator; _backlog = communicator.GetPropertyAsInt("Ice.TCP.Backlog") ?? 511; try { int ipVersion = _communicator.IPVersion; _addr = Network.GetAddressForServerEndpoint(host, port, ipVersion, _communicator.PreferIPv6); _fd = Network.CreateServerSocket(false, _addr.AddressFamily, ipVersion); Network.SetBlock(_fd, false); Network.SetTcpBufSize(_fd, _communicator); } catch (Exception) { _fd = null; throw; } }
public StreamSocket(Communicator communicator, Socket fd) { _communicator = communicator; _fd = fd; _state = StateConnected; try { _desc = Network.FdToString(_fd); } catch (Exception) { Network.CloseSocketNoThrow(_fd); throw; } Network.SetBlock(_fd, false); Network.SetTcpBufSize(_fd, _communicator); _readEventArgs = new SocketAsyncEventArgs(); _readEventArgs.Completed += new EventHandler <SocketAsyncEventArgs>(IoCompleted); _writeEventArgs = new SocketAsyncEventArgs(); _writeEventArgs.Completed += new EventHandler <SocketAsyncEventArgs>(IoCompleted); // // For timeouts to work properly, we need to receive/send // the data in several chunks. Otherwise, we would only be // notified when all the data is received/written. The // connection timeout could easily be triggered when // receiving/sending large frames. // _maxSendPacketSize = Math.Max(512, Network.GetSendBufferSize(_fd)); _maxRecvPacketSize = Math.Max(512, Network.GetRecvBufferSize(_fd)); }
public StreamSocket(Communicator communicator, INetworkProxy?proxy, EndPoint addr, IPAddress?sourceAddr) { _communicator = communicator; _proxy = proxy; _addr = addr; _sourceAddr = sourceAddr; _fd = Network.CreateSocket(false, (_proxy != null ? _proxy.GetAddress() : _addr).AddressFamily); _state = StateNeedConnect; Network.SetBlock(_fd, false); Network.SetTcpBufSize(_fd, _communicator); _readEventArgs = new SocketAsyncEventArgs(); _readEventArgs.Completed += new EventHandler <SocketAsyncEventArgs>(IoCompleted); _writeEventArgs = new SocketAsyncEventArgs(); _writeEventArgs.Completed += new EventHandler <SocketAsyncEventArgs>(IoCompleted); // // For timeouts to work properly, we need to receive/send // the data in several chunks. Otherwise, we would only be // notified when all the data is received/written. The // connection timeout could easily be triggered when // receiving/sending large frames. // _maxSendPacketSize = Math.Max(512, Network.GetSendBufferSize(_fd)); _maxRecvPacketSize = Math.Max(512, Network.GetRecvBufferSize(_fd)); }
internal TcpAcceptor(TcpEndpoint endpoint, ObjectAdapter adapter) { _adapter = adapter; _addr = Network.GetAddressForServerEndpoint(endpoint.Host, endpoint.Port, endpoint.Communicator.IPVersion, endpoint.Communicator.PreferIPv6); _fd = Network.CreateServerSocket(false, _addr.AddressFamily, endpoint.Communicator.IPVersion); Network.SetBlock(_fd, false); Network.SetTcpBufSize(_fd, endpoint.Communicator); _addr = Network.DoBind(_fd, _addr); Network.DoListen(_fd, endpoint.Communicator.GetPropertyAsInt("Ice.TCP.Backlog") ?? 511); Endpoint = endpoint.NewPort((ushort)_addr.Port); }
public void SetBufferSize(int rcvSize, int sndSize) { Debug.Assert(_fd != null); Network.SetTcpBufSize(_fd, rcvSize, sndSize, _communicator); }