-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Real-time watching for Cardano nodes
@package cardano-rt-view
@version 0.1.0

module Cardano.RTView.Acceptor

-- | It is assumed that there's at least one cardano-node process that
--   sends its metrics as |LogObject|s via |TraceForwarder|. These
--   |LogObject|s will be accepted by |TraceAcceptor|s and redirected to
--   the corresponding tracers and finally stored in the |LogBuffer|.
launchMetricsAcceptor :: Configuration -> Trace IO Text -> Switchboard Text -> IO ()

module Cardano.RTView.CLI

-- | Type for CLI parameters required for the service.
data RTViewParams
RTViewParams :: !FilePath -> !FilePath -> !Int -> !Word64 -> !Word64 -> !Word64 -> !Word64 -> RTViewParams
[rtvConfig] :: RTViewParams -> !FilePath
[rtvStatic] :: RTViewParams -> !FilePath
[rtvPort] :: RTViewParams -> !Int
[rtvNodeInfoLife] :: RTViewParams -> !Word64
[rtvBlockchainInfoLife] :: RTViewParams -> !Word64
[rtvResourcesInfoLife] :: RTViewParams -> !Word64
[rtvRTSInfoLife] :: RTViewParams -> !Word64
defaultRTViewParams :: RTViewParams
defaultRTVConfig :: FilePath
defaultRTVStatic :: FilePath
defaultRTVPort :: Int
defaultRTVNodeInfoLife :: Word64
defaultRTVBlockchainInfoLife :: Word64
defaultRTVResourcesInfoLife :: Word64
defaultRTVRTSInfoLife :: Word64
parseRTViewParams :: Parser RTViewParams
instance Data.Aeson.Types.ToJSON.ToJSON Cardano.RTView.CLI.RTViewParams
instance Data.Aeson.Types.FromJSON.FromJSON Cardano.RTView.CLI.RTViewParams
instance GHC.Generics.Generic Cardano.RTView.CLI.RTViewParams

module Cardano.RTView.Config

-- | There are few possible ways how we can prepare RTView configuration:
--   1. By running interactive dialog with the user. If `--config`
--   CLI-option isn't provided, the user will answer few questions and
--   actual configuration will be prepared based on these answers. 2. By
--   providing configuration explicitly. If `--config`, `--static` and
--   `--port` options are provided, these values will be used (interactive
--   dialog will be skipped). 3. By using the last used configuration. If
--   the user already launched `cardano-rt-view` previously, the
--   configuration was stored in user's local directory (different for each
--   supported platform), and by default that configuration will be used
--   again.
prepareConfigAndParams :: RTViewParams -> IO (Configuration, RTViewParams, [RemoteAddrNamed])

module Cardano.RTView.ErrorBuffer

-- | All |LogObject|s accepted by |TraceAcceptor| plugin will be decoded
--   and traced to 'cardano-rt-view.acceptor'. Because of RView
--   configuration all these |LogObject|s will be sent to |LogBufferBK| and
--   |ErrorBufferBK|, but |ErrorBufferBK| is storing only errors. Later
--   NodesState.Updater will extract errors from |ErrorBufferBK| and
--   display them in UI (<a>Errors</a> tab).
data ErrorBuffer a

-- | Once we read the current content of the queue, it should be cleaned.
readErrorBuffer :: ErrorBuffer a -> IO [(LoggerName, LogObject a)]
effectuate :: IsEffectuator t a => t a -> LogObject a -> IO ()
realize :: IsBackend t a => Configuration -> IO (t a)
unrealize :: IsBackend t a => t a -> IO ()
instance Cardano.BM.Data.Backend.IsEffectuator Cardano.RTView.ErrorBuffer.ErrorBuffer a
instance Data.Aeson.Types.FromJSON.FromJSON a => Cardano.BM.Data.Backend.IsBackend Cardano.RTView.ErrorBuffer.ErrorBuffer a

module Cardano.RTView.GUI.Charts
prepareChartsJS :: String
memoryUsageChartJS :: String
cpuUsageChartJS :: String
diskUsageChartJS :: String
networkUsageChartJS :: String
gridMemoryUsageChartJS :: String
gridCPUUsageChartJS :: String
gridDiskUsageChartJS :: String
gridNetworkUsageChartJS :: String
updateMemoryUsageChartJS :: String
updateCPUUsageChartJS :: String
updateDiskUsageChartJS :: String
updateNetworkUsageChartJS :: String

module Cardano.RTView.GUI.Elements

-- | HTML elements identifiers, we use them in HTML, CSS and JS FFI.
data HTMLClass
ActiveTab :: HTMLClass
BarValueUnit :: HTMLClass
CardanoLogo :: HTMLClass
CommitLink :: HTMLClass
DensityPercent :: HTMLClass
ErrorsTabContainer :: HTMLClass
GridNodeNameLabel :: HTMLClass
GridRowCell :: HTMLClass
HSpacer :: HTMLClass
InfoMark :: HTMLClass
InfoMarkImg :: HTMLClass
MetricsArea :: HTMLClass
NodeContainer :: HTMLClass
NodeBar :: HTMLClass
NodeInfoValues :: HTMLClass
NodeInfoVSpacer :: HTMLClass
NodeMetricsValues :: HTMLClass
NodeMetricsVSpacer :: HTMLClass
NodeMenuIcon :: HTMLClass
NodeName :: HTMLClass
NodeNameArea :: HTMLClass
OutdatedValue :: HTMLClass
PercentsSlashHSpacer :: HTMLClass
PercentsSlashHRSpacer :: HTMLClass
ProgressBar :: HTMLClass
ProgressBarOutdated :: HTMLClass
ProgressBarBox :: HTMLClass
ProgressBarBoxOutdated :: HTMLClass
ReleaseName :: HTMLClass
ResourcesIcon :: HTMLClass
SelectMetricCheck :: HTMLClass
SelectMetricCheckArea :: HTMLClass
SelectNodeCheck :: HTMLClass
SelectNodeCheckArea :: HTMLClass
ServiceName :: HTMLClass
ShowHideIcon :: HTMLClass
TabContainer :: HTMLClass
TopBar :: HTMLClass
ValueUnit :: HTMLClass
ValueUnitPercent :: HTMLClass
CPUUsageChart :: HTMLClass
MemoryUsageChart :: HTMLClass
DiskUsageChart :: HTMLClass
NetworkUsageChart :: HTMLClass
GridCPUUsageChart :: HTMLClass
GridMemoryUsageChart :: HTMLClass
GridDiskUsageChart :: HTMLClass
GridNetworkUsageChart :: HTMLClass
WarningMessage :: HTMLClass
ErrorMessage :: HTMLClass
CriticalMessage :: HTMLClass
AlertMessage :: HTMLClass
EmergencyMessage :: HTMLClass
data HTMLW3Class
W3Bar :: HTMLW3Class
W3BarBlock :: HTMLW3Class
W3BarItem :: HTMLW3Class
W3Border :: HTMLW3Class
W3Bordered :: HTMLW3Class
W3BorderBottom :: HTMLW3Class
W3BorderTop :: HTMLW3Class
W3Button :: HTMLW3Class
W3Card4 :: HTMLW3Class
W3Check :: HTMLW3Class
W3Col :: HTMLW3Class
W3Container :: HTMLW3Class
W3Disabled :: HTMLW3Class
W3DropdownContent :: HTMLW3Class
W3DropdownHover :: HTMLW3Class
W3Half :: HTMLW3Class
W3HideMedium :: HTMLW3Class
W3HideSmall :: HTMLW3Class
W3Large :: HTMLW3Class
W3Margin :: HTMLW3Class
W3Mobile :: HTMLW3Class
W3Responsive :: HTMLW3Class
W3Rest :: HTMLW3Class
W3Right :: HTMLW3Class
W3RightAlign :: HTMLW3Class
W3Row :: HTMLW3Class
W3Sidebar :: HTMLW3Class
W3Table :: HTMLW3Class
W3Theme :: HTMLW3Class
W3Third :: HTMLW3Class
W3TwoThird :: HTMLW3Class
W3Quarter :: HTMLW3Class
W3L6 :: HTMLW3Class
W3M12 :: HTMLW3Class
W3S12 :: HTMLW3Class
data HTMLId
SelectMetricButton :: HTMLId
HideAllMetricsButton :: HTMLId
ShowAllMetricsButton :: HTMLId
HideAllNodesButton :: HTMLId
ShowAllNodesButton :: HTMLId
ViewModeButton :: HTMLId
CPUUsageChartId :: HTMLId
DiskUsageChartId :: HTMLId
MemoryUsageChartId :: HTMLId
NetworkUsageChartId :: HTMLId
GridCPUUsageChartId :: HTMLId
GridDiskUsageChartId :: HTMLId
GridMemoryUsageChartId :: HTMLId
GridNetworkUsageChartId :: HTMLId
GridNodeTH :: HTMLId

-- | GUI elements for all nodes, tuples from nodeName, its elements and
--   prepared peers items.
type NodesStateElements = [(Text, NodeStateElements, [PeerInfoItem])]

-- | GUI elements containing current node state (info, metrics). These
--   elements are continuously updating using |LogObject|s received by
--   |TraceAcceptor|s.
type NodeStateElements = Map ElementName Element
data ElementName
ElNodeProtocol :: ElementName
ElNodeVersion :: ElementName
ElNodePlatform :: ElementName
ElNodeCommitHref :: ElementName
ElActiveNode :: ElementName
ElUptime :: ElementName
ElEpoch :: ElementName
ElSlot :: ElementName
ElBlocksNumber :: ElementName
ElBlocksForgedNumber :: ElementName
ElNodeCannotForge :: ElementName
ElChainDensity :: ElementName
ElNodeIsLeaderNumber :: ElementName
ElSlotsMissedNumber :: ElementName
ElTxsProcessed :: ElementName
ElPeersNumber :: ElementName
ElTraceAcceptorHost :: ElementName
ElTraceAcceptorPort :: ElementName
ElTraceAcceptorEndpoint :: ElementName
ElOpCertStartKESPeriod :: ElementName
ElCurrentKESPeriod :: ElementName
ElRemainingKESPeriods :: ElementName
ElNodeErrors :: ElementName
ElNodeErrorsTab :: ElementName
ElMempoolTxsNumber :: ElementName
ElMempoolTxsPercent :: ElementName
ElMempoolBytes :: ElementName
ElMempoolBytesPercent :: ElementName
ElMempoolMaxTxs :: ElementName
ElMempoolMaxBytes :: ElementName
ElMemory :: ElementName
ElMemoryMax :: ElementName
ElMemoryMaxTotal :: ElementName
ElMemoryPercent :: ElementName
ElCPUPercent :: ElementName
ElCPULast :: ElementName
ElCPUNs :: ElementName
ElDiskUsageR :: ElementName
ElDiskUsageRMax :: ElementName
ElDiskUsageRMaxTotal :: ElementName
ElDiskUsageRPercent :: ElementName
ElDiskUsageW :: ElementName
ElDiskUsageWMax :: ElementName
ElDiskUsageWMaxTotal :: ElementName
ElDiskUsageWPercent :: ElementName
ElNetworkUsageIn :: ElementName
ElNetworkUsageInMaxTotal :: ElementName
ElNetworkUsageOut :: ElementName
ElNetworkUsageOutMaxTotal :: ElementName
ElRTSMemoryAllocated :: ElementName
ElRTSMemoryUsed :: ElementName
ElRTSMemoryUsedPercent :: ElementName
ElRTSGcCpu :: ElementName
ElRTSGcElapsed :: ElementName
ElRTSGcNum :: ElementName
ElRTSGcMajorNum :: ElementName
ElMempoolBytesProgress :: ElementName
ElMempoolBytesProgressBox :: ElementName
ElMempoolTxsProgress :: ElementName
ElMempoolTxsProgressBox :: ElementName
ElRTSMemoryProgress :: ElementName
ElRTSMemoryProgressBox :: ElementName
ElMemoryUsageChart :: ElementName
ElCPUUsageChart :: ElementName
ElDiskUsageChart :: ElementName
ElNetworkUsageChart :: ElementName
data ElementValue
ElementInt :: !Int -> ElementValue
ElementInteger :: !Integer -> ElementValue
ElementWord64 :: !Word64 -> ElementValue
ElementDouble :: !Double -> ElementValue
ElementString :: !String -> ElementValue

-- | An item for each connected peer, contains a parent element and list of
--   child elements.
data PeerInfoItem
PeerInfoItem :: !Element -> !PeerInfoElements -> PeerInfoItem
[piItem] :: PeerInfoItem -> !Element
[piItemElems] :: PeerInfoItem -> !PeerInfoElements
data PeerInfoElements
PeerInfoElements :: !Element -> !Element -> !Element -> !Element -> !Element -> !Element -> PeerInfoElements
[pieEndpoint] :: PeerInfoElements -> !Element
[pieBytesInF] :: PeerInfoElements -> !Element
[pieReqsInF] :: PeerInfoElements -> !Element
[pieBlocksInF] :: PeerInfoElements -> !Element
[pieSlotNumber] :: PeerInfoElements -> !Element
[pieStatus] :: PeerInfoElements -> !Element

-- | Operator for class names concatenation. Please note that w3-classes
--   should be the first, because our own classes override some of them.
(<+>) :: [HTMLW3Class] -> [HTMLClass] -> String
(##) :: UI Element -> String -> UI Element
showIt :: UI Element -> UI Element
hideIt :: UI Element -> UI Element
showRow :: UI Element -> UI Element
showCell :: UI Element -> UI Element
instance GHC.Show.Show Cardano.RTView.GUI.Elements.ElementName
instance GHC.Classes.Ord Cardano.RTView.GUI.Elements.ElementName
instance Control.DeepSeq.NFData Cardano.RTView.GUI.Elements.ElementName
instance GHC.Generics.Generic Cardano.RTView.GUI.Elements.ElementName
instance GHC.Classes.Eq Cardano.RTView.GUI.Elements.ElementName
instance Control.DeepSeq.NFData Cardano.RTView.GUI.Elements.ElementValue
instance GHC.Generics.Generic Cardano.RTView.GUI.Elements.ElementValue
instance Control.DeepSeq.NFData Cardano.RTView.GUI.Elements.PeerInfoElements
instance GHC.Generics.Generic Cardano.RTView.GUI.Elements.PeerInfoElements
instance Control.DeepSeq.NFData Cardano.RTView.GUI.Elements.PeerInfoItem
instance GHC.Generics.Generic Cardano.RTView.GUI.Elements.PeerInfoItem
instance GHC.Show.Show Cardano.RTView.GUI.Elements.HTMLClass
instance GHC.Show.Show Cardano.RTView.GUI.Elements.HTMLId
instance GHC.Show.Show Cardano.RTView.GUI.Elements.HTMLW3Class
instance Control.DeepSeq.NFData Graphics.UI.Threepenny.Internal.Element

module Cardano.RTView.GUI.CSS.Style
ownCSS :: String

module Cardano.RTView.GUI.Grid
mkNodesGrid :: Window -> [RemoteAddrNamed] -> UI (Element, NodesStateElements)
metricLabel :: ElementName -> (String, String)
allMetricsNames :: [ElementName]

module Cardano.RTView.GUI.Pane
mkNodePane :: Text -> UI (Element, NodeStateElements, [PeerInfoItem])

module Cardano.RTView.GUI.Markup
mkPageBody :: Window -> [RemoteAddrNamed] -> UI (Element, (NodesStateElements, NodesStateElements))

module Cardano.RTView.NodeState.Types
data NodeError
NodeError :: !UTCTime -> !Severity -> !String -> NodeError
[eTimestamp] :: NodeError -> !UTCTime
[eSeverity] :: NodeError -> !Severity
[eMessage] :: NodeError -> !String
type NodesState = Map Text NodeState
data NodeState
NodeState :: !NodeInfo -> !NodeMetrics -> NodeState
[nsInfo] :: NodeState -> !NodeInfo
[nsMetrics] :: NodeState -> !NodeMetrics
data NodeInfo
NodeInfo :: !String -> !String -> !String -> !String -> !String -> !Word64 -> !Word64 -> !Integer -> !Word64 -> !Integer -> !Word64 -> !Integer -> !Word64 -> !Integer -> !Word64 -> !Integer -> !Word64 -> !Integer -> !Word64 -> !Integer -> !Double -> !Word64 -> !Integer -> ![PeerInfo] -> !String -> !String -> !Integer -> !Word64 -> !Integer -> !Word64 -> !Integer -> !Word64 -> ![NodeError] -> NodeInfo
[niNodeProtocol] :: NodeInfo -> !String
[niNodeVersion] :: NodeInfo -> !String
[niNodeCommit] :: NodeInfo -> !String
[niNodeShortCommit] :: NodeInfo -> !String
[niNodePlatform] :: NodeInfo -> !String
[niUpTime] :: NodeInfo -> !Word64
[niUpTimeLastUpdate] :: NodeInfo -> !Word64
[niEpoch] :: NodeInfo -> !Integer
[niEpochLastUpdate] :: NodeInfo -> !Word64
[niSlot] :: NodeInfo -> !Integer
[niSlotLastUpdate] :: NodeInfo -> !Word64
[niNodeIsLeaderNum] :: NodeInfo -> !Integer
[niNodeIsLeaderNumLastUpdate] :: NodeInfo -> !Word64
[niSlotsMissedNumber] :: NodeInfo -> !Integer
[niSlotsMissedNumberLastUpdate] :: NodeInfo -> !Word64
[niBlocksNumber] :: NodeInfo -> !Integer
[niBlocksNumberLastUpdate] :: NodeInfo -> !Word64
[niBlocksForgedNumber] :: NodeInfo -> !Integer
[niBlocksForgedNumberLastUpdate] :: NodeInfo -> !Word64
[niNodeCannotForge] :: NodeInfo -> !Integer
[niChainDensity] :: NodeInfo -> !Double
[niChainDensityLastUpdate] :: NodeInfo -> !Word64
[niTxsProcessed] :: NodeInfo -> !Integer
[niPeersInfo] :: NodeInfo -> ![PeerInfo]
[niTraceAcceptorHost] :: NodeInfo -> !String
[niTraceAcceptorPort] :: NodeInfo -> !String
[niRemainingKESPeriods] :: NodeInfo -> !Integer
[niRemainingKESPeriodsLastUpdate] :: NodeInfo -> !Word64
[niOpCertStartKESPeriod] :: NodeInfo -> !Integer
[niOpCertStartKESPeriodLastUpdate] :: NodeInfo -> !Word64
[niCurrentKESPeriod] :: NodeInfo -> !Integer
[niCurrentKESPeriodLastUpdate] :: NodeInfo -> !Word64
[niNodeErrors] :: NodeInfo -> ![NodeError]
data NodeMetrics
NodeMetrics :: !Word64 -> !Double -> !Word64 -> !Double -> !Integer -> !Integer -> !Double -> !Double -> !Double -> !Double -> !Word64 -> !Double -> !Integer -> !Word64 -> !Word64 -> !Double -> !Double -> !Double -> !Double -> !Word64 -> !Word64 -> !UTCTime -> !Word64 -> !Double -> !Double -> !Double -> !Double -> !Word64 -> !Word64 -> !UTCTime -> !Word64 -> !Double -> !Double -> !Double -> !Double -> !Word64 -> !Word64 -> !Word64 -> !Double -> !Double -> !Double -> !Double -> !Word64 -> !Word64 -> !Word64 -> !Double -> !Double -> !Double -> !Word64 -> !Double -> !Word64 -> !Double -> !Word64 -> !Integer -> !Word64 -> !Integer -> !Word64 -> NodeMetrics
[nmMempoolTxsNumber] :: NodeMetrics -> !Word64
[nmMempoolTxsPercent] :: NodeMetrics -> !Double
[nmMempoolBytes] :: NodeMetrics -> !Word64
[nmMempoolBytesPercent] :: NodeMetrics -> !Double
[nmMempoolMaxTxs] :: NodeMetrics -> !Integer
[nmMempoolMaxBytes] :: NodeMetrics -> !Integer
[nmMemory] :: NodeMetrics -> !Double
[nmMemoryMax] :: NodeMetrics -> !Double
[nmMemoryMaxTotal] :: NodeMetrics -> !Double
[nmMemoryPercent] :: NodeMetrics -> !Double
[nmMemoryLastUpdate] :: NodeMetrics -> !Word64
[nmCPUPercent] :: NodeMetrics -> !Double
[nmCPULast] :: NodeMetrics -> !Integer
[nmCPUNs] :: NodeMetrics -> !Word64
[nmCPULastUpdate] :: NodeMetrics -> !Word64
[nmDiskUsageR] :: NodeMetrics -> !Double
[nmDiskUsageRMax] :: NodeMetrics -> !Double
[nmDiskUsageRMaxTotal] :: NodeMetrics -> !Double
[nmDiskUsageRPercent] :: NodeMetrics -> !Double
[nmDiskUsageRLast] :: NodeMetrics -> !Word64
[nmDiskUsageRNs] :: NodeMetrics -> !Word64
[nmDiskUsageRAdaptTime] :: NodeMetrics -> !UTCTime
[nmDiskUsageRLastUpdate] :: NodeMetrics -> !Word64
[nmDiskUsageW] :: NodeMetrics -> !Double
[nmDiskUsageWMax] :: NodeMetrics -> !Double
[nmDiskUsageWMaxTotal] :: NodeMetrics -> !Double
[nmDiskUsageWPercent] :: NodeMetrics -> !Double
[nmDiskUsageWLast] :: NodeMetrics -> !Word64
[nmDiskUsageWNs] :: NodeMetrics -> !Word64
[nmDiskUsageWAdaptTime] :: NodeMetrics -> !UTCTime
[nmDiskUsageWLastUpdate] :: NodeMetrics -> !Word64
[nmNetworkUsageIn] :: NodeMetrics -> !Double
[nmNetworkUsageInPercent] :: NodeMetrics -> !Double
[nmNetworkUsageInMax] :: NodeMetrics -> !Double
[nmNetworkUsageInMaxTotal] :: NodeMetrics -> !Double
[nmNetworkUsageInLast] :: NodeMetrics -> !Word64
[nmNetworkUsageInNs] :: NodeMetrics -> !Word64
[nmNetworkUsageInLastUpdate] :: NodeMetrics -> !Word64
[nmNetworkUsageOut] :: NodeMetrics -> !Double
[nmNetworkUsageOutPercent] :: NodeMetrics -> !Double
[nmNetworkUsageOutMax] :: NodeMetrics -> !Double
[nmNetworkUsageOutMaxTotal] :: NodeMetrics -> !Double
[nmNetworkUsageOutLast] :: NodeMetrics -> !Word64
[nmNetworkUsageOutNs] :: NodeMetrics -> !Word64
[nmNetworkUsageOutLastUpdate] :: NodeMetrics -> !Word64
[nmRTSMemoryAllocated] :: NodeMetrics -> !Double
[nmRTSMemoryUsed] :: NodeMetrics -> !Double
[nmRTSMemoryUsedPercent] :: NodeMetrics -> !Double
[nmRTSMemoryLastUpdate] :: NodeMetrics -> !Word64
[nmRTSGcCpu] :: NodeMetrics -> !Double
[nmRTSGcCpuLastUpdate] :: NodeMetrics -> !Word64
[nmRTSGcElapsed] :: NodeMetrics -> !Double
[nmRTSGcElapsedLastUpdate] :: NodeMetrics -> !Word64
[nmRTSGcNum] :: NodeMetrics -> !Integer
[nmRTSGcNumLastUpdate] :: NodeMetrics -> !Word64
[nmRTSGcMajorNum] :: NodeMetrics -> !Integer
[nmRTSGcMajorNumLastUpdate] :: NodeMetrics -> !Word64
data PeerInfo
PeerInfo :: !String -> !String -> !String -> !String -> !String -> !String -> PeerInfo
[piEndpoint] :: PeerInfo -> !String
[piBytesInF] :: PeerInfo -> !String
[piReqsInF] :: PeerInfo -> !String
[piBlocksInF] :: PeerInfo -> !String
[piSlotNumber] :: PeerInfo -> !String
[piStatus] :: PeerInfo -> !String
defaultNodesState :: Configuration -> IO NodesState
instance GHC.Show.Show Cardano.RTView.NodeState.Types.PeerInfo
instance Control.DeepSeq.NFData Cardano.RTView.NodeState.Types.PeerInfo
instance GHC.Generics.Generic Cardano.RTView.NodeState.Types.PeerInfo
instance GHC.Classes.Eq Cardano.RTView.NodeState.Types.PeerInfo
instance GHC.Show.Show Cardano.RTView.NodeState.Types.NodeError
instance Control.DeepSeq.NFData Cardano.RTView.NodeState.Types.NodeError
instance GHC.Generics.Generic Cardano.RTView.NodeState.Types.NodeError
instance GHC.Show.Show Cardano.RTView.NodeState.Types.NodeInfo
instance Control.DeepSeq.NFData Cardano.RTView.NodeState.Types.NodeInfo
instance GHC.Generics.Generic Cardano.RTView.NodeState.Types.NodeInfo
instance GHC.Show.Show Cardano.RTView.NodeState.Types.NodeMetrics
instance Control.DeepSeq.NFData Cardano.RTView.NodeState.Types.NodeMetrics
instance GHC.Generics.Generic Cardano.RTView.NodeState.Types.NodeMetrics
instance GHC.Show.Show Cardano.RTView.NodeState.Types.NodeState
instance Control.DeepSeq.NFData Cardano.RTView.NodeState.Types.NodeState
instance GHC.Generics.Generic Cardano.RTView.NodeState.Types.NodeState
instance Control.DeepSeq.NFData Cardano.BM.Data.Severity.Severity

module Cardano.RTView.NodeState.Parsers
extractPeersInfo :: Object -> [PeerInfo]
instance Data.Aeson.Types.FromJSON.FromJSON Cardano.RTView.NodeState.Parsers.ConnectedPeers
instance Data.Aeson.Types.FromJSON.FromJSON Cardano.RTView.NodeState.Parsers.ConnectedPeer

module Cardano.RTView.GUI.Updater

-- | This function is calling by the timer. It updates the node' state
--   elements on the page automatically, because threepenny-gui is based on
--   websockets.
updateGUI :: Window -> NodesState -> RTViewParams -> [RemoteAddrNamed] -> (NodesStateElements, NodesStateElements) -> UI ()

module Cardano.RTView.NodeState.Updater

-- | This function is running in a separate thread. It takes |LogObject|s
--   with nodes' metrics from |LogBuffer|, extracts these metrics and
--   updates corresponding values in the |NodesState|.
launchNodeStateUpdater :: Trace IO Text -> Switchboard Text -> ErrorBuffer Text -> MVar NodesState -> IO ()

module Cardano.RTView.Server

-- | Launch web server.
launchServer :: MVar NodesState -> RTViewParams -> [RemoteAddrNamed] -> IO ()

module Cardano.RTView

-- | Run the service.
runCardanoRTView :: RTViewParams -> IO ()
