process error, now can restart
This commit is contained in:
@@ -3,16 +3,32 @@ import copy
|
||||
import os
|
||||
from mswp import Datapack
|
||||
from forwarder import receive_queues, send_queue
|
||||
from config import msw_queue
|
||||
receive_queue = receive_queues[__name__]
|
||||
|
||||
|
||||
def main():
|
||||
while True:
|
||||
try:
|
||||
_main()
|
||||
except Exception as e:
|
||||
print('Error in %s, %s: %s' % (__name__, type(e), str(e)))
|
||||
|
||||
|
||||
def _main():
|
||||
file_flag = False
|
||||
while True:
|
||||
file_flag = False
|
||||
net_flag = False
|
||||
raw_data = input()
|
||||
|
||||
if raw_data == 'restart':
|
||||
msw_queue.put(0)
|
||||
break
|
||||
if raw_data == 'exit':
|
||||
msw_queue.put(1)
|
||||
break
|
||||
|
||||
if raw_data[:6] == '(file)': # like "(file)log: filename.exe"
|
||||
raw_data = raw_data[6:]
|
||||
file_flag = True
|
||||
@@ -61,5 +77,5 @@ def find_the_last(indata): # find the last ":" index
|
||||
return first_index, last_index
|
||||
|
||||
|
||||
thread = threading.Thread(target=main, args=())
|
||||
thread = threading.Thread(target=main, args=(), daemon=True)
|
||||
thread.start()
|
||||
|
||||
@@ -14,6 +14,6 @@ def main():
|
||||
from_app_name = 'Unknown'
|
||||
f.write(from_app_name + ': ' + dp.body.decode() + '\n')
|
||||
|
||||
thread = threading.Thread(target=main, args=())
|
||||
thread = threading.Thread(target=main, args=(), daemon=True)
|
||||
thread.start()
|
||||
|
||||
|
||||
@@ -26,13 +26,13 @@ class Network_controller: # manage id and connection
|
||||
self.all_connection_list = []
|
||||
self.wheel_queue = queue.Queue()
|
||||
|
||||
self.start_wheel_thread = threading.Thread(target=self.start_wheel, args=())
|
||||
self.start_wheel_thread = threading.Thread(target=self.start_wheel, args=(), daemon=True)
|
||||
self.start_wheel_thread.start()
|
||||
|
||||
self.start_accpet_connection_thread = threading.Thread(target=self.start_accpet_connection, args=())
|
||||
self.start_accpet_connection_thread = threading.Thread(target=self.start_accpet_connection, args=(), daemon=True)
|
||||
self.start_accpet_connection_thread.start()
|
||||
|
||||
self.start_sending_dp_thread = threading.Thread(target=self.start_sending_dp, args=())
|
||||
self.start_sending_dp_thread = threading.Thread(target=self.start_sending_dp, args=(), daemon=True)
|
||||
self.start_sending_dp_thread.start()
|
||||
|
||||
|
||||
@@ -127,21 +127,21 @@ class Connection:
|
||||
self.buff = b''
|
||||
self.padding_queue = queue.Queue()
|
||||
|
||||
self.thread_recv = threading.Thread(target=self._init, args=())
|
||||
self.thread_recv = threading.Thread(target=self._init, args=(), daemon=True)
|
||||
self.thread_recv.start()
|
||||
|
||||
self.thread_send = None
|
||||
|
||||
|
||||
def _init(self): # init to check connection id, threading
|
||||
err_code = self.check_id()
|
||||
err_code, flag = self.check_id()
|
||||
if err_code:
|
||||
print('Init connection failed, connection closed')
|
||||
print('<%s> Init connection failed, connection closed, code: %s' % (flag, err_code))
|
||||
self.conn.close()
|
||||
|
||||
self.netowrk_controller.set_connection(self.id, self)
|
||||
|
||||
self.thread_send = threading.Thread(target=self.send_func, args=())
|
||||
self.thread_send = threading.Thread(target=self.send_func, args=(), daemon=True)
|
||||
self.thread_send.start()
|
||||
|
||||
self.receive()
|
||||
@@ -213,19 +213,29 @@ class Connection:
|
||||
length: 0
|
||||
|
||||
-------------------------------
|
||||
error code list:
|
||||
1: not get "id" in head
|
||||
2: receive data failed
|
||||
3: appname is not handshake
|
||||
'''
|
||||
data = self.conn.recv(BUFFSIZE)
|
||||
if not data:
|
||||
return 2
|
||||
return 2, ''
|
||||
|
||||
self.buff += data
|
||||
dp = Datapack()
|
||||
dp.encode_data = self.buff # maybe here needs to use copy.copy(self.buff)
|
||||
self.buff = dp.decode(only_head=True)
|
||||
if not dp.head.get('id'):
|
||||
return 1
|
||||
return 1, dp.head.get('flag')
|
||||
|
||||
if not dp.app == 'handshake':
|
||||
return 3, dp.head.get('flag')
|
||||
|
||||
self.id = dp.head['id']
|
||||
|
||||
return 0, dp.head.get('flag')
|
||||
|
||||
|
||||
def sendall(self, dp):
|
||||
self.padding_queue.put(dp)
|
||||
@@ -246,5 +256,5 @@ class Connection:
|
||||
self.conn.sendall(dp.encode_data)
|
||||
|
||||
|
||||
thread = threading.Thread(target=main, args=())
|
||||
thread = threading.Thread(target=main, args=(), daemon=True)
|
||||
thread.start()
|
||||
|
||||
@@ -70,5 +70,5 @@ class Compresser:
|
||||
return filelist
|
||||
|
||||
|
||||
thread = threading.Thread(target=main, args=())
|
||||
thread = threading.Thread(target=main, args=(), daemon=True)
|
||||
thread.start()
|
||||
|
||||
Reference in New Issue
Block a user