@@ -29,6 +29,7 @@ use axum::{
2929 } ,
3030 error_handling:: HandleErrorLayer ,
3131 extract:: {
32+ connect_info:: IntoMakeServiceWithConnectInfo ,
3233 FromRequestParts ,
3334 State ,
3435 } ,
@@ -583,6 +584,17 @@ impl ConvexHttpService {
583584 Self { router }
584585 }
585586
587+ pub async fn serve < F : Future < Output = ( ) > > (
588+ self ,
589+ addr : SocketAddr ,
590+ shutdown : F ,
591+ ) -> anyhow:: Result < ( ) > {
592+ let make_svc = self
593+ . router
594+ . into_make_service_with_connect_info :: < SocketAddr > ( ) ;
595+ serve_http ( make_svc, addr, shutdown) . await
596+ }
597+
586598 #[ cfg( any( test, feature = "testing" ) ) ]
587599 pub fn new_for_test ( router : Router < ( ) , Body > ) -> Self {
588600 Self { router }
@@ -628,7 +640,7 @@ where
628640
629641/// Serves an HTTP server using the given service.
630642pub async fn serve_http < F > (
631- service : ConvexHttpService ,
643+ service : IntoMakeServiceWithConnectInfo < Router , SocketAddr > ,
632644 addr : SocketAddr ,
633645 shutdown : F ,
634646) -> anyhow:: Result < ( ) >
@@ -652,13 +664,10 @@ where
652664 incoming_sockets. set_sleep_on_errors ( true ) ;
653665 let addr = incoming_sockets. local_addr ( ) ;
654666
655- let make_svc = service
656- . router
657- . into_make_service_with_connect_info :: < SocketAddr > ( ) ;
658667 tracing:: info!( "Listening on http://{}" , addr) ;
659668 hyper:: Server :: builder ( incoming_sockets)
660669 . http2_max_concurrent_streams ( MAX_HTTP2_STREAMS )
661- . serve ( make_svc )
670+ . serve ( service )
662671 . with_graceful_shutdown ( shutdown)
663672 . await ?;
664673 tracing:: info!( "HTTP server shutdown complete" ) ;
0 commit comments