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.
This commit is contained in:
parent
16af259209
commit
6a59bc4845
5 changed files with 39 additions and 30 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue