library_usage/
library_usage.rs

1use axum::Router;
2use phantom_frame::{cache::RefreshTrigger, create_proxy};
3
4#[tokio::main]
5async fn main() {
6    // Initialize tracing (optional but recommended)
7    // tracing_subscriber::fmt::init();
8
9    // Create proxy - proxy_url is the backend server to proxy requests to
10    let (proxy_app, refresh_trigger): (Router, RefreshTrigger) =
11        create_proxy("http://localhost:8080".to_string());
12
13    // You can clone and use the refresh_trigger in your code
14    let trigger_clone = refresh_trigger.clone();
15
16    // Example: Trigger cache refresh from another part of your application
17    tokio::spawn(async move {
18        tokio::time::sleep(tokio::time::Duration::from_secs(60)).await;
19        trigger_clone.trigger();
20        println!("Cache refreshed!");
21    });
22
23    // Start the proxy server
24    let listener = tokio::net::TcpListener::bind("0.0.0.0:3000").await.unwrap();
25
26    println!("Proxy server listening on http://0.0.0.0:3000");
27
28    axum::serve(listener, proxy_app).await.unwrap();
29}