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.rs14
1 files changed, 14 insertions, 0 deletions
diff --git a/lib/lsp-server/src/req_queue.rs b/lib/lsp-server/src/req_queue.rs
index c216864bee..84748bbca8 100644
--- a/lib/lsp-server/src/req_queue.rs
+++ b/lib/lsp-server/src/req_queue.rs
@@ -18,6 +18,12 @@ impl<I, O> Default for ReqQueue<I, O> {
}
}
+impl<I, O> ReqQueue<I, O> {
+ pub fn has_pending(&self) -> bool {
+ self.incoming.has_pending() || self.outgoing.has_pending()
+ }
+}
+
#[derive(Debug)]
pub struct Incoming<I> {
pending: HashMap<RequestId, I>,
@@ -51,6 +57,10 @@ impl<I> Incoming<I> {
pub fn is_completed(&self, id: &RequestId) -> bool {
!self.pending.contains_key(id)
}
+
+ pub fn has_pending(&self) -> bool {
+ !self.pending.is_empty()
+ }
}
impl<O> Outgoing<O> {
@@ -64,4 +74,8 @@ impl<O> Outgoing<O> {
pub fn complete(&mut self, id: RequestId) -> Option<O> {
self.pending.remove(&id)
}
+
+ pub fn has_pending(&self) -> bool {
+ !self.pending.is_empty()
+ }
}