summaryrefslogtreecommitdiffhomepage
path: root/Storage
diff options
context:
space:
mode:
Diffstat (limited to 'Storage')
-rw-r--r--Storage/Local.hs4
-rw-r--r--Storage/Network.hs8
2 files changed, 12 insertions, 0 deletions
diff --git a/Storage/Local.hs b/Storage/Local.hs
index 6dcaaae..a79cc43 100644
--- a/Storage/Local.hs
+++ b/Storage/Local.hs
@@ -5,6 +5,7 @@
module Storage.Local
( localStorage
+ , localStorageOverride
, storageDir
, storageTopDir
, testStorageDir
@@ -49,6 +50,9 @@ localStorage storagelevel getsharedir n = Storage
where
section = Section n
+localStorageOverride :: FilePath -> Storage
+localStorageOverride d = localStorage LocallyPreferred (\_ -> pure d) ""
+
store :: Section -> GetShareDir -> StorableObjectIdent -> Share -> IO StoreResult
store section getsharedir i s = onError (StoreFailure . show) $ do
dir <- getsharedir section
diff --git a/Storage/Network.hs b/Storage/Network.hs
index e2004cc..9d54a1c 100644
--- a/Storage/Network.hs
+++ b/Storage/Network.hs
@@ -7,6 +7,7 @@
module Storage.Network (
networkStorage,
+ networkStorageOverride,
) where
import Types
@@ -32,6 +33,13 @@ networkStorage storagelevel localdir server = Storage
where
ServerName name = serverName server
+networkStorageOverride :: Maybe LocalStorageDirectory -> HostName -> Port -> Storage
+networkStorageOverride lsd h p = networkStorage LocallyPreferred lsd $ Server
+ { serverName = ServerName h
+ , serverAddress = [ServerAddress h p]
+ , serverDesc = h
+ }
+
store :: Server -> StorableObjectIdent -> Share -> IO StoreResult
store srv i (Share _n o) =
serverRequest srv StoreFailure id i $ \pow ->