mirror of
https://github.com/nullishamy/ferri.git
synced 2025-06-28 00:54:17 +00:00
feat: queue infra
This commit is contained in:
parent
2270324711
commit
4b88100373
4 changed files with 77 additions and 3 deletions
|
@ -12,6 +12,9 @@ pub use user::*;
|
|||
mod post;
|
||||
pub use post::*;
|
||||
|
||||
mod request_queue;
|
||||
pub use request_queue::*;
|
||||
|
||||
pub const AS_CONTEXT: &str = "https://www.w3.org/ns/activitystreams";
|
||||
|
||||
pub fn new_id() -> String {
|
||||
|
|
56
ferri-main/src/ap/request_queue.rs
Normal file
56
ferri-main/src/ap/request_queue.rs
Normal file
|
@ -0,0 +1,56 @@
|
|||
use std::sync::mpsc;
|
||||
use std::thread;
|
||||
use tracing::{debug, info, span, Level};
|
||||
|
||||
#[derive(Debug)]
|
||||
pub enum QueueMessage {
|
||||
Heartbeat
|
||||
}
|
||||
|
||||
pub struct RequestQueue {
|
||||
name: &'static str,
|
||||
send: mpsc::Sender<QueueMessage>,
|
||||
recv: mpsc::Receiver<QueueMessage>
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct QueueHandle {
|
||||
send: mpsc::Sender<QueueMessage>
|
||||
}
|
||||
|
||||
impl QueueHandle {
|
||||
pub fn send(&self, msg: QueueMessage) {
|
||||
self.send.send(msg).unwrap();
|
||||
}
|
||||
}
|
||||
|
||||
impl RequestQueue {
|
||||
pub fn new(name: &'static str) -> Self {
|
||||
let (send, recv) = mpsc::channel();
|
||||
Self {
|
||||
name,
|
||||
send,
|
||||
recv
|
||||
}
|
||||
}
|
||||
|
||||
pub fn spawn(self) -> QueueHandle {
|
||||
info!("starting up queue '{}'", self.name);
|
||||
|
||||
thread::spawn(move || {
|
||||
info!("queue '{}' up", self.name);
|
||||
let recv = self.recv;
|
||||
|
||||
while let Ok(req) = recv.recv() {
|
||||
let s = span!(Level::INFO, "queue", queue_name = self.name);
|
||||
let _enter = s.enter();
|
||||
|
||||
info!(?req, "got a message into the queue");
|
||||
|
||||
drop(_enter);
|
||||
}
|
||||
});
|
||||
|
||||
QueueHandle { send: self.send }
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue