netclock 0.2 → 0.3
raw patch · 2 files changed
+22/−3 lines, 2 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Network.Netclock.Client: bpsListenLoop :: Transport t => MVar (BpsChange, [BpsChange]) -> t -> IO b
+ Network.Netclock.Client: logicalTime :: BpsChange -> Double -> Double
+ Network.Netclock.Client: readChange :: Transport t => t -> IO BpsChange
+ Network.Netclock.Client: sched :: String -> String -> String -> Int -> IO () -> IO ()
+ Network.Netclock.Client: scport :: Int
+ Network.Netclock.Client: toFloat :: Datum -> Double
Files
- Network/Netclock/Client.hs +21/−2
- netclock.cabal +1/−1
Network/Netclock/Client.hs view
@@ -31,14 +31,33 @@ scport = 57120 +logicalTime :: BpsChange -> Double -> Double+logicalTime change beat = + changeTime change + ((beat - changeBeat change) / changeBps change)+ waitBeat :: BpsChange -> Double -> IO () waitBeat change beat = - do let logicalTime = changeTime change + ((beat - changeBeat change) / changeBps change)+ do let logicalNow = logicalTime change beat realNow <- utcr- let diff = logicalTime - realNow+ let diff = logicalNow - realNow let delay = floor $ diff * 1000000.0 when (diff > 0) $ threadDelay delay return ()++sched :: String -> String -> String -> Int -> IO () -> IO ()+sched username clientIp serverIp t f = + do mBps <- newEmptyMVar+ forkIO $ bpsListen username clientIp serverIp mBps+ change <- updateBps mBps 0+ realNow <- utcr+ let diff = realNow - changeTime change+ bps = changeBps change+ beat = changeBeat change + (diff * bps)+ nextbeat = fromIntegral $ ((floor beat) + t*2) - ((floor beat) `mod` t)+ current <- updateBps mBps nextbeat+ forkIO $ do waitBeat current (nextbeat - 1/32) + f+ return() clocked :: String -> String -> String -> Int -> (BpsChange -> Int -> IO ()) -> IO () clocked username clientIp serverIp tpb f =
netclock.cabal view
@@ -7,7 +7,7 @@ -- The package version. See the Haskell package versioning policy -- (http://www.haskell.org/haskellwiki/Package_versioning_policy) for -- standards guiding when and how versions should be incremented.-Version: 0.2+Version: 0.3 -- A short (one-line) description of the package. Synopsis: Netclock protocol