Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'lib/lsp-server/src/req_queue.rs')
| -rw-r--r-- | lib/lsp-server/src/req_queue.rs | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/lib/lsp-server/src/req_queue.rs b/lib/lsp-server/src/req_queue.rs index 1f3d447153..e5f19be20b 100644 --- a/lib/lsp-server/src/req_queue.rs +++ b/lib/lsp-server/src/req_queue.rs @@ -35,6 +35,7 @@ impl<I> Incoming<I> { pub fn register(&mut self, id: RequestId, data: I) { self.pending.insert(id, data); } + pub fn cancel(&mut self, id: RequestId) -> Option<Response> { let _data = self.complete(id.clone())?; let error = ResponseError { @@ -44,9 +45,14 @@ impl<I> Incoming<I> { }; Some(Response { id, result: None, error: Some(error) }) } + pub fn complete(&mut self, id: RequestId) -> Option<I> { self.pending.remove(&id) } + + pub fn is_completed(&self, id: &RequestId) -> bool { + !self.pending.contains_key(id) + } } impl<O> Outgoing<O> { @@ -56,6 +62,7 @@ impl<O> Outgoing<O> { self.next_id += 1; Request::new(id, method, params) } + pub fn complete(&mut self, id: RequestId) -> Option<O> { self.pending.remove(&id) } |