File size: 1,924 Bytes
3dc4f38
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import asyncio
import argparse
from swarm import SwarmMesh
from core import CoreHotPath

class VertusNodeInstance:
    def __init__(self, node_id: str, host: str, port: int, db_path: str):
        self.node_id = node_id
        self.host = host
        self.port = port
        self.mesh = SwarmMesh(node_id=node_id)
        self.core = CoreHotPath(cache_path=db_path)

    async def start(self):
        await self.mesh.start_server(host=self.host, port=self.port)
        print(f"[NODE {self.node_id}] Serveur P2P actif sur {self.host}:{self.port}")

    async def broadcast_intention(self, peer_host: str, peer_port: int, text: str):
        vec, latency, hit = self.core.project_intention(text)
        writer = await self.mesh.connect_to_peer(peer_host, peer_port)
        await self.mesh.send_packet_to_peer(writer, vec)
        await self.mesh.send_gene_sync_to_peer(writer, f"gene-{self.node_id}", {"intention": text, "cache_hit": hit})
        await self.mesh.close_all_peers()
        print(f"[NODE {self.node_id}] Intention projetée et diffusée vers {peer_host}:{peer_port} (Latence: {latency:.2f}ms)")

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description="Lancer un nœud VERTUS")
    parser.add_argument("--id", type=str, default="node-1")
    parser.add_argument("--host", type=str, default="127.0.0.1")
    parser.add_argument("--port", type=int, default=9099)
    parser.add_argument("--db", type=str, default="vertus_node.db")
    args = parser.parse_args()

    async def main():
        node = VertusNodeInstance(node_id=args.id, host=args.host, port=args.port, db_path=args.db)
        await node.start()
        # Maintien du serveur en écoute
        try:
            await asyncio.Future()
        except asyncio.CancelledError:
            pass

    try:
        asyncio.run(main())
    except KeyboardInterrupt:
        print(f"\n[NODE {args.id}] Arrêt propre du nœud.")