vaultaire-common-2.9.1: lib/Vaultaire/Types/WriteResult.hs
{-# LANGUAGE OverloadedStrings #-}
--
-- Data vault for metrics
--
--
-- Copyright © 2013-2014 Anchor Systems, Pty Ltd and Others
--
-- The code in this file, and the program it is a part of, is
-- made available to you by its authors as open source software:
-- you can redistribute it and/or modify it under the terms of
-- the 3-clause BSD licence.
--
module Vaultaire.Types.WriteResult
(
WriteResult(..),
) where
import Control.Exception (SomeException (..))
import Test.QuickCheck
import Vaultaire.Classes.WireFormat
data WriteResult = InvalidWriteOrigin | OnDisk
deriving (Show, Eq)
instance WireFormat WriteResult where
fromWire bs
| bs == "\x00" = Right OnDisk
| bs == "\x01" = Right InvalidWriteOrigin
| otherwise = Left $ SomeException $ userError "Invalid WriteResult packet"
toWire OnDisk = "\x00"
toWire InvalidWriteOrigin = "\x01"
instance Arbitrary WriteResult where
arbitrary = oneof [ return InvalidWriteOrigin, return OnDisk ]