Compare commits
3 Commits
5337b0aba4
...
4f3da58a60
Author | SHA1 | Date | |
---|---|---|---|
![]() |
4f3da58a60 | ||
![]() |
1a7ce7d386 | ||
![]() |
44f6b90777 |
@ -1,3 +1,4 @@
|
|||||||
|
import threading
|
||||||
from time import sleep
|
from time import sleep
|
||||||
from typing import TYPE_CHECKING, Set
|
from typing import TYPE_CHECKING, Set
|
||||||
from os import urandom
|
from os import urandom
|
||||||
@ -10,6 +11,7 @@ if TYPE_CHECKING:
|
|||||||
|
|
||||||
from onionrthreads import add_onionr_thread
|
from onionrthreads import add_onionr_thread
|
||||||
import onionrplugins
|
import onionrplugins
|
||||||
|
import logger
|
||||||
|
|
||||||
from .connectpeer import connect_peer
|
from .connectpeer import connect_peer
|
||||||
from .client import gossip_client
|
from .client import gossip_client
|
||||||
@ -44,8 +46,18 @@ def start_gossip_threads(
|
|||||||
|
|
||||||
add_onionr_thread(
|
add_onionr_thread(
|
||||||
gossip_server, 1, peer_set, block_queue, seed, initial_sleep=0.2)
|
gossip_server, 1, peer_set, block_queue, seed, initial_sleep=0.2)
|
||||||
add_onionr_thread(
|
|
||||||
gossip_client, 1, peer_set, block_queue, seed, initial_sleep=0)
|
threading.Thread(
|
||||||
|
target=gossip_client,
|
||||||
|
args=[peer_set, block_queue, seed], daemon=True).start()
|
||||||
onionrplugins.events.event('gossip_start', data=peer_set, threaded=True)
|
onionrplugins.events.event('gossip_start', data=peer_set, threaded=True)
|
||||||
onionrplugins.events.event(
|
for _ in range(2):
|
||||||
'bootstrap', data={'peer_set': peer_set, 'callback': connect_peer})
|
onionrplugins.events.event(
|
||||||
|
'bootstrap', data={'peer_set': peer_set, 'callback': connect_peer},
|
||||||
|
threaded=False)
|
||||||
|
sleep(60)
|
||||||
|
if len(peer_set):
|
||||||
|
return
|
||||||
|
logger.error("Could not connect to any peers :(", terminal=True)
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,11 +1,16 @@
|
|||||||
|
from gossip.commands import GossipCommands, command_to_byte
|
||||||
import logger
|
import logger
|
||||||
|
|
||||||
|
|
||||||
def connect_peer(peer_set, peer):
|
def connect_peer(peer_set, peer):
|
||||||
|
if peer in peer_set:
|
||||||
|
return
|
||||||
try:
|
try:
|
||||||
peer.get_socket()
|
s = peer.get_socket()
|
||||||
except Exception:
|
except Exception:
|
||||||
logger.warn(f"Could not connect to {peer.transport_address}")
|
logger.warn(f"Could not connect to {peer.transport_address}")
|
||||||
else:
|
else:
|
||||||
|
s.sendall(command_to_byte(GossipCommands.CLOSE))
|
||||||
|
s.close()
|
||||||
peer_set.add(peer)
|
peer_set.add(peer)
|
||||||
logger.info(f"connected to {peer.transport_address}")
|
logger.info(f"connected to {peer.transport_address}")
|
||||||
|
@ -39,7 +39,7 @@ def gossip_server(
|
|||||||
try:
|
try:
|
||||||
cmd = await asyncio.wait_for(reader.read(1), 60)
|
cmd = await asyncio.wait_for(reader.read(1), 60)
|
||||||
except asyncio.exceptions.CancelledError:
|
except asyncio.exceptions.CancelledError:
|
||||||
writer.close()
|
break
|
||||||
|
|
||||||
cmd = int.from_bytes(cmd, 'big')
|
cmd = int.from_bytes(cmd, 'big')
|
||||||
if cmd == b'' or cmd == 0:
|
if cmd == b'' or cmd == 0:
|
||||||
@ -48,7 +48,7 @@ def gossip_server(
|
|||||||
case GossipCommands.PING:
|
case GossipCommands.PING:
|
||||||
writer.write(b'PONG')
|
writer.write(b'PONG')
|
||||||
case GossipCommands.CLOSE:
|
case GossipCommands.CLOSE:
|
||||||
writer.close()
|
pass
|
||||||
case GossipCommands.ANNOUNCE:
|
case GossipCommands.ANNOUNCE:
|
||||||
async def _read_announce():
|
async def _read_announce():
|
||||||
address = await reader.read(56)
|
address = await reader.read(56)
|
||||||
@ -60,8 +60,10 @@ def gossip_server(
|
|||||||
threaded=True)
|
threaded=True)
|
||||||
writer.write(int(1).to_bytes(1, 'big'))
|
writer.write(int(1).to_bytes(1, 'big'))
|
||||||
await asyncio.wait_for(_read_announce(), 10)
|
await asyncio.wait_for(_read_announce(), 10)
|
||||||
|
break
|
||||||
|
|
||||||
await writer.drain()
|
await writer.drain()
|
||||||
|
writer.close()
|
||||||
|
|
||||||
async def main():
|
async def main():
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user