From 700777a8fd8e77ea13599214d5a0c3f51415bb40 Mon Sep 17 00:00:00 2001 From: Dmitry Zuikov Date: Thu, 18 Apr 2024 10:44:35 +0300 Subject: [PATCH] setup all stuff --- hbs2-git/hbs2-git-dashboard/GitDashBoard.hs | 45 +++++++++++++++++++-- 1 file changed, 42 insertions(+), 3 deletions(-) diff --git a/hbs2-git/hbs2-git-dashboard/GitDashBoard.hs b/hbs2-git/hbs2-git-dashboard/GitDashBoard.hs index 71ceee31..75abbf3f 100644 --- a/hbs2-git/hbs2-git-dashboard/GitDashBoard.hs +++ b/hbs2-git/hbs2-git-dashboard/GitDashBoard.hs @@ -8,6 +8,24 @@ import HBS2.OrDie import HBS2.System.Dir import HBS2.System.Logger.Simple.ANSI hiding (info) +import HBS2.Data.Types.Refs +import HBS2.Net.Auth.Credentials +import HBS2.Merkle +import HBS2.Storage +import HBS2.Net.Messaging.Unix +import HBS2.OrDie +import HBS2.Misc.PrettyStuff + +import HBS2.Net.Proto.Service +import HBS2.Peer.Proto.LWWRef +import HBS2.Peer.RPC.API.Peer +import HBS2.Peer.RPC.API.RefLog +import HBS2.Peer.RPC.API.RefChan +import HBS2.Peer.RPC.API.LWWRef +import HBS2.Peer.RPC.API.Storage +import HBS2.Peer.RPC.Client.StorageClient + + import HBS2.Git.Web.Assets import HBS2.Git.DashBoard.State import HBS2.Git.DashBoard.Types @@ -93,6 +111,9 @@ runDashBoardM cli m = do liftIO $ print (pretty conf) + -- FIXME: unix-socket-from-config + soname <- detectRPC `orDie` "hbs2-peer rpc not found" + env <- newDashBoardEnv conf dbFile let errorPrefix = toStderr . logPrefix "[error] " @@ -113,6 +134,27 @@ runDashBoardM cli m = do forever do liftIO (atomically $ readTQueue q) & liftIO . join + client <- liftIO $ race (pause @'Seconds 1) (newMessagingUnix False 1.0 soname) + >>= orThrowUser ("can't connect to" <+> pretty soname) + + void $ ContT $ withAsync $ runMessagingUnix client + + peerAPI <- makeServiceCaller @PeerAPI (fromString soname) + refLogAPI <- makeServiceCaller @RefLogAPI (fromString soname) + storageAPI <- makeServiceCaller @StorageAPI (fromString soname) + lwwAPI <- makeServiceCaller @LWWRefAPI (fromString soname) + + let sto = AnyStorage (StorageClient storageAPI) + + let endpoints = [ Endpoint @UNIX peerAPI + , Endpoint @UNIX refLogAPI + , Endpoint @UNIX lwwAPI + , Endpoint @UNIX storageAPI + ] + + void $ ContT $ withAsync $ liftIO $ runReaderT (runServiceClientMulti endpoints) client + + lift $ withDashBoardEnv env (withState evolveDB >> m) `finally` do setLoggingOff @DEBUG @@ -149,9 +191,6 @@ runScotty = do pno <- cfgValue @HttpPortOpt @(Maybe Int) <&> fromMaybe 8090 wo <- cfgValue @DevelopAssetsOpt @(Maybe FilePath) <&> WebOptions - soname <- runMaybeT (getRPC <|> detectRPC) - `orDie` "hbs2-peer RPC not detected" - env <- ask addJob (withDashBoardEnv env updateIndex)