summaryrefslogtreecommitdiff
path: root/Assistant/XMPP.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2013-04-10 18:39:56 -0400
committerGravatar Joey Hess <joey@kitenet.net>2013-04-10 18:39:56 -0400
commit9a418f32746c551833136726c052ea2d9549538a (patch)
treec2d7806cbf23b4220b5cc8f56fb2f4634d772c01 /Assistant/XMPP.hs
parent8102072f091e394e9e4dbae515c9965b34745563 (diff)
assistant: Added sequence numbers to XMPP git push packets. (Not yet used.)
For backwards compatability, "" is treated as "0" sequence number. --debug will show xmpp sequence numbers now, but they are not otherwise used.
Diffstat (limited to 'Assistant/XMPP.hs')
-rw-r--r--Assistant/XMPP.hs22
1 files changed, 12 insertions, 10 deletions
diff --git a/Assistant/XMPP.hs b/Assistant/XMPP.hs
index 2c0004403..01d42ba9b 100644
--- a/Assistant/XMPP.hs
+++ b/Assistant/XMPP.hs
@@ -134,13 +134,13 @@ pushMessage = gitAnnexMessage . encode
encode CanPush = gitAnnexTag canPushAttr T.empty
encode PushRequest = gitAnnexTag pushRequestAttr T.empty
encode StartingPush = gitAnnexTag startingPushAttr T.empty
- encode (ReceivePackOutput b) =
- gitAnnexTagContent receivePackAttr T.empty $ encodeTagContent b
- encode (SendPackOutput b) =
- gitAnnexTagContent sendPackAttr T.empty $ encodeTagContent b
+ encode (ReceivePackOutput n b) =
+ gitAnnexTagContent receivePackAttr (val n) $ encodeTagContent b
+ encode (SendPackOutput n b) =
+ gitAnnexTagContent sendPackAttr (val n) $ encodeTagContent b
encode (ReceivePackDone code) =
- gitAnnexTag receivePackDoneAttr $
- T.pack $ show $ encodeExitCode code
+ gitAnnexTag receivePackDoneAttr $ val $ encodeExitCode code
+ val = T.pack . show
decodeMessage :: Message -> Maybe NetMessage
decodeMessage m = decode =<< gitAnnexTagInfo m
@@ -160,10 +160,8 @@ decodeMessage m = decode =<< gitAnnexTagInfo m
, pushdecoder $ const $ Just CanPush
, pushdecoder $ const $ Just PushRequest
, pushdecoder $ const $ Just StartingPush
- , pushdecoder $
- fmap ReceivePackOutput . decodeTagContent . tagElement
- , pushdecoder $
- fmap SendPackOutput . decodeTagContent . tagElement
+ , pushdecoder $ gen ReceivePackOutput
+ , pushdecoder $ gen SendPackOutput
, pushdecoder $
fmap (ReceivePackDone . decodeExitCode) . readish .
T.unpack . tagValue
@@ -171,6 +169,10 @@ decodeMessage m = decode =<< gitAnnexTagInfo m
pushdecoder a m' i = Pushing
<$> (formatJID <$> messageFrom m')
<*> a i
+ gen c i = do
+ packet <- decodeTagContent $ tagElement i
+ let sequence = fromMaybe 0 $ readish $ T.unpack $ tagValue i
+ return $ c sequence packet
decodeExitCode :: Int -> ExitCode
decodeExitCode 0 = ExitSuccess