def connect(self, address, _hostname_hint=None):
"""connect(address)
Connect the socket to a remote address. For IP sockets, the address
is a pair (host, port).
"""
if not self._created:
if self.gettimeout() is None:
self._CreateSocket(address=address,
address_hostname_hint=_hostname_hint)
return
else:
self._CreateSocket()
if not self._socket_descriptor:
raise error(errno.EBADF, os.strerror(errno.EBADF))
if self._connected:
raise error(errno.EISCONN, os.strerror(errno.EISCONN))
request = remote_socket_service_pb.ConnectRequest()
request.set_socket_descriptor(self._socket_descriptor)
self._SetProtoFromAddr(request.mutable_remote_ip(), address, _hostname_hint)
if self.gettimeout() is not None:
request.set_timeout_seconds(self.gettimeout())
reply = remote_socket_service_pb.ConnectReply()
try:
apiproxy_stub_map.MakeSyncCall('remote_socket', 'Connect', request, reply)
except apiproxy_errors.ApplicationError, e:
translated_e = _SystemExceptionFromAppError(e)
if translated_e.errno == errno.EISCONN:
self._bound = True
self._connected = True
elif translated_e.errno == errno.EINPROGRESS:
self._connect_in_progress = True
raise translated_e
self._bound = True
self._connected = True
评论列表
文章目录