diff options
author | Joey Hess <joey@kitenet.net> | 2012-11-08 16:44:23 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2012-11-08 16:46:29 -0400 |
commit | f9bf6fbcb9ef2d4afc51b60387d58db6b5cb401a (patch) | |
tree | 68a08e40f572520c24814d7bacc4271aca32b1dd /Assistant/Threads | |
parent | e146cc372b8daa70fa093c9f27cedf7188ce72fc (diff) |
xmpp push control flow
It might even work, although nothing yet triggers XMPP pushes.
Also added a set of deferred push messages. Only one push can run at a
time, and unrelated push messages get deferred. The set will never grow
very large, because it only puts two types of messages in there, that
can only vary in the client doing the push.
Diffstat (limited to 'Assistant/Threads')
-rw-r--r-- | Assistant/Threads/XMPPClient.hs | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/Assistant/Threads/XMPPClient.hs b/Assistant/Threads/XMPPClient.hs index 1117c3c14..efdecb587 100644 --- a/Assistant/Threads/XMPPClient.hs +++ b/Assistant/Threads/XMPPClient.hs @@ -93,15 +93,14 @@ xmppClient urlrenderer d = do handle _ (PresenceMessage p) = void $ inAssistant $ updateBuddyList (updateBuddies p) <<~ buddyList handle _ (GotNetMessage QueryPresence) = putStanza gitAnnexSignature - handle _ (GotNetMessage (NotifyPush us)) = void $ inAssistant $ - pull us + handle _ (GotNetMessage (NotifyPush us)) = void $ inAssistant $ pull us handle selfjid (GotNetMessage (PairingNotification stage c u)) = maybe noop (inAssistant . pairMsgReceived urlrenderer stage u selfjid) (parseJID c) - handle selfjid (GotNetMessage (PushRequest c)) = error "TODO" - handle selfjid (GotNetMessage (StartingPush c)) = error "TODO" - handle selfjid (GotNetMessage (ReceivePackOutput c b)) = error "TODO" - handle selfjid (GotNetMessage (SendPackOutput c b)) = error "TODO" - handle selfjid (GotNetMessage (ReceivePackDone c code)) = error "TODO" + handle _ (GotNetMessage m@(PushRequest _)) = inAssistant $ + unlessM (queueNetPushMessage m) $ void $ handlePush m + handle _ (GotNetMessage m@(StartingPush _)) = inAssistant $ + unlessM (queueNetPushMessage m) $ void $ handlePush m + handle _ (GotNetMessage m) = void $ inAssistant $ queueNetPushMessage m handle _ (Ignorable _) = noop handle _ (Unknown _) = noop handle _ (ProtocolError _) = noop |