Skip to content

Commit 700b80a

Browse files
authored
Bind a console server to tonic without spawning a server
1 parent 2617504 commit 700b80a

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

console-subscriber/src/lib.rs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ use tokio::net::UnixListener;
1818
use tokio::sync::{mpsc, oneshot};
1919
#[cfg(unix)]
2020
use tokio_stream::wrappers::UnixListenerStream;
21+
use tonic::transport::server::Router;
2122
use tracing_core::{
2223
span::{self, Id},
2324
subscriber::{self, Subscriber},
@@ -988,6 +989,19 @@ impl Server {
988989
aggregate.abort();
989990
res?.map_err(Into::into)
990991
}
992+
993+
/// Starts the aggregator and set-up the [`tonic`] gRPC transport server `builder`.
994+
///
995+
/// [`tonic`]: https://docs.rs/tonic/
996+
pub fn bind(mut self, mut builder: tonic::transport::Server) -> Router {
997+
let aggregate = self
998+
.aggregator
999+
.take()
1000+
.expect("cannot start server multiple times");
1001+
let _ = spawn_named(aggregate.run(), "console::aggregate");
1002+
let srv = proto::instrument::instrument_server::InstrumentServer::new(self);
1003+
builder.add_service(srv)
1004+
}
9911005
}
9921006

9931007
#[tonic::async_trait]

0 commit comments

Comments
 (0)