octane-0.4.16: library/Octane/Type/CacheItem.hs
{-# LANGUAGE DeriveGeneric #-}
module Octane.Type.CacheItem (CacheItem(..)) where
import qualified Control.DeepSeq as DeepSeq
import qualified Data.Aeson.Types as Aeson
import qualified Data.Binary as Binary
import Data.Function ((&))
import qualified GHC.Generics as Generics
import qualified Octane.Type.CacheProperty as CacheProperty
import qualified Octane.Type.Primitive.List as List
import qualified Octane.Type.Primitive.Word32LE as Word32LE
data CacheItem = CacheItem
{ cacheItemTag :: Word32LE.Word32LE
, cacheItemStart :: Word32LE.Word32LE
, cacheItemEnd :: Word32LE.Word32LE
, cacheItemCacheProperties :: List.List CacheProperty.CacheProperty
} deriving (Eq,Generics.Generic,Show)
instance Binary.Binary CacheItem where
get = CacheItem <$> Binary.get <*> Binary.get <*> Binary.get <*> Binary.get
put cacheItem = do
cacheItem & cacheItemTag & Binary.put
cacheItem & cacheItemStart & Binary.put
cacheItem & cacheItemEnd & Binary.put
cacheItem & cacheItemCacheProperties & Binary.put
instance DeepSeq.NFData CacheItem
instance Aeson.ToJSON CacheItem where
toJSON =
Aeson.genericToJSON
Aeson.defaultOptions
{ Aeson.fieldLabelModifier = drop 9
}