hs-tls/core/Network/TLS/Measurement.hs

47 lines
1.4 KiB
Haskell
Raw Normal View History

-- |
-- Module : Network.TLS.Measurement
-- License : BSD-style
-- Maintainer : Vincent Hanquez <vincent@snarc.org>
-- Stability : experimental
-- Portability : unknown
--
module Network.TLS.Measurement
2012-03-27 07:57:51 +00:00
( Measurement(..)
, newMeasurement
, addBytesReceived
, addBytesSent
, resetBytesCounters
, incrementNbHandshakes
) where
import Data.Word
-- | record some data about this connection.
data Measurement = Measurement
2012-03-27 07:57:51 +00:00
{ nbHandshakes :: !Word32 -- ^ number of handshakes on this context
, bytesReceived :: !Word32 -- ^ bytes received since last handshake
, bytesSent :: !Word32 -- ^ bytes sent since last handshake
} deriving (Show,Eq)
newMeasurement :: Measurement
newMeasurement = Measurement
2012-03-27 07:57:51 +00:00
{ nbHandshakes = 0
, bytesReceived = 0
, bytesSent = 0
}
addBytesReceived :: Int -> Measurement -> Measurement
addBytesReceived sz measure =
2012-03-27 07:57:51 +00:00
measure { bytesReceived = bytesReceived measure + fromIntegral sz }
addBytesSent :: Int -> Measurement -> Measurement
addBytesSent sz measure =
2012-03-27 07:57:51 +00:00
measure { bytesSent = bytesSent measure + fromIntegral sz }
resetBytesCounters :: Measurement -> Measurement
resetBytesCounters measure = measure { bytesReceived = 0, bytesSent = 0 }
incrementNbHandshakes :: Measurement -> Measurement
incrementNbHandshakes measure =
2012-03-27 07:57:51 +00:00
measure { nbHandshakes = nbHandshakes measure + 1 }