1-- |
2-- Module      : Network.TLS.Measurement
3-- License     : BSD-style
4-- Maintainer  : Vincent Hanquez <vincent@snarc.org>
5-- Stability   : experimental
6-- Portability : unknown
7--
8module Network.TLS.Measurement
9        ( Measurement(..)
10        , newMeasurement
11        , addBytesReceived
12        , addBytesSent
13        , resetBytesCounters
14        , incrementNbHandshakes
15        ) where
16
17import Network.TLS.Imports
18
19-- | record some data about this connection.
20data Measurement = Measurement
21        { nbHandshakes  :: !Word32 -- ^ number of handshakes on this context
22        , bytesReceived :: !Word32 -- ^ bytes received since last handshake
23        , bytesSent     :: !Word32 -- ^ bytes sent since last handshake
24        } deriving (Show,Eq)
25
26newMeasurement :: Measurement
27newMeasurement = Measurement
28        { nbHandshakes  = 0
29        , bytesReceived = 0
30        , bytesSent     = 0
31        }
32
33addBytesReceived :: Int -> Measurement -> Measurement
34addBytesReceived sz measure =
35        measure { bytesReceived = bytesReceived measure + fromIntegral sz }
36
37addBytesSent :: Int -> Measurement -> Measurement
38addBytesSent sz measure =
39        measure { bytesSent = bytesSent measure + fromIntegral sz }
40
41resetBytesCounters :: Measurement -> Measurement
42resetBytesCounters measure = measure { bytesReceived = 0, bytesSent = 0 }
43
44incrementNbHandshakes :: Measurement -> Measurement
45incrementNbHandshakes measure =
46        measure { nbHandshakes = nbHandshakes measure + 1 }
47