Crate route_manager

Source
Expand description

§Example:

§Asynchronous API

use route_manager::{AsyncRouteManager, Route};
use std::time::Duration;
#[cfg(feature = "async")]
#[tokio::main]
pub async fn main() {
    let mut route_listener = AsyncRouteManager::listener().unwrap();
    tokio::spawn(async move {
        while let Ok(route) = route_listener.listen().await {
            println!("listen {route}");
        }
    });
    // Need to set up the correct gateway
    let route = Route::new("192.168.2.0".parse().unwrap(), 24).with_if_index(1);
    let mut manager = AsyncRouteManager::new().unwrap();
    let result = manager.add(&route).await;
    println!("route add {route} {result:?}");
    tokio::time::sleep(Duration::from_secs(1)).await;
    let result = manager.delete(&route).await;
    println!("route delete {route} {result:?}");
    tokio::time::sleep(Duration::from_secs(1)).await;
}

§Synchronous API

use route_manager::{Route, RouteManager};
use std::thread;
use std::time::Duration;
let mut route_listener = RouteManager::listener().unwrap();
#[cfg(feature = "shutdown")]
let shutdown_handle = route_listener.shutdown_handle().unwrap();
thread::spawn(move || {
    while let Ok(route) = route_listener.listen() {
        println!("listen {route}");
    }
    println!("========= end =========");
});
// Need to set up the correct gateway
let route = Route::new("192.168.2.0".parse().unwrap(), 24).with_if_index(1);
let mut manager = RouteManager::new().unwrap();

let result = manager.add(&route);
println!("route add {route} {result:?}");
thread::sleep(Duration::from_secs(1));
let result = manager.delete(&route);
println!("route delete {route} {result:?}");
thread::sleep(Duration::from_secs(1));
#[cfg(feature = "shutdown")]
shutdown_handle.shutdown().unwrap();
thread::sleep(Duration::from_secs(100));

Structs§

AsyncRouteListener
AsyncRouteListener for asynchronously receiving route change events.
AsyncRouteManager
AsyncRouteManager for asynchronously managing routes (adding, deleting, and listing).
Route
RouteListener
RouteListener for receiving route change events.
RouteListenerShutdown
Shutdown handle for the RouteListener, used to stop listening.
RouteManager
RouteManager is used for managing routes (adding, deleting, and listing).

Enums§

RouteChange