PyBitmessage-2021-04-27/src/network/networkthread.py
Peter Surda 0cc8589b27
Asyncore updates
- should prevent the same object being re-requested indefinitely
- locking for object tracking
- move SSL-specific error handling to TLSDispatcher
- observe maximum connection limit when accepting a new connection
- stack depth test (for debugging purposes)
- separate download thread
- connection pool init moved to main thread
2017-06-21 12:16:33 +02:00

41 lines
1.1 KiB
Python

import threading
from bmconfigparser import BMConfigParser
from debug import logger
from helper_threading import StoppableThread
import network.asyncore_pollchoose as asyncore
from network.connectionpool import BMConnectionPool
import state
class BMNetworkThread(threading.Thread, StoppableThread):
def __init__(self):
threading.Thread.__init__(self, name="AsyncoreThread")
self.initStop()
self.name = "AsyncoreThread"
logger.info("init asyncore thread")
def run(self):
while not self._stopped and state.shutdown == 0:
BMConnectionPool().loop()
def stopThread(self):
super(BMNetworkThread, self).stopThread()
for i in BMConnectionPool().listeningSockets:
try:
i.close()
except:
pass
for i in BMConnectionPool().outboundConnections:
try:
i.close()
except:
pass
for i in BMConnectionPool().inboundConnections:
try:
i.close()
except:
pass
# just in case
asyncore.close_all()