2020-01-06 12:44:47 +01:00
|
|
|
"""
|
2021-01-25 18:07:48 +01:00
|
|
|
Network subsystem package
|
2020-01-06 12:44:47 +01:00
|
|
|
"""
|
2021-01-25 18:07:48 +01:00
|
|
|
|
2019-10-27 14:15:45 +01:00
|
|
|
from announcethread import AnnounceThread
|
|
|
|
from connectionpool import BMConnectionPool
|
|
|
|
from threads import StoppableThread
|
|
|
|
|
|
|
|
|
|
|
|
__all__ = [
|
2021-03-03 10:51:05 +01:00
|
|
|
"AnnounceThread", "BMConnectionPool", "StoppableThread"
|
2021-01-25 18:07:48 +01:00
|
|
|
# "AddrThread", "AnnounceThread", "BMNetworkThread", "Dandelion",
|
2021-03-03 10:51:05 +01:00
|
|
|
# "DownloadThread", "InvThread", "ReceiveQueueThread", "UploadThread",
|
2019-10-27 14:15:45 +01:00
|
|
|
]
|
2021-01-25 18:07:48 +01:00
|
|
|
|
|
|
|
|
2021-03-03 10:51:05 +01:00
|
|
|
def start(config, state):
|
2021-01-25 18:07:48 +01:00
|
|
|
"""Start network threads"""
|
|
|
|
from addrthread import AddrThread
|
|
|
|
from dandelion import Dandelion
|
|
|
|
from downloadthread import DownloadThread
|
|
|
|
from invthread import InvThread
|
|
|
|
from networkthread import BMNetworkThread
|
|
|
|
from knownnodes import readKnownNodes
|
2021-03-03 10:51:05 +01:00
|
|
|
from receivequeuethread import ReceiveQueueThread
|
2021-01-25 18:07:48 +01:00
|
|
|
from uploadthread import UploadThread
|
|
|
|
|
|
|
|
readKnownNodes()
|
|
|
|
# init, needs to be early because other thread may access it early
|
|
|
|
Dandelion()
|
|
|
|
BMConnectionPool().connectToStream(1)
|
|
|
|
asyncoreThread = BMNetworkThread()
|
|
|
|
asyncoreThread.daemon = True
|
|
|
|
asyncoreThread.start()
|
|
|
|
invThread = InvThread()
|
|
|
|
invThread.daemon = True
|
|
|
|
invThread.start()
|
|
|
|
addrThread = AddrThread()
|
|
|
|
addrThread.daemon = True
|
|
|
|
addrThread.start()
|
|
|
|
downloadThread = DownloadThread()
|
|
|
|
downloadThread.daemon = True
|
|
|
|
downloadThread.start()
|
|
|
|
uploadThread = UploadThread()
|
|
|
|
uploadThread.daemon = True
|
|
|
|
uploadThread.start()
|
2021-03-03 10:51:05 +01:00
|
|
|
|
|
|
|
# Optional components
|
|
|
|
for i in range(config.getint('threads', 'receive')):
|
|
|
|
receiveQueueThread = ReceiveQueueThread(i)
|
|
|
|
receiveQueueThread.daemon = True
|
|
|
|
receiveQueueThread.start()
|
|
|
|
if config.safeGetBoolean('bitmessagesettings', 'udp'):
|
|
|
|
state.announceThread = AnnounceThread()
|
|
|
|
state.announceThread.daemon = True
|
|
|
|
state.announceThread.start()
|