57 lines
1.8 KiB
Python
57 lines
1.8 KiB
Python
from .noSysModule import NoSysModule
|
|
from .events import Events
|
|
from .peers import Peer
|
|
from libs.fspn.protocol.server import Server
|
|
from libs.fspn.protocol.connection import Connection
|
|
|
|
class NoSysModuleServer(NoSysModule, Server):
|
|
def __init__(self, nosys_core):
|
|
NoSysModule.__init__(self, nosys_core)
|
|
Server.__init__(self)
|
|
|
|
self.host = "0.0.0.0"
|
|
self.port = 0
|
|
|
|
self.clients : dict[str, Peer] = {}
|
|
|
|
def setup(self):
|
|
self.nosys_core.subscribe_event(Events.PEER_CONNECTED, self._on_peer_connected)
|
|
self.nosys_core.subscribe_event(Events.PEER_DISCONNECTED, self._on_peer_disconnected)
|
|
|
|
def run_server(self, user_id):
|
|
self.nosys_core.servers.run_server(self, user_id, (self.host, self.port))
|
|
|
|
def on_server_connection(self, event):
|
|
print("CONNECTION RAW")
|
|
connection: Connection = event.source
|
|
peer = Peer(connection.id, connection)
|
|
self.nosys_core.peers.add_peer(peer)
|
|
self.clients[peer.id] = peer
|
|
self.nosys_core.connections._on_connection(event)
|
|
|
|
def on_server_disconnection(self, event):
|
|
print("DISCONNECTION RAW")
|
|
self.nosys_core.connections._on_disconnection(event)
|
|
|
|
def on_server_message(self, event):
|
|
print("MESSAGE RAW")
|
|
self.nosys_core.dispatcher.on_message(event)
|
|
|
|
def _on_peer_connected(self, event):
|
|
peer:Peer = event.peer
|
|
print(peer.id, self.clients)
|
|
if peer.id in self.clients:
|
|
print("PEER CONNECTED")
|
|
self.on_connection(peer)
|
|
|
|
def _on_peer_disconnected(self, event):
|
|
peer:Peer = event.peer
|
|
if peer.id in self.clients:
|
|
print("PEER DISCONNECTED")
|
|
self.on_disconnection(peer)
|
|
|
|
def on_connection(self, peer:Peer):
|
|
pass
|
|
|
|
def on_disconnection(self, peer:Peer):
|
|
pass |