summaryrefslogtreecommitdiffhomepage
path: root/Val.hs
diff options
context:
space:
mode:
authorJoey Hess <joeyh@joeyh.name>2017-04-21 12:16:38 -0400
committerJoey Hess <joeyh@joeyh.name>2017-04-21 13:19:06 -0400
commite336a4fdf3d55f01b8c2871ceb906544a493eeb7 (patch)
treeb3af043b4323b0f353baef44439d786ae6d55bd2 /Val.hs
parentc4a04ead453bf783b79c5c0b263f657275794b25 (diff)
downloaddebug-me-e336a4fdf3d55f01b8c2871ceb906544a493eeb7.tar.gz
use cereal for efficient serialization for wire format
I tried both binary and cereal. For a ActivityMessage that takes 341 bytes in JSON and has a dataSize of 129, both used 165 bytes. Went with cereal since lazy bytestrings are not needed, and I might want to use https://hackage.haskell.org/package/safecopy later. (Perhaps I should be using protocol buffers or something to make it easier for non-haskell implementations? But that would complicate things a lot.)
Diffstat (limited to 'Val.hs')
-rw-r--r--Val.hs4
1 files changed, 3 insertions, 1 deletions
diff --git a/Val.hs b/Val.hs
index 40e718b..80ab8ed 100644
--- a/Val.hs
+++ b/Val.hs
@@ -3,9 +3,9 @@
module Val where
import Memory
+import Serialization
import GHC.Generics (Generic)
-import Data.Aeson
import Data.Aeson.Types
import qualified Codec.Binary.Base64 as B64
import qualified Data.Text as T
@@ -19,6 +19,8 @@ newtype Val = Val { val :: B.ByteString }
instance DataSize Val where
dataSize (Val b) = fromIntegral (B.length b)
+instance Serialize Val
+
-- | JSON instances for Val, using base64 encoding when the value
-- is not utf-8 encoded, and otherwise using a more efficient encoding.
instance ToJSON Val where