summaryrefslogtreecommitdiff
path: root/RemoteDaemon/Transport/Ssh
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2014-04-06 19:06:03 -0400
committerGravatar Joey Hess <joey@kitenet.net>2014-04-06 19:10:23 -0400
commit8c4bfe2f2141bce84ea22120da445c148b6f1168 (patch)
tree817f5951cec02c1acec3f26c886beea79cf0957c /RemoteDaemon/Transport/Ssh
parent1eb96cc31a0f0ec0339f6b28a362b057444069af (diff)
added git-annex remotedaemon
So far, handling connecting to git-annex-shell notifychanges, and pulling immediately when a change is pushed to a remote. A little bit buggy (crashes after the first pull), but it already works! This commit was sponsored by Mark Sheppard.
Diffstat (limited to 'RemoteDaemon/Transport/Ssh')
-rw-r--r--RemoteDaemon/Transport/Ssh/Types.hs32
1 files changed, 32 insertions, 0 deletions
diff --git a/RemoteDaemon/Transport/Ssh/Types.hs b/RemoteDaemon/Transport/Ssh/Types.hs
new file mode 100644
index 000000000..d3fd314b4
--- /dev/null
+++ b/RemoteDaemon/Transport/Ssh/Types.hs
@@ -0,0 +1,32 @@
+{- git-remote-daemon, git-annex-shell notifychanges protocol types
+ -
+ - Copyright 2014 Joey Hess <joey@kitenet.net>
+ -
+ - Licensed under the GNU GPL version 3 or higher.
+ -}
+
+{-# LANGUAGE TypeSynonymInstances, FlexibleInstances #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+
+module RemoteDaemon.Transport.Ssh.Types (
+ Notification(..),
+ Proto.serialize,
+ Proto.deserialize,
+ Proto.formatMessage,
+) where
+
+import qualified Utility.SimpleProtocol as Proto
+import RemoteDaemon.Types (RefList)
+
+data Notification
+ = READY
+ | CHANGED RefList
+
+instance Proto.Sendable Notification where
+ formatMessage READY = ["READY"]
+ formatMessage (CHANGED shas) = ["CHANGED", Proto.serialize shas]
+
+instance Proto.Receivable Notification where
+ parseCommand "READY" = Proto.parse0 READY
+ parseCommand "CHANGED" = Proto.parse1 CHANGED
+ parseCommand _ = Proto.parseFail