vaultaire-common-2.9.1: lib/Vaultaire/Types/Decoded.hs
module Vaultaire.Types.Decoded
( SimplePoint(..)
, ExtendedPoint(..)
) where
import Data.Word (Word64)
import Data.ByteString (ByteString)
import Vaultaire.Types.Address
import Vaultaire.Types.TimeStamp
-- | SimplePoints are simply wrapped packets for Vaultaire
-- Each consists of 24 bytes:
-- An 8 byte Address
-- An 8 byte Timestamp (nanoseconds since Unix epoch)
-- An 8 byte Payload
data SimplePoint = SimplePoint { simpleAddress :: {-# UNPACK #-} !Address
, simpleTime :: {-# UNPACK #-} !TimeStamp
, simplePayload :: {-# UNPACK #-} !Word64 }
deriving (Show, Eq)
-- | ExtendedPoints are simply wrapped packets for Vaultaire
-- Each consists of 16 + 'length' bytes:
-- An 8 byte Address
-- An 8 byte Time (in nanoseconds since Unix epoch)
-- A 'length' byte Payload
-- On the wire their equivalent representation takes up
-- 24 + 'length' bytes with format:
-- 8 byte Address, 8 byte Time, 8 byte Length, Payload
data ExtendedPoint = ExtendedPoint { extendedAddress :: Address
, extendedTime :: TimeStamp
, extendedPayload :: ByteString }
deriving (Show, Eq)