Skip to content
This repository was archived by the owner on Aug 18, 2020. It is now read-only.

Commit f295d8e

Browse files
committed
[CDEC-439] Move NtpConfiguration to Ntp.Client
1 parent a6f07bb commit f295d8e

File tree

13 files changed

+50
-61
lines changed

13 files changed

+50
-61
lines changed

auxx/Main.hs

+2-1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ import qualified Network.Transport.TCP as TCP (TCPAddr (..))
1212
import qualified System.IO.Temp as Temp
1313
import System.Wlog (LoggerName, logInfo)
1414

15+
import Ntp.Client (NtpConfiguration)
16+
1517
import qualified Pos.Client.CLI as CLI
1618
import Pos.Context (NodeContext (..))
1719
import Pos.Core (ConfigurationError, epochSlots)
@@ -21,7 +23,6 @@ import Pos.Infra.Diffusion.Types (Diffusion, hoistDiffusion)
2123
import Pos.Infra.Network.Types (NetworkConfig (..), Topology (..),
2224
topologyDequeuePolicy, topologyEnqueuePolicy,
2325
topologyFailurePolicy)
24-
import Pos.Infra.Ntp.Configuration (NtpConfiguration)
2526
import Pos.Launcher (HasConfigurations, NodeParams (..),
2627
NodeResources (..), bracketNodeResources, loggerBracket,
2728
lpConsoleLog, runNode, runRealMode, withConfigurations)

infra/cardano-sl-infra.cabal

-4
Original file line numberDiff line numberDiff line change
@@ -98,9 +98,6 @@ library
9898
Pos.Infra.Statistics.Ekg
9999
Pos.Infra.Statistics.Statsd
100100

101-
-- NTP
102-
Pos.Infra.Ntp.Configuration
103-
104101
-- Pos.Infra.Binary
105102
Pos.Infra.Binary
106103
Pos.Infra.Binary.DHTModel
@@ -116,7 +113,6 @@ library
116113
other-modules: Paths_cardano_sl_infra
117114

118115
build-depends: aeson
119-
, aeson-options
120116
, async
121117
, base
122118
, parsec

infra/src/Pos/Infra/Ntp.hs

-6
This file was deleted.

infra/src/Pos/Infra/Ntp/Configuration.hs

-40
This file was deleted.

lib/src/Pos/Client/CLI/Util.hs

+2-1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ import Text.Parsec (parserFail, try)
2424
import qualified Text.Parsec.Char as P
2525
import qualified Text.Parsec.Text as P
2626

27+
import Ntp.Client (NtpConfiguration)
28+
2729
import Pos.Block.Configuration (blockConfiguration)
2830
import Pos.Client.CLI.NodeOptions (CommonNodeArgs (..))
2931
import Pos.Client.CLI.Options (configurationOptions)
@@ -35,7 +37,6 @@ import Pos.Core.Genesis (gdStartTime)
3537
import Pos.Core.NetworkAddress (addrParser)
3638
import Pos.Crypto (decodeAbstractHash)
3739
import Pos.Delegation.Configuration (dlgConfiguration)
38-
import Pos.Infra.Ntp.Configuration (NtpConfiguration)
3940
import Pos.Launcher.Configuration (Configuration (..),
4041
HasConfigurations)
4142
import Pos.Security.Params (AttackTarget (..), AttackType (..))

lib/src/Pos/Launcher/Configuration.hs

+2-1
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ import System.FilePath (takeDirectory)
3434
import System.Wlog (LoggerName, WithLogger, askLoggerName, logInfo,
3535
usingLoggerName)
3636

37+
import Ntp.Client (NtpConfiguration)
38+
3739
-- FIXME consistency on the locus of the JSON instances for configuration.
3840
-- Core keeps them separate, infra update and ssc define them on-site.
3941
import Pos.Aeson.Core.Configuration ()
@@ -45,7 +47,6 @@ import Pos.Block.Configuration
4547
import Pos.Configuration
4648
import Pos.Core.Configuration
4749
import Pos.Delegation.Configuration
48-
import Pos.Infra.Ntp.Configuration
4950
import Pos.Ssc.Configuration
5051
import Pos.Txp.Configuration
5152
import Pos.Update.Configuration

lib/src/Test/Pos/Configuration.hs

+2-1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ import Universum
2424

2525
import qualified Data.Aeson as J
2626

27+
import Ntp.Client (NtpConfiguration)
28+
2729
import Pos.Block.Configuration (HasBlockConfiguration,
2830
withBlockConfiguration)
2931
import Pos.Configuration (HasNodeConfiguration, withNodeConfiguration)
@@ -33,7 +35,6 @@ import Pos.Core.Configuration (CoreConfiguration (..),
3335
import Pos.Core.Genesis (GenesisSpec (..))
3436
import Pos.Crypto (ProtocolMagic)
3537
import Pos.Delegation (HasDlgConfiguration, withDlgConfiguration)
36-
import Pos.Infra.Ntp.Configuration (NtpConfiguration)
3738
import Pos.Launcher.Configuration (Configuration (..),
3839
HasConfigurations)
3940
import Pos.Ssc.Configuration (HasSscConfiguration,

networking/cardano-sl-networking.cabal

+1
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ Library
5959
other-modules: Data.NonEmptySet
6060

6161
build-depends: aeson
62+
, aeson-options
6263
, async
6364
, attoparsec
6465
, base

networking/src/Ntp/Client.hs

+34-2
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@
1111
-- | This module implements functionality of NTP client.
1212

1313
module Ntp.Client
14-
( NtpClientSettings (..)
14+
( NtpConfiguration (..)
15+
, NtpClientSettings (..)
16+
, ntpClientSettings
1517
, NtpStatus (..)
1618
, withNtpClient
1719
) where
@@ -24,11 +26,15 @@ import Control.Concurrent.Async (async, cancel, concurrently_, race,
2426
import Control.Concurrent.STM (TVar, modifyTVar', retry)
2527
import Control.Exception (Exception, IOException, catch, handle)
2628
import Control.Monad (forever)
29+
import Data.Aeson (FromJSON (..), ToJSON (..), genericParseJSON,
30+
genericToJSON)
31+
import Data.Aeson.Options (defaultOptions)
2732
import Data.Binary (decodeOrFail)
2833
import qualified Data.ByteString.Lazy as LBS
2934
import qualified Data.List.NonEmpty as NE
3035
import Data.Semigroup (Last (..))
31-
import Data.Time.Units (Microsecond, TimeUnit, toMicroseconds)
36+
import Data.Time.Units (Microsecond, TimeUnit, fromMicroseconds,
37+
toMicroseconds)
3238
import Data.Typeable (Typeable)
3339
import Formatting (sformat, shown, (%))
3440
import qualified Network.Socket as Socket
@@ -80,6 +86,32 @@ data NtpClient = NtpClient
8086
-- ^ Ntp client configuration.
8187
}
8288

89+
data NtpConfiguration = NtpConfiguration
90+
{
91+
ntpcServers :: [String]
92+
-- ^ List of DNS names of ntp servers
93+
, ntpcResponseTimeout :: !Integer
94+
-- ^ how long to await for responses from ntp servers (in microseconds)
95+
, ntpcPollDelay :: !Integer
96+
-- ^ how long to wait between sending requests to the ntp servers (in
97+
-- microseconds)
98+
} deriving (Show, Generic)
99+
100+
instance FromJSON NtpConfiguration where
101+
parseJSON = genericParseJSON defaultOptions
102+
103+
instance ToJSON NtpConfiguration where
104+
toJSON = genericToJSON defaultOptions
105+
106+
ntpClientSettings :: NtpConfiguration -> NtpClientSettings
107+
ntpClientSettings NtpConfiguration {..} = NtpClientSettings
108+
{ ntpServers = ntpcServers
109+
, ntpResponseTimeout = fromMicroseconds $ ntpcResponseTimeout
110+
, ntpPollDelay = fromMicroseconds $ ntpcPollDelay
111+
, ntpSelection = minimum . NE.map abs
112+
-- ^ Take minmum of received offsets.
113+
}
114+
83115
mkNtpClient :: NtpClientSettings -> TVar NtpStatus -> Sockets -> IO NtpClient
84116
mkNtpClient ncSettings ncStatus sock = liftIO $ do
85117
ncSockets <- newTVarIO sock

node/Main.hs

+2-1
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,13 @@ import Data.Maybe (fromJust)
1414
import Mockable (Production (..), runProduction)
1515
import System.Wlog (LoggerName, logInfo)
1616

17+
import Ntp.Client (NtpConfiguration)
18+
1719
import Pos.Binary ()
1820
import Pos.Client.CLI (CommonNodeArgs (..), NodeArgs (..),
1921
SimpleNodeArgs (..))
2022
import qualified Pos.Client.CLI as CLI
2123
import Pos.Crypto (ProtocolMagic)
22-
import Pos.Infra.Ntp.Configuration (NtpConfiguration)
2324
import Pos.Launcher (HasConfigurations, NodeParams (..),
2425
loggerBracket, runNodeReal, withConfigurations)
2526
import Pos.Launcher.Configuration (AssetLockPath (..))

wallet-new/server/Main.hs

+2-3
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,14 @@ import Universum
1111
import Control.Concurrent.STM (newTQueueIO)
1212
import Data.Maybe (fromJust)
1313
import Mockable (Production (..), runProduction)
14-
import Ntp.Client (NtpStatus, withNtpClient)
14+
import Ntp.Client (NtpConfiguration, NtpStatus, ntpClientSettings,
15+
withNtpClient)
1516
import qualified Pos.Client.CLI as CLI
1617
import Pos.Context (ncUserSecret)
1718
import Pos.Core (epochSlots)
1819
import Pos.Crypto (ProtocolMagic)
1920
import Pos.DB.DB (initNodeDBs)
2021
import Pos.Infra.Diffusion.Types (Diffusion)
21-
import Pos.Infra.Ntp.Configuration (NtpConfiguration,
22-
ntpClientSettings)
2322
import Pos.Launcher (NodeParams (..), NodeResources (..),
2423
bpLoggingParams, bracketNodeResources, loggerBracket,
2524
lpDefaultName, runNode, withConfigurations)

wallet/src/Pos/Wallet/Web/Server/Handlers.hs

+1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ module Pos.Wallet.Web.Server.Handlers
1111
import Universum
1212

1313
import Ntp.Client (NtpStatus)
14+
1415
import Pos.Wallet.Web.Swagger.Spec (swaggerSpecForWalletApi)
1516
import Servant.API ((:<|>) ((:<|>)))
1617
import Servant.Generic (AsServerT, GenericProduct, ToServant,

wallet/src/Pos/Wallet/Web/Server/Runner.hs

+2-1
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,11 @@ import Control.Monad.Except (MonadError (throwError))
2121
import qualified Control.Monad.Reader as Mtl
2222
import Mockable (Production (..), runProduction)
2323
import Network.Wai (Application)
24-
import Ntp.Client (NtpStatus)
2524
import Servant.Server (Handler)
2625
import System.Wlog (logInfo, usingLoggerName)
2726

27+
import Ntp.Client (NtpStatus)
28+
2829
import Cardano.NodeIPC (startNodeJsIPC)
2930
import Pos.Core.NetworkAddress (NetworkAddress)
3031
import Pos.Crypto (ProtocolMagic)

0 commit comments

Comments
 (0)