diff options
| author | n1c00o <n@nc0.fr> | 2023-02-05 11:29:53 +0100 | 
|---|---|---|
| committer | Nicolas <34602094+n1c00o@users.noreply.github.com> | 2023-02-06 22:35:54 +0100 | 
| commit | 24cd243c8768452d77df349b1f0988bcab497ff1 (patch) | |
| tree | ff49e4ee9a2378481d25b36c8fb8b037212598cd /src | |
| parent | ad8afa40ffeea085e1705b455abf4379a06a5a83 (diff) | |
Deleting current code
Diffstat (limited to 'src')
| -rw-r--r-- | src/client.rs | 25 | ||||
| -rw-r--r-- | src/id_worker.rs | 62 | ||||
| -rw-r--r-- | src/main.rs | 0 | ||||
| -rw-r--r-- | src/server.rs | 63 | 
4 files changed, 0 insertions, 150 deletions
diff --git a/src/client.rs b/src/client.rs deleted file mode 100644 index 75b4c8f..0000000 --- a/src/client.rs +++ /dev/null @@ -1,25 +0,0 @@ -// !Sample implementation of a gRPC Client for Clawflake, not meant to production! - -pub mod clawflake { -  tonic::include_proto!("clawflake"); -} - -use clawflake::clawflake_client::ClawflakeClient; -use clawflake::IdRequest; - -#[tokio::main] -async fn main() -> Result<(), Box<dyn std::error::Error>> { -    let addr = "http://[::0]:50051"; - -    let mut client = ClawflakeClient::connect(addr).await?; - -    println!("Client connected to {}", addr); -    let request = tonic::Request::new(IdRequest {}); - -    println!("Trying to get an ID"); -    let response = client.get_id(request).await?; - -    println!("Received: {:?}", response); - -    Ok(()) -} diff --git a/src/id_worker.rs b/src/id_worker.rs deleted file mode 100644 index 248559f..0000000 --- a/src/id_worker.rs +++ /dev/null @@ -1,62 +0,0 @@ -use chrono::Utc; -use parking_lot::Mutex; -use std::sync::Arc; - -#[derive(Default)] -#[derive(Debug)] -pub struct IdWorker { -    epoch: i64, -    worker_id: i64, -    datacenter_id: i64, -    sequence: i64, -    time: Arc<Mutex<i64>>, -} - -impl IdWorker { -    pub fn new(epoch: i64, worker_id: i64, datacenter_id: i64) -> IdWorker { -      IdWorker { -            epoch, -            worker_id, -            datacenter_id, -            sequence: 0, -            time: Arc::new(Mutex::new(0)), -        } -    } - -    #[allow(dead_code)] -    pub fn epoch(&mut self, epoch: i64) -> &mut Self { -        self.epoch = epoch; -        self -    } - -    #[allow(dead_code)] -    pub fn worker_id(&mut self, worker_id: i64) -> &mut Self { -        self.worker_id = worker_id; -        self -    } - -    #[allow(dead_code)] -    pub fn datacenter_id(&mut self, datacenter_id: i64) -> &mut Self { -        self.datacenter_id = datacenter_id; -        self -    } - -    pub fn next_id(&mut self) -> i64 { -        let mut last_timestamp = self.time.lock(); -        let mut timestamp = self.get_time(); -        if timestamp == *last_timestamp { -            self.sequence = (self.sequence + 1) & (-1 ^ (-1 << 12)); -            if self.sequence == 0 && timestamp <= *last_timestamp { -                timestamp = self.get_time(); -            } -        } else { -            self.sequence = 0; -        } -        *last_timestamp = timestamp; -        (timestamp << 22) | (self.worker_id << 17) | (self.datacenter_id << 12) | self.sequence -    } - -    fn get_time(&self) -> i64 { -        Utc::now().timestamp_millis() - self.epoch -    } -} diff --git a/src/main.rs b/src/main.rs deleted file mode 100644 index e69de29..0000000 --- a/src/main.rs +++ /dev/null diff --git a/src/server.rs b/src/server.rs deleted file mode 100644 index 16cc044..0000000 --- a/src/server.rs +++ /dev/null @@ -1,63 +0,0 @@ -pub mod clawflake { -    tonic::include_proto!("clawflake"); -} -use clawflake::clawflake_server::{Clawflake, ClawflakeServer}; -use clawflake::{IdReply, IdRequest}; - -mod id_worker; -use id_worker::IdWorker; - -use std::env; -use std::net::SocketAddr; -use tonic::{transport::Server, Request, Response, Status}; - -#[derive(Debug, Default)] -pub struct MyClawflakeService {} - -#[tonic::async_trait] -impl Clawflake for MyClawflakeService { -    async fn get_id(&self, _: Request<IdRequest>) -> Result<Response<IdReply>, Status> { -        let mut worker: IdWorker = IdWorker::new( -            env::var("CLAWFLAKE_EPOCH") -                .expect("Missing env `CLAWFLAKE_EPOCH`") -                .parse::<i64>() -                .unwrap(), -            env::var("CLAWFLAKE_WORKER_ID") -                .expect("Missing env `CLAWFLAKE_WORKER_ID`") -                .parse::<i64>() -                .unwrap(), -            env::var("CLAWFLAKE_DATACENTER_ID") -                .expect("Missing env `CLAWFLAKE_DATACENTER_ID`") -                .parse::<i64>() -                .unwrap(), -        ); - -        let reply: IdReply = clawflake::IdReply { -            id: format!("{}", worker.next_id()).into(), -        }; - -        Ok(Response::new(reply)) -    } -} - -#[tokio::main] -async fn main() -> Result<(), Box<dyn std::error::Error>> { -    // init tonic_health -    let (mut health_reporter, health_service) = tonic_health::server::health_reporter(); -    health_reporter -        .set_serving::<ClawflakeServer<MyClawflakeService>>() -        .await; - -    // init tonic and IdWorker -    let addr: SocketAddr = "[::0]:50051".parse()?; -    let srv: MyClawflakeService = MyClawflakeService::default(); - -    println!("Server listening on {}", addr); - -    Server::builder() -        .add_service(health_service) -        .add_service(ClawflakeServer::new(srv)) -        .serve(addr) -        .await?; -    Ok(()) -}  | 
