diff --git a/build.rs b/build.rs index e95836e..4ac4eec 100644 --- a/build.rs +++ b/build.rs @@ -1,10 +1,12 @@ fn main() -> Result<(), Box> { - // tonic_build::compile_protos("opentelemetry-proto/opentelemetry/proto/trace/v1/trace.proto")?; - tonic_build::configure() + // .build_client(false) + .out_dir("src/api") + .include_file("mod.rs") .build_client(false) + .build_server(true) .compile_protos( - &["opentelemetry-proto/opentelemetry/proto/trace/v1/trace.proto"], + &["opentelemetry-proto/opentelemetry/proto/collector/trace/v1/trace_service.proto"], &["opentelemetry-proto/"], )?; Ok(()) diff --git a/src/main.rs b/src/main.rs index e7a11a9..48939c2 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,3 +1,33 @@ -fn main() { - println!("Hello, world!"); +mod api; + +use api::opentelemetry::proto::collector::trace::v1::{ + ExportTraceServiceRequest, ExportTraceServiceResponse, + trace_service_server::{TraceService, TraceServiceServer}, +}; +use tonic::{Request, Response, Status, transport::Server}; + +struct Service; + +#[tonic::async_trait] +impl TraceService for Service { + async fn export( + &self, + request: Request, + ) -> Result, Status> { + println!("Received request: {:?}", request); + Ok(Response::new(ExportTraceServiceResponse::default())) + } +} + +#[tokio::main] +async fn main() -> Result<(), Box> { + let address = "[::1]:4317".parse()?; + let service = Service; + + Server::builder() + .add_service(TraceServiceServer::new(service)) + .serve(address) + .await?; + + Ok(()) }