|
|
@ -84,7 +84,7 @@ pub enum SendingEventType {
|
|
|
|
pub struct Sending {
|
|
|
|
pub struct Sending {
|
|
|
|
/// The state for a given state hash.
|
|
|
|
/// The state for a given state hash.
|
|
|
|
pub(super) servername_educount: Arc<dyn Tree>, // EduCount: Count of last EDU sync
|
|
|
|
pub(super) servername_educount: Arc<dyn Tree>, // EduCount: Count of last EDU sync
|
|
|
|
pub(super) servernameevent_data: Arc<dyn Tree>, // ServernamEvent = (+ / $)SenderKey / ServerName / UserId + PduId / Id (for edus), Data = EDU content
|
|
|
|
pub(super) servernameevent_data: Arc<dyn Tree>, // ServernameEvent = (+ / $)SenderKey / ServerName / UserId + PduId / Id (for edus), Data = EDU content
|
|
|
|
pub(super) servercurrentevent_data: Arc<dyn Tree>, // ServerCurrentEvents = (+ / $)ServerName / UserId + PduId / Id (for edus), Data = EDU content
|
|
|
|
pub(super) servercurrentevent_data: Arc<dyn Tree>, // ServerCurrentEvents = (+ / $)ServerName / UserId + PduId / Id (for edus), Data = EDU content
|
|
|
|
pub(super) maximum_requests: Arc<Semaphore>,
|
|
|
|
pub(super) maximum_requests: Arc<Semaphore>,
|
|
|
|
pub sender: mpsc::UnboundedSender<(Vec<u8>, Vec<u8>)>,
|
|
|
|
pub sender: mpsc::UnboundedSender<(Vec<u8>, Vec<u8>)>,
|
|
|
@ -423,13 +423,23 @@ impl Sending {
|
|
|
|
Ok(())
|
|
|
|
Ok(())
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#[tracing::instrument(skip(self, server, pdu_id))]
|
|
|
|
#[tracing::instrument(skip(self, servers, pdu_id))]
|
|
|
|
pub fn send_pdu(&self, server: &ServerName, pdu_id: &[u8]) -> Result<()> {
|
|
|
|
pub fn send_pdu<I: Iterator<Item = Box<ServerName>>>(
|
|
|
|
let mut key = server.as_bytes().to_vec();
|
|
|
|
&self,
|
|
|
|
key.push(0xff);
|
|
|
|
servers: I,
|
|
|
|
key.extend_from_slice(pdu_id);
|
|
|
|
pdu_id: &[u8],
|
|
|
|
self.servernameevent_data.insert(&key, &[])?;
|
|
|
|
) -> Result<()> {
|
|
|
|
self.sender.unbounded_send((key, vec![])).unwrap();
|
|
|
|
let mut batch = servers.map(|server| {
|
|
|
|
|
|
|
|
let mut key = server.as_bytes().to_vec();
|
|
|
|
|
|
|
|
key.push(0xff);
|
|
|
|
|
|
|
|
key.extend_from_slice(pdu_id);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
self.sender.unbounded_send((key.clone(), vec![])).unwrap();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(key, Vec::new())
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
self.servernameevent_data.insert_batch(&mut batch)?;
|
|
|
|
|
|
|
|
|
|
|
|
Ok(())
|
|
|
|
Ok(())
|
|
|
|
}
|
|
|
|
}
|
|
|
|