diff options
| author | MatthieuCoder <matthieu@matthieu-dev.xyz> | 2023-01-03 00:14:27 +0400 |
|---|---|---|
| committer | MatthieuCoder <matthieu@matthieu-dev.xyz> | 2023-01-03 00:14:27 +0400 |
| commit | 91a27342dbee8ca0478f862df93bf502337f4c6e (patch) | |
| tree | af5f4818d300934d8c9ea14896fe756fea13d578 /exes/ratelimit | |
| parent | c3e47ff0b1b06ff26830e78b7e37e212d1e47200 (diff) | |
add all in one binary
Diffstat (limited to 'exes/ratelimit')
| -rw-r--r-- | exes/ratelimit/Cargo.toml | 2 | ||||
| -rw-r--r-- | exes/ratelimit/src/lib.rs | 45 | ||||
| -rw-r--r-- | exes/ratelimit/src/main.rs | 47 |
3 files changed, 48 insertions, 46 deletions
diff --git a/exes/ratelimit/Cargo.toml b/exes/ratelimit/Cargo.toml index a28d2d0..82ca9f6 100644 --- a/exes/ratelimit/Cargo.toml +++ b/exes/ratelimit/Cargo.toml @@ -18,4 +18,4 @@ futures-util = "0.3.17" tracing = "*" serde_json = { version = "1.0" } tonic = "0.8.3" -tokio-stream = "0.1.11"
\ No newline at end of file +tokio-stream = "0.1.11" diff --git a/exes/ratelimit/src/lib.rs b/exes/ratelimit/src/lib.rs new file mode 100644 index 0000000..6d6d608 --- /dev/null +++ b/exes/ratelimit/src/lib.rs @@ -0,0 +1,45 @@ +use std::net::ToSocketAddrs; + +use futures_util::FutureExt; +use grpc::RLServer; +use leash::{AnyhowResultFuture, Component}; +use proto::nova::ratelimit::ratelimiter::ratelimiter_server::RatelimiterServer; +use redis_global_local_bucket_ratelimiter::RedisGlobalLocalBucketRatelimiter; +use shared::{config::Settings, redis_crate::Client}; +use tokio::sync::oneshot; +use tonic::transport::Server; + +mod grpc; +mod redis_global_local_bucket_ratelimiter; + +pub struct RatelimiterServerComponent {} +impl Component for RatelimiterServerComponent { + type Config = (); + const SERVICE_NAME: &'static str = "ratelimiter"; + + fn start( + &self, + settings: Settings<Self::Config>, + stop: oneshot::Receiver<()>, + ) -> AnyhowResultFuture<()> { + Box::pin(async move { + // let config = Arc::new(settings.config); + let redis: Client = settings.redis.into(); + let server = RLServer::new(RedisGlobalLocalBucketRatelimiter::new(redis.into())); + + Server::builder() + .add_service(RatelimiterServer::new(server)) + .serve_with_shutdown( + "0.0.0.0:8093".to_socket_addrs().unwrap().next().unwrap(), + stop.map(|_| ()), + ) + .await?; + + Ok(()) + }) + } + + fn new() -> Self { + Self {} + } +} diff --git a/exes/ratelimit/src/main.rs b/exes/ratelimit/src/main.rs index 0ceded2..2de812b 100644 --- a/exes/ratelimit/src/main.rs +++ b/exes/ratelimit/src/main.rs @@ -1,47 +1,4 @@ -use std::net::ToSocketAddrs; - -use futures_util::FutureExt; -use grpc::RLServer; -use leash::{ignite, AnyhowResultFuture, Component}; -use proto::nova::ratelimit::ratelimiter::ratelimiter_server::RatelimiterServer; -use redis_global_local_bucket_ratelimiter::RedisGlobalLocalBucketRatelimiter; -use shared::{config::Settings, redis_crate::Client}; -use tokio::sync::oneshot; -use tonic::transport::Server; - -mod grpc; -mod redis_global_local_bucket_ratelimiter; - -struct RatelimiterServerComponent {} -impl Component for RatelimiterServerComponent { - type Config = (); - const SERVICE_NAME: &'static str = "ratelimiter"; - - fn start( - &self, - settings: Settings<Self::Config>, - stop: oneshot::Receiver<()>, - ) -> AnyhowResultFuture<()> { - Box::pin(async move { - // let config = Arc::new(settings.config); - let redis: Client = settings.redis.into(); - let server = RLServer::new(RedisGlobalLocalBucketRatelimiter::new(redis.into())); - - Server::builder() - .add_service(RatelimiterServer::new(server)) - .serve_with_shutdown( - "0.0.0.0:8080".to_socket_addrs().unwrap().next().unwrap(), - stop.map(|_| ()), - ) - .await?; - - Ok(()) - }) - } - - fn new() -> Self { - Self {} - } -} +use leash::ignite; +use ratelimit::RatelimiterServerComponent; ignite!(RatelimiterServerComponent); |
