aboutsummaryrefslogtreecommitdiff
path: root/Command
diff options
context:
space:
mode:
authorGravatar Joey Hess <joeyh@joeyh.name>2018-03-08 16:21:16 -0400
committerGravatar Joey Hess <joeyh@joeyh.name>2018-03-08 16:56:17 -0400
commitfa3db5c4d3704da5b4a7ffeb0b637f8f5dfda616 (patch)
tree9d53e0e8e5732b108168121cb7327ca6d5caf952 /Command
parent2fb88331a17b0800dbf7272357e885ceb90da38a (diff)
use P2P protocol for drop
Not yet used for everything else, but this is enough to verify that it works, and do some benchmarking. Some bugfixes included, which got it working. Also fallback to old actions has been verified to work correctly. Benchmarked dropping one thousand files from a ssh remote on localhost. Using the old git-annex 40.867 seconds. With the P2P protocol 9.905 seconds! This commit was sponsored by Jochen Bartl on Patreon.
Diffstat (limited to 'Command')
-rw-r--r--Command/P2PStdIO.hs13
1 files changed, 5 insertions, 8 deletions
diff --git a/Command/P2PStdIO.hs b/Command/P2PStdIO.hs
index 73c38b906..cb7e54f28 100644
--- a/Command/P2PStdIO.hs
+++ b/Command/P2PStdIO.hs
@@ -14,25 +14,22 @@ import qualified P2P.Protocol as P2P
import qualified Annex
import Annex.UUID
import qualified CmdLine.GitAnnexShell.Checks as Checks
-import qualified CmdLine.GitAnnexShell.Fields as Fields
cmd :: Command
cmd = noMessages $ command "p2pstdio" SectionPlumbing
"communicate in P2P protocol over stdio"
- paramNothing (withParams seek)
+ paramUUID (withParams seek)
seek :: CmdParams -> CommandSeek
-seek = withNothing start
+seek [u] = commandAction $ start $ toUUID u
+seek _ = giveup "missing UUID parameter"
-start :: CommandStart
-start = do
+start :: UUID -> CommandStart
+start theiruuid = do
servermode <- liftIO $
Checks.checkEnvSet Checks.readOnlyEnv >>= return . \case
True -> P2P.ServeReadOnly
False -> P2P.ServeReadWrite
- theiruuid <- Fields.getField Fields.remoteUUID >>= \case
- Nothing -> giveup "missing remoteuuid field"
- Just u -> return (toUUID u)
myuuid <- getUUID
conn <- stdioP2PConnection <$> Annex.gitRepo
let server = do