diff options
author | fiaxh <git@mx.ax.lt> | 2017-03-10 17:01:45 +0100 |
---|---|---|
committer | fiaxh <git@mx.ax.lt> | 2017-03-10 17:11:25 +0100 |
commit | 2fe8489d368a371aefbfbe66e74621a8df14cdc2 (patch) | |
tree | 4dec90236b28101383753ffe4a1c7a34b09b0208 /xmpp-vala/src/module/message/module.vala | |
parent | 7a1aa8c806a63cfd031c082524501e26d4a181ee (diff) | |
download | dino-2fe8489d368a371aefbfbe66e74621a8df14cdc2.tar.gz dino-2fe8489d368a371aefbfbe66e74621a8df14cdc2.zip |
Rename vala-xmpp library to xmpp-vala
Diffstat (limited to 'xmpp-vala/src/module/message/module.vala')
-rw-r--r-- | xmpp-vala/src/module/message/module.vala | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/xmpp-vala/src/module/message/module.vala b/xmpp-vala/src/module/message/module.vala new file mode 100644 index 00000000..10d83693 --- /dev/null +++ b/xmpp-vala/src/module/message/module.vala @@ -0,0 +1,50 @@ +using Gee; + +using Xmpp.Core; + +namespace Xmpp.Message { + private const string NS_URI = "jabber:client"; + + public class Module : XmppStreamModule { + public const string ID = "message_module"; + + public signal void pre_send_message(XmppStream stream, Message.Stanza message); + public signal void pre_received_message(XmppStream stream, Message.Stanza message); + public signal void received_message(XmppStream stream, Message.Stanza message); + + public void send_message(XmppStream stream, Message.Stanza message) { + pre_send_message(stream, message); + stream.write(message.stanza); + } + + public void received_message_stanza(XmppStream stream, StanzaNode node) { + Message.Stanza message = new Message.Stanza.from_stanza(node, Bind.Flag.get_flag(stream).my_jid); + do { + message.rerun_parsing = false; + pre_received_message(stream, message); + } while(message.rerun_parsing); + received_message(stream, message); + } + + public static Module? get_module(XmppStream stream) { + return (Module?) stream.get_module(NS_URI, ID); + } + + public static void require(XmppStream stream) { + if (get_module(stream) == null) stream.add_module(new Message.Module()); + } + + public override void attach(XmppStream stream) { + Bind.Module.require(stream); + stream.received_message_stanza.connect(received_message_stanza); + } + + public override void detach(XmppStream stream) { + stream.received_message_stanza.disconnect(received_message_stanza); + } + + public override string get_ns() { return NS_URI; } + public override string get_id() { return ID; } + } + +} |