def _socket_create_and_loop_connect(self):
self._socket_lock.acquire()
is_socket_lock = True
if self._is_loop_connecting:
return RET_ERROR, "is loop connecting, can't create_session"
self._is_loop_connecting = True
if self.s is not None:
self._force_close_session()
while True:
try:
if not is_socket_lock:
is_socket_lock = True
self._socket_lock.acquire()
s = sock.socket()
s.setsockopt(sock.SOL_SOCKET, sock.SO_REUSEADDR, 0)
s.setsockopt(sock.SOL_SOCKET, sock.SO_LINGER, pack("ii", 0, 0))
s.settimeout(10)
self.s = s
self.s.connect((self.__host, self.__port))
except Exception as e:
traceback.print_exc()
err = sys.exc_info()[1]
err_msg = ERROR_STR_PREFIX + str(err)
print("socket connect err:{}".format(err_msg))
self.s = None
if s:
s.close()
del s
sleep(1.5)
continue
if self._connected_handler is not None:
is_socket_lock = False
self._socket_lock.release()
sock_ok, is_retry = self._connected_handler.notify_sync_socket_connected(self)
if not sock_ok:
self._force_close_session()
if is_retry:
print("wait to connect futunn plugin server")
sleep(1.5)
continue
else:
return RET_ERROR, "obj is closed"
else:
break
self._is_loop_connecting = False
if is_socket_lock:
# is_socket_lock = False
self._socket_lock.release()
return RET_OK, ''
评论列表
文章目录