|
|
|
|
|
|
|
|
use ruma_events::{self, room::message::*}; |
|
|
use ruma_events::{self, room::message::*}; |
|
|
use ruma_identifiers::RoomId; |
|
|
use ruma_identifiers::RoomId; |
|
|
|
|
|
|
|
|
|
|
|
use crate::client; |
|
|
use crate::config::{self, *}; |
|
|
use crate::config::{self, *}; |
|
|
use crate::sender; |
|
|
|
|
|
|
|
|
|
|
|
type MatrixClient = Client<HttpsConnector<HttpConnector<GaiResolver>>>; |
|
|
type MatrixClient = Client<HttpsConnector<HttpConnector<GaiResolver>>>; |
|
|
type MessageRequest = rumamessage::create_message_event::Request; |
|
|
type MessageRequest = rumamessage::create_message_event::Request; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
pub async fn start_spoolers( |
|
|
pub async fn start_spoolers( |
|
|
conf: Config, |
|
|
conf: Config, |
|
|
client_chans: HashMap<String, mpsc::Sender<sender::Message>>, |
|
|
|
|
|
|
|
|
client_chans: HashMap<String, mpsc::Sender<client::Message>>, |
|
|
) -> Result<(), Error> { |
|
|
) -> Result<(), Error> { |
|
|
for sd in conf.spool_dirs { |
|
|
for sd in conf.spool_dirs { |
|
|
let chan = client_chans |
|
|
let chan = client_chans |
|
|
|
|
|
|
|
|
async fn do_watch_dir( |
|
|
async fn do_watch_dir( |
|
|
inot: tokio_inotify::AsyncINotify, |
|
|
inot: tokio_inotify::AsyncINotify, |
|
|
sdc: config::SpoolDir, |
|
|
sdc: config::SpoolDir, |
|
|
mut dest: mpsc::Sender<sender::Message>, |
|
|
|
|
|
|
|
|
mut dest: mpsc::Sender<client::Message>, |
|
|
) { |
|
|
) { |
|
|
let mut iter = inot.compat(); |
|
|
let mut iter = inot.compat(); |
|
|
while let Some(ent) = iter.next().await { |
|
|
while let Some(ent) = iter.next().await { |
|
|
|
|
|
|
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
let msg = |
|
|
let msg = |
|
|
sender::Message::new_delay(sdc.dest_room_id.clone(), s, sdc.send_delay_sec); |
|
|
|
|
|
|
|
|
client::Message::new_delay(sdc.dest_room_id.clone(), s, sdc.send_delay_sec); |
|
|
let tout = time::Duration::from_secs(30); |
|
|
let tout = time::Duration::from_secs(30); |
|
|
dest.send_timeout(msg, tout) |
|
|
dest.send_timeout(msg, tout) |
|
|
.map_err(|_| ()) |
|
|
.map_err(|_| ()) |