wip
This commit is contained in:
		
							
								
								
									
										133
									
								
								examples/scripts/mycelium/mycelium_basic.rhai
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										133
									
								
								examples/scripts/mycelium/mycelium_basic.rhai
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,133 @@
 | 
			
		||||
// Basic example of using the Mycelium client in Rhai
 | 
			
		||||
 | 
			
		||||
// API URL for Mycelium
 | 
			
		||||
let api_url = "http://localhost:8989";
 | 
			
		||||
 | 
			
		||||
// Get node information
 | 
			
		||||
print("Getting node information:");
 | 
			
		||||
try {
 | 
			
		||||
    let node_info = mycelium_get_node_info(api_url);
 | 
			
		||||
    print(`Node subnet: ${node_info.nodeSubnet}`);
 | 
			
		||||
    print(`Node public key: ${node_info.nodePubkey}`);
 | 
			
		||||
} catch(err) {
 | 
			
		||||
    print(`Error getting node info: ${err}`);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// List all peers
 | 
			
		||||
print("\nListing all peers:");
 | 
			
		||||
try {
 | 
			
		||||
    let peers = mycelium_list_peers(api_url);
 | 
			
		||||
    
 | 
			
		||||
    if peers.is_empty() {
 | 
			
		||||
        print("No peers connected.");
 | 
			
		||||
    } else {
 | 
			
		||||
        for peer in peers {
 | 
			
		||||
            print(`Peer Endpoint: ${peer.endpoint.proto}://${peer.endpoint.socketAddr}`);
 | 
			
		||||
            print(`  Type: ${peer.type}`);
 | 
			
		||||
            print(`  Connection State: ${peer.connectionState}`);
 | 
			
		||||
            print(`  Bytes sent: ${peer.txBytes}`);
 | 
			
		||||
            print(`  Bytes received: ${peer.rxBytes}`);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
} catch(err) {
 | 
			
		||||
    print(`Error listing peers: ${err}`);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Add a new peer
 | 
			
		||||
print("\nAdding a new peer:");
 | 
			
		||||
let new_peer_address = "tcp://65.21.231.58:9651";
 | 
			
		||||
try {
 | 
			
		||||
    let result = mycelium_add_peer(api_url, new_peer_address);
 | 
			
		||||
    print(`Peer added: ${result.success}`);
 | 
			
		||||
} catch(err) {
 | 
			
		||||
    print(`Error adding peer: ${err}`);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// List selected routes
 | 
			
		||||
print("\nListing selected routes:");
 | 
			
		||||
try {
 | 
			
		||||
    let routes = mycelium_list_selected_routes(api_url);
 | 
			
		||||
    
 | 
			
		||||
    if routes.is_empty() {
 | 
			
		||||
        print("No selected routes.");
 | 
			
		||||
    } else {
 | 
			
		||||
        for route in routes {
 | 
			
		||||
            print(`Subnet: ${route.subnet}`);
 | 
			
		||||
            print(`  Next hop: ${route.nextHop}`);
 | 
			
		||||
            print(`  Metric: ${route.metric}`);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
} catch(err) {
 | 
			
		||||
    print(`Error listing routes: ${err}`);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// List fallback routes
 | 
			
		||||
print("\nListing fallback routes:");
 | 
			
		||||
try {
 | 
			
		||||
    let routes = mycelium_list_fallback_routes(api_url);
 | 
			
		||||
    
 | 
			
		||||
    if routes.is_empty() {
 | 
			
		||||
        print("No fallback routes.");
 | 
			
		||||
    } else {
 | 
			
		||||
        for route in routes {
 | 
			
		||||
            print(`Subnet: ${route.subnet}`);
 | 
			
		||||
            print(`  Next hop: ${route.nextHop}`);
 | 
			
		||||
            print(`  Metric: ${route.metric}`);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
} catch(err) {
 | 
			
		||||
    print(`Error listing fallback routes: ${err}`);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Send a message
 | 
			
		||||
// TO SEND A MESSAGE FILL IN THE DESTINATION IP ADDRESS
 | 
			
		||||
// -----------------------------------------------------//
 | 
			
		||||
// print("\nSending a message:");
 | 
			
		||||
// let destination = < FILL IN CORRECT DEST IP >
 | 
			
		||||
// let topic = "test";
 | 
			
		||||
// let message = "Hello from Rhai!";
 | 
			
		||||
// let deadline_secs = 60;
 | 
			
		||||
 | 
			
		||||
// try {
 | 
			
		||||
//     let result = mycelium_send_message(api_url, destination, topic, message, deadline_secs);
 | 
			
		||||
//     print(`Message sent: ${result.success}`);
 | 
			
		||||
//     if result.id {
 | 
			
		||||
//         print(`Message ID: ${result.id}`);
 | 
			
		||||
//     }
 | 
			
		||||
// } catch(err) {
 | 
			
		||||
//     print(`Error sending message: ${err}`);
 | 
			
		||||
// }
 | 
			
		||||
 | 
			
		||||
// Receive messages
 | 
			
		||||
// RECEIVING MESSAGES SHOULD BE DONE ON THE DESTINATION NODE FROM THE CALL ABOVE
 | 
			
		||||
// -----------------------------------------------------------------------------//
 | 
			
		||||
// print("\nReceiving messages:");
 | 
			
		||||
// let receive_topic = "test";
 | 
			
		||||
// let count = 5;
 | 
			
		||||
 | 
			
		||||
// try {
 | 
			
		||||
//     let messages = mycelium_receive_messages(api_url, receive_topic, count);
 | 
			
		||||
    
 | 
			
		||||
//     if messages.is_empty() {
 | 
			
		||||
//         print("No messages received.");
 | 
			
		||||
//     } else {
 | 
			
		||||
//         for msg in messages {
 | 
			
		||||
//             print(`Message from: ${msg.source}`);
 | 
			
		||||
//             print(`  Topic: ${msg.topic}`);
 | 
			
		||||
//             print(`  Content: ${msg.content}`);
 | 
			
		||||
//             print(`  Timestamp: ${msg.timestamp}`);
 | 
			
		||||
//         }
 | 
			
		||||
//     }
 | 
			
		||||
// } catch(err) {
 | 
			
		||||
//     print(`Error receiving messages: ${err}`);
 | 
			
		||||
// }
 | 
			
		||||
 | 
			
		||||
// Remove a peer
 | 
			
		||||
print("\nRemoving a peer:");
 | 
			
		||||
let peer_id = "tcp://65.21.231.58:9651"; // This is the peer we added earlier
 | 
			
		||||
try {
 | 
			
		||||
    let result = mycelium_remove_peer(api_url, peer_id);
 | 
			
		||||
    print(`Peer removed: ${result.success}`);
 | 
			
		||||
} catch(err) {
 | 
			
		||||
    print(`Error removing peer: ${err}`);
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user