- class (Typeable a, Version a) => Serialize a where
- class Version a where
- class Migrate a b where
- migrate :: a -> b
- data Mode a
- data Contained a
- contain :: a -> Contained a
- extension :: forall a b. (Serialize b, Migrate b a) => VersionId a -> Proxy b -> Mode a
- safeGet :: forall a. Serialize a => Get a
- safePut :: forall a. Serialize a => a -> Put
- getSafeGet :: forall a. Serialize a => Get (Get a)
- getSafePut :: forall a. Serialize a => PutM (a -> Put)
- serialize :: Serialize a => a -> ByteString
- deserialize :: Serialize a => ByteString -> (a, ByteString)
- collectVersions :: forall a. (Typeable a, Version a) => Proxy a -> [ByteString]
- data Object
- mkObject :: Serialize a => a -> Object
- deserializeObject :: ByteString -> (Object, ByteString)
- parseObject :: Serialize a => Object -> a
- module Happstack.Data.Proxy
Documentation
The Version type class is used to describe whether a type is fundamental
or if it is meant to extend another type. For a user defined type that
does not extend any others, one can use the default instance of Version, e.g.
instance Version MyType
to define it has having a version id of 0 and previous
type.
Migrate instances are needed to allow upgrades of MACID state. It should be declared as instance Migrate Old New where migrate = transition_function
extension :: forall a b. (Serialize b, Migrate b a) => VersionId a -> Proxy b -> Mode aSource
Creates a Mode that is a new version of the type carried by the provided proxy
and with the provided version number. Note that since VersionId is an instance of
Num that you may use int literals when calling extension, e.g.
extension 1 (Proxy :: Proxy OldState)
safeGet :: forall a. Serialize a => Get aSource
Equivalent of Data.Binary.get for instances of Serialize Takes into account versioning of types.
safePut :: forall a. Serialize a => a -> PutSource
Equivalent of Data.Binary.put for instances of Serialize. Takes into account versioning of types.
getSafeGet :: forall a. Serialize a => Get (Get a)Source
getSafePut :: forall a. Serialize a => PutM (a -> Put)Source
serialize :: Serialize a => a -> ByteStringSource
Pure version of safePut
. Serializes to a ByteString
deserialize :: Serialize a => ByteString -> (a, ByteString)Source
Pure version of safeGet
. Parses a ByteString into the expected type
and a remainder.
collectVersions :: forall a. (Typeable a, Version a) => Proxy a -> [ByteString]Source
Version lookups
Uniform container for any serialized data. It contains a string rep of the type and the actual data serialized to a byte string.
mkObject :: Serialize a => a -> ObjectSource
Serializes data and stores it along with its type name in an Object
deserializeObject :: ByteString -> (Object, ByteString)Source
deserialize
specialized to Objects
parseObject :: Serialize a => Object -> aSource
Attempts to convert an Object back into its base type.
If the conversion fails error
will be called.
module Happstack.Data.Proxy