aboutsummaryrefslogtreecommitdiff
path: root/xmpp-vala/src/module/message/module.vala
diff options
context:
space:
mode:
authorfiaxh <git@mx.ax.lt>2017-03-10 17:01:45 +0100
committerfiaxh <git@mx.ax.lt>2017-03-10 17:11:25 +0100
commit2fe8489d368a371aefbfbe66e74621a8df14cdc2 (patch)
tree4dec90236b28101383753ffe4a1c7a34b09b0208 /xmpp-vala/src/module/message/module.vala
parent7a1aa8c806a63cfd031c082524501e26d4a181ee (diff)
downloaddino-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.vala50
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; }
+ }
+
+}