Added libs
This commit is contained in:
81
rendezvous/rendezvousClient.py
Normal file
81
rendezvous/rendezvousClient.py
Normal file
@@ -0,0 +1,81 @@
|
||||
import ipaddress
|
||||
|
||||
from libs.noSys.noSysModule import NoSysModule
|
||||
from libs.noSys.events import Events as nosys_events, DynamicEvents as nosys_dynamic_events
|
||||
from libs.noSys.peers import Peer
|
||||
from .rendezvousClientApiBlueprint import Blueprint
|
||||
from .rendezvousClientSocketio import HandlerSocketio
|
||||
from libs.app.common.logging import get_logger
|
||||
|
||||
logger = get_logger()
|
||||
# TODO Constants file
|
||||
RENDEZVOUS_SERVER_MODULE = ("rendezvous", "rendezvousServer")
|
||||
|
||||
class RendezvousClientEvents:
|
||||
SERVER_CONNECTED = "server_connected"
|
||||
SERVER_CONNECTION_ERROR = "server_connection_error"
|
||||
SERVER_DISCONNECTED = "server_disconnected"
|
||||
|
||||
# TODO PMC class inheritance
|
||||
class RendezvousClient(NoSysModule):
|
||||
def __init__(self, nosys_core):
|
||||
super().__init__(nosys_core)
|
||||
self.connections:dict[str, Peer] = {}
|
||||
|
||||
def setup(self):
|
||||
self.nosys_core.modules.api.register_blueprint(Blueprint(self).blueprint)
|
||||
self.nosys_core.modules.api.register_socketio(HandlerSocketio(self))
|
||||
|
||||
self.nosys_core.subscribe_event(nosys_dynamic_events.module_connection(RENDEZVOUS_SERVER_MODULE[0], RENDEZVOUS_SERVER_MODULE[1]), self.on_peer_module_server)
|
||||
|
||||
def on_nosys_ready(self, event):
|
||||
pass
|
||||
|
||||
def connect_to_server(self, address, user_id):
|
||||
peer, connect = self.nosys_core.connections.create_connection(address, user_id)
|
||||
self.connections[peer.id] = peer
|
||||
self.nosys_core.subscribe_event(nosys_dynamic_events.peer_connection(peer.id), self.on_server_connection)
|
||||
self.nosys_core.subscribe_event(nosys_dynamic_events.peer_connection_error(peer.id), self.on_server_connection_error)
|
||||
self.nosys_core.subscribe_event(nosys_dynamic_events.peer_disconnection(peer.id), self.on_server_disconnection)
|
||||
connect()
|
||||
return peer
|
||||
|
||||
def on_peer_module_server(self, event):
|
||||
peer:Peer = event.peer
|
||||
if peer.id in self.connections:
|
||||
print("SERVER CONNECTED")
|
||||
else:
|
||||
print("RANDOM SERVER CONNECTED")
|
||||
self.connections[peer.id] = peer
|
||||
|
||||
def on_module_connection_server(self, event):
|
||||
pass
|
||||
|
||||
def on_module_message(self, event):
|
||||
handler_action = getattr(self, 'on_'+event.data['action'])
|
||||
handler_action(event)
|
||||
|
||||
def send_get_random_peer(self, peer_id, network_id):
|
||||
body = {"action":"get_random_peer"}
|
||||
self.nosys_core.dispatcher.send_message(body, peer_id, RENDEZVOUS_SERVER_MODULE)
|
||||
|
||||
def on_random_peer(self, event):
|
||||
peer:Peer = event.peer
|
||||
address = event.data["address"]
|
||||
if address:
|
||||
address = address.split(':')
|
||||
self.nosys_core.connections.connect(address=(address[0], int(address[1])), user_id=self.connections[peer.id].connection.security.user, bind_address=peer.connection.bind_address)
|
||||
else:
|
||||
pass
|
||||
|
||||
def on_server_connection(self, event):
|
||||
self.fire_event(RendezvousClientEvents.SERVER_CONNECTED, peer=event.peer)
|
||||
print("CLIENT SERVER CONNECTED")
|
||||
|
||||
def on_server_connection_error(self, event):
|
||||
self.fire_event(RendezvousClientEvents.SERVER_CONNECTION_ERROR, peer=event.peer, error=event.error)
|
||||
print("CLIENT SERVER ERROR")
|
||||
|
||||
def on_server_disconnection(self, event):
|
||||
self.fire_event(RendezvousClientEvents.SERVER_DISCONNECTED, peer=event.peer)
|
||||
print("CLIENT SERVER DISCONNECTED")
|
||||
Reference in New Issue
Block a user