mirror of
https://gitlab.com/xmpp-rs/xmpp-rs.git
synced 2024-07-12 22:21:53 +00:00
add register_handler to Client
This commit is contained in:
parent
c326d5b07e
commit
11c99ec387
2 changed files with 13 additions and 11 deletions
|
@ -5,6 +5,7 @@ use xmpp::client::ClientBuilder;
|
||||||
use xmpp::plugins::messaging::{MessagingPlugin, MessageEvent};
|
use xmpp::plugins::messaging::{MessagingPlugin, MessageEvent};
|
||||||
use xmpp::plugins::presence::{PresencePlugin, Show};
|
use xmpp::plugins::presence::{PresencePlugin, Show};
|
||||||
use xmpp::plugins::ping::{PingPlugin, PingEvent};
|
use xmpp::plugins::ping::{PingPlugin, PingEvent};
|
||||||
|
use xmpp::event::{Priority, Propagation};
|
||||||
|
|
||||||
use std::env;
|
use std::env;
|
||||||
|
|
||||||
|
@ -18,16 +19,10 @@ fn main() {
|
||||||
client.register_plugin(MessagingPlugin::new());
|
client.register_plugin(MessagingPlugin::new());
|
||||||
client.register_plugin(PresencePlugin::new());
|
client.register_plugin(PresencePlugin::new());
|
||||||
client.register_plugin(PingPlugin::new());
|
client.register_plugin(PingPlugin::new());
|
||||||
|
client.register_handler(Priority::Max, |e: &MessageEvent| {
|
||||||
|
println!("{:?}", e);
|
||||||
|
Propagation::Continue
|
||||||
|
});
|
||||||
client.plugin::<PresencePlugin>().set_presence(Show::Available, None).unwrap();
|
client.plugin::<PresencePlugin>().set_presence(Show::Available, None).unwrap();
|
||||||
client.main().unwrap();
|
client.main().unwrap();
|
||||||
/*loop {
|
|
||||||
let event = client.next_event().unwrap();
|
|
||||||
if let Some(evt) = event.downcast::<MessageEvent>() {
|
|
||||||
println!("{:?}", evt);
|
|
||||||
}
|
|
||||||
else if let Some(evt) = event.downcast::<PingEvent>() {
|
|
||||||
println!("{:?}", evt);
|
|
||||||
client.plugin::<PingPlugin>().reply_ping(evt);
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,7 +11,7 @@ use sasl::common::{Credentials as SaslCredentials, Identity, Secret, ChannelBind
|
||||||
use sasl::common::scram::{Sha1, Sha256};
|
use sasl::common::scram::{Sha1, Sha256};
|
||||||
use components::sasl_error::SaslError;
|
use components::sasl_error::SaslError;
|
||||||
use util::FromElement;
|
use util::FromElement;
|
||||||
use event::{Dispatcher, Propagation, SendElement, ReceiveElement, Priority};
|
use event::{Event, Dispatcher, Propagation, SendElement, ReceiveElement, Priority};
|
||||||
|
|
||||||
use base64;
|
use base64;
|
||||||
|
|
||||||
|
@ -128,6 +128,13 @@ impl Client {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn register_handler<E, F>(&mut self, pri: Priority, func: F)
|
||||||
|
where
|
||||||
|
E: Event,
|
||||||
|
F: Fn(&E) -> Propagation + 'static {
|
||||||
|
self.dispatcher.lock().unwrap().register(pri, func);
|
||||||
|
}
|
||||||
|
|
||||||
/// Returns the plugin given by the type parameter, if it exists, else panics.
|
/// Returns the plugin given by the type parameter, if it exists, else panics.
|
||||||
pub fn plugin<P: Plugin>(&self) -> &P {
|
pub fn plugin<P: Plugin>(&self) -> &P {
|
||||||
self.plugins.get(&TypeId::of::<P>())
|
self.plugins.get(&TypeId::of::<P>())
|
||||||
|
|
Loading…
Reference in a new issue