Bug fix (reconnecting in case of timeouted direct connection)

This commit is contained in:
Miroslav Stampar
2016-10-17 22:55:07 +02:00
parent 24eaf55dc8
commit 5b14eecd25
5 changed files with 24 additions and 10 deletions

View File

@@ -9,25 +9,29 @@ import threading
from lib.core.data import logger
from lib.core.enums import CUSTOM_LOGGING
from lib.core.enums import TIMEOUT_STATE
def timeout(func, args=(), kwargs={}, duration=1, default=None):
class InterruptableThread(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
self.result = None
self.timeout_state = None
def run(self):
try:
self.result = func(*args, **kwargs)
self.timeout_state = TIMEOUT_STATE.NORMAL
except Exception, msg:
logger.log(CUSTOM_LOGGING.TRAFFIC_IN, msg)
self.result = default
self.timeout_state = TIMEOUT_STATE.EXCEPTION
thread = InterruptableThread()
thread.start()
thread.join(duration)
if thread.isAlive():
return default
return default, TIMEOUT_STATE.TIMEOUT
else:
return thread.result
return thread.result, thread.timeout_state