Merge branch 'gen_id' into 'master'
Add a gen_id method for plugins to generate ids See merge request !19
This commit is contained in:
commit
4be13c1c01
4 changed files with 14 additions and 5 deletions
|
@ -8,6 +8,8 @@ use std::collections::HashMap;
|
|||
|
||||
use std::sync::{RwLock, Arc};
|
||||
|
||||
use std::sync::atomic::{AtomicUsize, Ordering, ATOMIC_USIZE_INIT};
|
||||
|
||||
use std::marker::PhantomData;
|
||||
|
||||
use std::ops::Deref;
|
||||
|
@ -73,6 +75,7 @@ pub struct PluginProxyBinding {
|
|||
dispatcher: Arc<Dispatcher>,
|
||||
plugin_container: Arc<PluginContainer>,
|
||||
jid: Jid,
|
||||
next_id: Arc<AtomicUsize>,
|
||||
}
|
||||
|
||||
impl PluginProxyBinding {
|
||||
|
@ -81,6 +84,7 @@ impl PluginProxyBinding {
|
|||
dispatcher: dispatcher,
|
||||
plugin_container: plugin_container,
|
||||
jid: jid,
|
||||
next_id: Arc::new(ATOMIC_USIZE_INIT),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -152,6 +156,13 @@ impl PluginProxy {
|
|||
binding.jid.clone()
|
||||
})
|
||||
}
|
||||
|
||||
/// Get a new id.
|
||||
pub fn gen_id(&self) -> String {
|
||||
self.with_binding(|binding| {
|
||||
format!("{}", binding.next_id.fetch_add(1, Ordering::SeqCst))
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
/// A trait whch all plugins should implement.
|
||||
|
|
|
@ -67,8 +67,7 @@ impl MessagingPlugin {
|
|||
from: None,
|
||||
to: Some(to.clone()),
|
||||
type_: MessageType::Chat,
|
||||
// TODO: always use an id.
|
||||
id: None,
|
||||
id: Some(self.proxy.gen_id()),
|
||||
bodies: {
|
||||
let mut bodies = BTreeMap::new();
|
||||
bodies.insert(String::new(), String::from(body));
|
||||
|
|
|
@ -53,8 +53,7 @@ impl PingPlugin {
|
|||
self.proxy.send(Iq {
|
||||
from: None,
|
||||
to: Some(to),
|
||||
// TODO: use a generic way to generate ids.
|
||||
id: Some(String::from("id")),
|
||||
id: Some(self.proxy.gen_id()),
|
||||
payload: IqType::Get(IqPayload::Ping(Ping).into()),
|
||||
}.into());
|
||||
Ok(())
|
||||
|
|
|
@ -20,7 +20,7 @@ impl PresencePlugin {
|
|||
let presence = Presence {
|
||||
from: None,
|
||||
to: None,
|
||||
id: None,
|
||||
id: Some(self.proxy.gen_id()),
|
||||
type_: type_,
|
||||
show: show,
|
||||
priority: 0i8,
|
||||
|
|
Loading…
Reference in a new issue