add HTTP server to the relay server for debugging
							parent
							
								
									584654a6b4
								
							
						
					
					
						commit
						5ffdb5800d
					
				| 
						 | 
					@ -1328,6 +1328,7 @@ dependencies = [
 | 
				
			||||||
 "anyhow",
 | 
					 "anyhow",
 | 
				
			||||||
 "base64",
 | 
					 "base64",
 | 
				
			||||||
 "futures-util",
 | 
					 "futures-util",
 | 
				
			||||||
 | 
					 "hyper",
 | 
				
			||||||
 "quinn",
 | 
					 "quinn",
 | 
				
			||||||
 "rcgen",
 | 
					 "rcgen",
 | 
				
			||||||
 "rmp-serde",
 | 
					 "rmp-serde",
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -12,6 +12,7 @@ anyhow = "1.0.38"
 | 
				
			||||||
base64 = "0.13.0"
 | 
					base64 = "0.13.0"
 | 
				
			||||||
# fltk = "1.1.1"
 | 
					# fltk = "1.1.1"
 | 
				
			||||||
futures-util = "0.3.9"
 | 
					futures-util = "0.3.9"
 | 
				
			||||||
 | 
					hyper = { version = "0.14.4", features = ["http1", "server", "stream", "tcp"] }
 | 
				
			||||||
quinn = "0.7.2"
 | 
					quinn = "0.7.2"
 | 
				
			||||||
rcgen = "0.8.11"
 | 
					rcgen = "0.8.11"
 | 
				
			||||||
rmp-serde = "0.15.5"
 | 
					rmp-serde = "0.15.5"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,3 +1,14 @@
 | 
				
			||||||
 | 
					use hyper::{
 | 
				
			||||||
 | 
						Body,
 | 
				
			||||||
 | 
						Request,
 | 
				
			||||||
 | 
						Response,
 | 
				
			||||||
 | 
						Server,
 | 
				
			||||||
 | 
						service::{
 | 
				
			||||||
 | 
							make_service_fn,
 | 
				
			||||||
 | 
							service_fn,
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
						StatusCode,
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
use structopt::StructOpt;
 | 
					use structopt::StructOpt;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use quic_demo::prelude::*;
 | 
					use quic_demo::prelude::*;
 | 
				
			||||||
| 
						 | 
					@ -23,6 +34,26 @@ async fn main () -> anyhow::Result <()> {
 | 
				
			||||||
	let relay_state = RelayState::default ();
 | 
						let relay_state = RelayState::default ();
 | 
				
			||||||
	let relay_state = Arc::new (relay_state);
 | 
						let relay_state = Arc::new (relay_state);
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 | 
						let make_svc = make_service_fn (|_conn| {
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							async {
 | 
				
			||||||
 | 
								Ok::<_, String> (service_fn (move |req| {
 | 
				
			||||||
 | 
									
 | 
				
			||||||
 | 
									
 | 
				
			||||||
 | 
									handle_http (req, ())
 | 
				
			||||||
 | 
								}))
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						});
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						let http_addr = SocketAddr::from (([0, 0, 0, 0], 4004));
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						let http_server = Server::bind (&http_addr);
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						tokio::spawn (async move {
 | 
				
			||||||
 | 
							http_server.serve (make_svc).await
 | 
				
			||||||
 | 
						});
 | 
				
			||||||
 | 
						
 | 
				
			||||||
	while let Some (conn) = incoming.next ().await {
 | 
						while let Some (conn) = incoming.next ().await {
 | 
				
			||||||
		let relay_state = Arc::clone (&relay_state);
 | 
							let relay_state = Arc::clone (&relay_state);
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
| 
						 | 
					@ -44,6 +75,17 @@ async fn main () -> anyhow::Result <()> {
 | 
				
			||||||
	Ok (())
 | 
						Ok (())
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					async fn handle_http (req: Request <Body>, _state: ())
 | 
				
			||||||
 | 
					-> anyhow::Result <Response <Body>>
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						let resp = Response::builder ()
 | 
				
			||||||
 | 
						.status (StatusCode::OK)
 | 
				
			||||||
 | 
						.header ("content-type", "text/plain")
 | 
				
			||||||
 | 
						.body (Body::from ("pong\n"))?;
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						Ok (resp)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#[derive (Default)]
 | 
					#[derive (Default)]
 | 
				
			||||||
struct RelayState {
 | 
					struct RelayState {
 | 
				
			||||||
	p4_server_proxies: Mutex <HashMap <PeerId, P4State>>,
 | 
						p4_server_proxies: Mutex <HashMap <PeerId, P4State>>,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,6 @@
 | 
				
			||||||
pub use std::{
 | 
					pub use std::{
 | 
				
			||||||
	collections::*,
 | 
						collections::*,
 | 
				
			||||||
 | 
						net::SocketAddr,
 | 
				
			||||||
	sync::{
 | 
						sync::{
 | 
				
			||||||
		Arc,
 | 
							Arc,
 | 
				
			||||||
		atomic::{
 | 
							atomic::{
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue