Skip to content

Commit

Permalink
Use a vecdequeue
Browse files Browse the repository at this point in the history
  • Loading branch information
jkelleyrtp committed Apr 4, 2024
1 parent 86dc758 commit 50d1a6d
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions packages/desktop/src/edits.rs
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
use std::{cell::RefCell, rc::Rc};
use std::{cell::RefCell, collections::VecDeque, rc::Rc};

/// This handles communication between the requests that the webview makes and the interpreter. The interpreter constantly makes long running requests to the webview to get any edits that should be made to the DOM almost like server side events.
/// It will hold onto the requests until the interpreter is ready to handle them and hold onto any pending edits until a new request is made.
#[derive(Default, Clone)]
pub(crate) struct EditQueue {
queue: Rc<RefCell<Vec<Vec<u8>>>>,
queue: Rc<RefCell<VecDeque<Vec<u8>>>>,
responder: Rc<RefCell<Option<wry::RequestAsyncResponder>>>,
}

impl EditQueue {
pub fn handle_request(&self, responder: wry::RequestAsyncResponder) {
let mut queue = self.queue.borrow_mut();
if let Some(bytes) = queue.pop() {
if let Some(bytes) = queue.pop_back() {
responder.respond(wry::http::Response::new(bytes));
} else {
*self.responder.borrow_mut() = Some(responder);
Expand All @@ -23,7 +23,7 @@ impl EditQueue {
if let Some(responder) = responder.take() {
responder.respond(wry::http::Response::new(edits));
} else {
self.queue.borrow_mut().push(edits);
self.queue.borrow_mut().push_front(edits);
}
}
}

0 comments on commit 50d1a6d

Please sign in to comment.