eric7/DebugClients/Python/DebugClientBase.py

branch
eric7
changeset 8947
579e286300d1
parent 8946
0ca4f57f15b6
child 8948
9ddea4f0ad87
equal deleted inserted replaced
8946:0ca4f57f15b6 8947:579e286300d1
5 5
6 """ 6 """
7 Module implementing a debug client base class. 7 Module implementing a debug client base class.
8 """ 8 """
9 9
10 import atexit
11 import codecs
12 import codeop
13 import contextlib
14 import fnmatch
15 import json
16 import os
17 import re
18 import select
19 import signal
20 import socket
10 import sys 21 import sys
11 import socket
12 import select
13 import codeop
14 import codecs
15 import traceback 22 import traceback
16 import os
17 import json
18 import re
19 import atexit
20 import signal
21 import time
22 import types 23 import types
23 import fnmatch
24 import contextlib
25 24
26 import DebugClientCapabilities 25 import DebugClientCapabilities
27 import DebugVariables 26 import DebugVariables
28 from DebugBase import setRecursionLimit, printerr # __IGNORE_WARNING__ 27 from DebugBase import setRecursionLimit, printerr # __IGNORE_WARNING__
29 from AsyncFile import AsyncFile, AsyncPendingWrite 28 from AsyncFile import AsyncFile, AsyncPendingWrite
2045 """ 2044 """
2046 try: 2045 try:
2047 host, version = host.split("@@") 2046 host, version = host.split("@@")
2048 except ValueError: 2047 except ValueError:
2049 version = 'v4' 2048 version = 'v4'
2050 family = socket.AF_INET if version == 'v4' else socket.AF_INET6 2049
2051 2050 family = (
2052 retryCount = 0 2051 0
2053 while retryCount < 20: 2052 if version.startswith("i") else
2054 try: 2053 (socket.AF_INET if version == 'v4' else socket.AF_INET6)
2055 addrinfo = socket.getaddrinfo( 2054 )
2056 host, None, family, socket.SOCK_STREAM) 2055
2057 return addrinfo[0][4][0] 2056 with contextlib.suppress(OSError):
2058 except Exception: 2057 addrinfo = socket.getaddrinfo(
2059 retryCount += 1 2058 host, None, family, socket.SOCK_STREAM)
2060 family = (socket.AF_INET if family == socket.AF_INET6 else 2059 return addrinfo[0][4][0]
2061 socket.AF_INET6 2060
2062 )
2063 if retryCount % 2 == 0:
2064 time.sleep(3)
2065 return None 2061 return None
2066 2062
2067 def main(self): 2063 def main(self):
2068 """ 2064 """
2069 Public method implementing the main method. 2065 Public method implementing the main method.

eric ide

mercurial