46 lines
1.3 KiB
Haskell
46 lines
1.3 KiB
Haskell
-- |
|
|
-- Module : Network.TLS.Measurement
|
|
-- License : BSD-style
|
|
-- Maintainer : Vincent Hanquez <vincent@snarc.org>
|
|
-- Stability : experimental
|
|
-- Portability : unknown
|
|
--
|
|
module Network.TLS.Measurement
|
|
( Measurement(..)
|
|
, newMeasurement
|
|
, addBytesReceived
|
|
, addBytesSent
|
|
, resetBytesCounters
|
|
, incrementNbHandshakes
|
|
) where
|
|
|
|
import Data.Word
|
|
|
|
-- | record some data about this connection.
|
|
data Measurement = Measurement
|
|
{ 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
|
|
{ nbHandshakes = 0
|
|
, bytesReceived = 0
|
|
, bytesSent = 0
|
|
}
|
|
|
|
addBytesReceived :: Int -> Measurement -> Measurement
|
|
addBytesReceived sz measure =
|
|
measure { bytesReceived = bytesReceived measure + fromIntegral sz }
|
|
|
|
addBytesSent :: Int -> Measurement -> Measurement
|
|
addBytesSent sz measure =
|
|
measure { bytesSent = bytesSent measure + fromIntegral sz }
|
|
|
|
resetBytesCounters :: Measurement -> Measurement
|
|
resetBytesCounters measure = measure { bytesReceived = 0, bytesSent = 0 }
|
|
|
|
incrementNbHandshakes :: Measurement -> Measurement
|
|
incrementNbHandshakes measure =
|
|
measure { nbHandshakes = nbHandshakes measure + 1 }
|