diff options
author | Matthias Andreas Benkard <code@mail.matthias.benkard.de> | 2012-04-26 13:28:24 +0200 |
---|---|---|
committer | Matthias Andreas Benkard <code@mail.matthias.benkard.de> | 2012-04-26 13:28:24 +0200 |
commit | 9bb6accec05610d4a27d1893843bad0bb5295b53 (patch) | |
tree | 79f1498a339e36fa59e549c941ba1c360b0914d6 /src/mulk/benki/xmpp.clj | |
parent | e9108275136cc6c032d9fdedc189643b2e0d91c0 (diff) |
Lafargue: Implement handling of incoming XMPP messages.
Diffstat (limited to 'src/mulk/benki/xmpp.clj')
-rw-r--r-- | src/mulk/benki/xmpp.clj | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/src/mulk/benki/xmpp.clj b/src/mulk/benki/xmpp.clj index 74c4933..5543402 100644 --- a/src/mulk/benki/xmpp.clj +++ b/src/mulk/benki/xmpp.clj @@ -16,11 +16,13 @@ (:import [org.jivesoftware.smack ConnectionConfiguration ConnectionConfiguration$SecurityMode XMPPConnection - MessageListener])) + MessageListener + ChatManagerListener])) -(defonce xmpp (atom nil)) -(defonce messages (channel)) +(defonce xmpp (atom nil)) +(defonce messages (channel)) +(defonce messages-in (channel)) (defn- connect [] @@ -63,7 +65,8 @@ recipient (reify MessageListener (processMessage [self chat message] - nil)))] + (when-let [body (.getBody message)] + (enqueue messages-in {:sender recipient, :body body})))))] (.sendMessage chat notification)))))) (defn- startup-client [] @@ -71,7 +74,21 @@ (fn [{targets :targets, msg :message}] (push-message targets msg)))) +(defn- handle-incoming-chats [] + (doto (.getChatManager @xmpp) + (.addChatListener + (reify ChatManagerListener + (chatCreated [self chat local?] + (when-not local? + (.addMessageListener + chat + (reify MessageListener + (processMessage [self chat message] + (when-let [body (.getBody message)] + (enqueue messages-in {:sender (.getParticipant chat) :body body}))))))))))) + (defn init-xmpp! [] (future (reconnect!) + (handle-incoming-chats) (startup-client))) |