|
8 | 8 | # @Desc : |
9 | 9 | from threading import Thread |
10 | 10 | from jade.jade_tools import * |
| 11 | +from queue import Queue |
11 | 12 | class MonitorLDKThread(Thread): |
12 | | - def __init__(self,pyldk,JadeLog,ldkqueue,time=60*60): |
| 13 | + def __init__(self,pyldk,JadeLog,ldkqueue,time=60*60,max_session_size=1): |
13 | 14 | self.pyldk = pyldk |
14 | 15 | self.JadeLog = JadeLog |
15 | 16 | self.ldkqueue = ldkqueue |
16 | 17 | self.time = time |
| 18 | + self.max_session_size = max_session_size |
| 19 | + self.handlequeue = Queue(maxsize=max_session_size) |
17 | 20 | super(MonitorLDKThread, self).__init__() |
18 | 21 | self.start() |
| 22 | + |
| 23 | + def logout(self): |
| 24 | + handle = self.handlequeue.get() |
| 25 | + self.pyldk.adapter.logout(handle) |
19 | 26 | def run(self): |
20 | 27 | haspStruct,feature_id = self.pyldk.login() |
21 | 28 | if haspStruct.status == 0: |
22 | | - self.ldkqueue.put((self.pyldk,haspStruct.handle)) |
| 29 | + self.handlequeue.put(haspStruct.handle) |
23 | 30 | while haspStruct.status == 0: |
| 31 | + haspStruct, feature_id = self.pyldk.login() |
| 32 | + if self.handlequeue.qsize() == self.max_session_size: |
| 33 | + self.logout() |
| 34 | + self.handlequeue.put(haspStruct.handle) |
| 35 | + if self.ldkqueue.qsize() > 0: |
| 36 | + self.ldkqueue.get() |
| 37 | + self.ldkqueue.put((self.pyldk,haspStruct.handle)) |
24 | 38 | if self.pyldk.get_ldk(feature_id) is False: |
25 | 39 | break |
26 | 40 | else: |
27 | 41 | self.JadeLog.DEBUG("加密狗监听正常") |
28 | 42 | time.sleep(self.time) |
| 43 | + |
29 | 44 | self.JadeLog.ERROR("加密狗异常,程序退出") |
30 | 45 | Exit(-800) |
0 commit comments