make some requests optional, simplify and future-proof protocol more
This commit is contained in:
parent
372764ec76
commit
6d504b57e7
4 changed files with 23 additions and 21 deletions
|
@ -152,7 +152,8 @@ safely a = go =<< tryAnnex a
|
|||
return False
|
||||
|
||||
{- Sends a Request to the external remote, and waits for it to generate
|
||||
- a Response that the responsehandler accepts.
|
||||
- a Response. That is fed into the responsehandler, which should return
|
||||
- the action to run for it (or Nothing if there's a protocol error).
|
||||
-
|
||||
- While the external remote is processing the Request, it may send
|
||||
- any number of RemoteRequests, that are handled here.
|
||||
|
@ -291,7 +292,7 @@ getCost external r gc = go =<< remoteCost' gc
|
|||
go Nothing = do
|
||||
c <- handleRequest external GETCOST Nothing $ \req -> case req of
|
||||
COST c -> Just $ return c
|
||||
COST_UNKNOWN -> Just $ return expensiveRemoteCost
|
||||
UNSUPPORTED_REQUEST -> Just $ return expensiveRemoteCost
|
||||
_ -> Nothing
|
||||
setRemoteCost r c
|
||||
return c
|
||||
|
|
6
Remote/External/Types.hs
vendored
6
Remote/External/Types.hs
vendored
|
@ -118,10 +118,9 @@ data Response
|
|||
| REMOVE_SUCCESS Key
|
||||
| REMOVE_FAILURE Key ErrorMsg
|
||||
| COST Cost
|
||||
| COST_UNKNOWN
|
||||
| INITREMOTE_SUCCESS
|
||||
| INITREMOTE_FAILURE ErrorMsg
|
||||
| UNKNOWN_REQUEST
|
||||
| UNSUPPORTED_REQUEST
|
||||
deriving (Show)
|
||||
|
||||
instance Receivable Response where
|
||||
|
@ -134,10 +133,9 @@ instance Receivable Response where
|
|||
parseCommand "REMOVE-SUCCESS" = parse1 REMOVE_SUCCESS
|
||||
parseCommand "REMOVE-FAILURE" = parse2 REMOVE_FAILURE
|
||||
parseCommand "COST" = parse1 COST
|
||||
parseCommand "COST_UNKNOWN" = parse0 COST_UNKNOWN
|
||||
parseCommand "INITREMOTE-SUCCESS" = parse0 INITREMOTE_SUCCESS
|
||||
parseCommand "INITREMOTE-FAILURE" = parse1 INITREMOTE_FAILURE
|
||||
parseCommand "UNKNOWN-REQUEST" = parse0 UNKNOWN_REQUEST
|
||||
parseCommand "UNSUPPORTED-REQUEST" = parse0 UNSUPPORTED_REQUEST
|
||||
parseCommand _ = parseFail
|
||||
|
||||
-- Requests that the external remote can send at any time it's in control.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue