feat(proto): request / response pair tracking by assigning id
This commit is contained in:
20
server/crates/arbiter-server/src/grpc/request_tracker.rs
Normal file
20
server/crates/arbiter-server/src/grpc/request_tracker.rs
Normal file
@@ -0,0 +1,20 @@
|
||||
use tonic::Status;
|
||||
|
||||
#[derive(Default)]
|
||||
pub struct RequestTracker {
|
||||
next_request_id: i32,
|
||||
}
|
||||
|
||||
impl RequestTracker {
|
||||
pub fn request(&mut self, id: i32) -> Result<i32, Status> {
|
||||
if id < self.next_request_id {
|
||||
return Err(Status::invalid_argument("Duplicate request id"));
|
||||
}
|
||||
|
||||
self.next_request_id = id
|
||||
.checked_add(1)
|
||||
.ok_or_else(|| Status::invalid_argument("Invalid request id"))?;
|
||||
|
||||
Ok(id)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user