External special remote protocol now includes commands for setting and getting the urls associated with a key.

This commit is contained in:
Joey Hess 2014-12-08 13:32:27 -04:00
parent 689acbca99
commit 8093008ef4
6 changed files with 30 additions and 3 deletions

View file

@ -19,6 +19,7 @@ import Utility.Metered
import Logs.Transfer
import Logs.PreferredContent.Raw
import Logs.RemoteState
import Logs.Web
import Config.Cost
import Annex.UUID
import Creds
@ -215,6 +216,11 @@ handleRequest' lck external req mp responsehandler
state <- fromMaybe ""
<$> getRemoteState (externalUUID external) key
send $ VALUE state
handleRemoteRequest (SETURLPRESENT key url) = setUrlPresent key url
handleRemoteRequest (SETURLMISSING key url) = setUrlMissing key url
handleRemoteRequest (GETURLS key prefix) = do
mapM_ (send . VALUE) =<< getUrlsWithPrefix key prefix
send (VALUE "") -- end of list
handleRemoteRequest (DEBUG msg) = liftIO $ debugM "external" msg
handleRemoteRequest (VERSION _) =
sendMessage lck external $ ERROR "too late to send VERSION"

View file

@ -165,6 +165,9 @@ data RemoteRequest
| GETWANTED
| SETSTATE Key String
| GETSTATE Key
| SETURLPRESENT Key String
| SETURLMISSING Key String
| GETURLS Key String
| DEBUG String
deriving (Show)
@ -182,6 +185,9 @@ instance Proto.Receivable RemoteRequest where
parseCommand "GETWANTED" = Proto.parse0 GETWANTED
parseCommand "SETSTATE" = Proto.parse2 SETSTATE
parseCommand "GETSTATE" = Proto.parse1 GETSTATE
parseCommand "SETURLPRESENT" = Proto.parse2 SETURLPRESENT
parseCommand "SETURLMISSING" = Proto.parse2 SETURLMISSING
parseCommand "GETURLS" = Proto.parse2 GETURLS
parseCommand "DEBUG" = Proto.parse1 DEBUG
parseCommand _ = Proto.parseFail