mirror of
https://github.com/yzernik/squeaknode.git
synced 2026-08-15 12:50:47 +02:00
Share addrs with peer (#1090)
* Share addrs with peer on connection initial sync * Add TODO comments on handling addr and getaddr * Add TODO comments on setting stop event in connection class
This commit is contained in:
parent
40aa8e16dd
commit
dfba41a909
3 changed files with 22 additions and 6 deletions
|
|
@ -23,6 +23,7 @@ import logging
|
|||
import threading
|
||||
from contextlib import contextmanager
|
||||
|
||||
from squeak.messages import msg_getaddr
|
||||
from squeak.messages import msg_subscribe
|
||||
|
||||
from squeaknode.network.peer import Peer
|
||||
|
|
@ -57,13 +58,14 @@ class Connection(object):
|
|||
logger.info("Removing peer.")
|
||||
connection_manager.remove_peer(self.peer)
|
||||
self.peer.stop()
|
||||
# TODO: Set a stop event here.
|
||||
|
||||
def handle_connection(self):
|
||||
self.initial_sync()
|
||||
self.handle_messages()
|
||||
|
||||
def initial_sync(self):
|
||||
# TODO: getaddrs from peer.
|
||||
self.update_addrs()
|
||||
self.update_subscription()
|
||||
|
||||
def update_subscription(self):
|
||||
|
|
@ -73,6 +75,10 @@ class Connection(object):
|
|||
)
|
||||
self.peer.send_msg(subscribe_msg)
|
||||
|
||||
def update_addrs(self):
|
||||
getaddr_msg = msg_getaddr()
|
||||
self.peer.send_msg(getaddr_msg)
|
||||
|
||||
def start_receiving_msgs(self):
|
||||
threading.Thread(
|
||||
target=self.peer.recv_msgs,
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@ from squeak.messages import msg_squeak
|
|||
from squeak.net import CInv
|
||||
|
||||
from squeaknode.core.offer import Offer
|
||||
from squeaknode.core.peer_address import PeerAddress
|
||||
from squeaknode.node.squeak_controller import SqueakController
|
||||
|
||||
|
||||
|
|
@ -102,13 +103,21 @@ class PeerMessageHandler:
|
|||
self.peer.set_pong_response(msg.nonce)
|
||||
|
||||
def handle_addr(self, msg):
|
||||
# TODO: Save new address in table rather than connecting.
|
||||
for addr in msg.addrs:
|
||||
self.peer_server.connect_address((addr.ip, addr.port))
|
||||
peer_address = PeerAddress(
|
||||
host=addr.ip,
|
||||
port=addr.port,
|
||||
)
|
||||
self.squeak_controller.connect_peer(peer_address)
|
||||
|
||||
def handle_getaddr(self, msg):
|
||||
peers = self.node.get_peers()
|
||||
addresses = [peer.caddress for peer in peers
|
||||
if peer.outgoing]
|
||||
# TODO: Get known peers from table in database.
|
||||
peers = self.squeak_controller.get_connected_peers()
|
||||
addresses = [
|
||||
peer.remote_caddress for peer in peers
|
||||
if peer.remote_caddress != self.peer.remote_caddress
|
||||
]
|
||||
addr_msg = msg_addr(addrs=addresses)
|
||||
self.peer.send_msg(addr_msg)
|
||||
|
||||
|
|
|
|||
|
|
@ -49,6 +49,7 @@ from squeaknode.core.squeak_entry import SqueakEntry
|
|||
from squeaknode.core.squeak_peer import SqueakPeer
|
||||
from squeaknode.core.squeak_profile import SqueakProfile
|
||||
from squeaknode.core.util import is_address_valid
|
||||
from squeaknode.network.peer import Peer
|
||||
from squeaknode.node.listener_subscription_client import EventListener
|
||||
from squeaknode.node.received_payments_subscription_client import ReceivedPaymentsSubscriptionClient
|
||||
|
||||
|
|
@ -507,7 +508,7 @@ class SqueakController:
|
|||
def get_connected_peer(self, peer_address: PeerAddress):
|
||||
return self.network_manager.get_connected_peer(peer_address)
|
||||
|
||||
def get_connected_peers(self):
|
||||
def get_connected_peers(self) -> List[Peer]:
|
||||
return self.network_manager.get_connected_peers()
|
||||
|
||||
def lookup_squeaks_for_interest(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue