From a4592a399181aa27bde2ff954eb1077735474566 Mon Sep 17 00:00:00 2001 From: James Crayne Date: Mon, 22 Jun 2015 21:51:59 -0400 Subject: Serialization, refactoring... --- KikiD/Message.hs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'KikiD/Message.hs') diff --git a/KikiD/Message.hs b/KikiD/Message.hs index cd3ee71..efefdc6 100644 --- a/KikiD/Message.hs +++ b/KikiD/Message.hs @@ -12,6 +12,7 @@ import Data.Bytes.Put as Put import Data.Bytes.Get as Get import Codec.LineReady import Control.Monad.Loops +import Data.Word data KikiDMessage = TODO deriving (Show,Read) @@ -31,7 +32,11 @@ instance Serialize KikiDMessage where instance Serial KikiDMessage where serialize m = Put.putByteString . toLineReady . Cereal.encode $ m deserialize = do - xs <- unfoldWhileM (/= '\n') (fmap (chr . fromIntegral) Get.getWord8) + xs <- unfoldM $ do + flag <- Get.isEmpty + if flag then return Nothing else do + c <- fmap (chr . fromIntegral) Get.getWord8 + if (c == '\n') then return Nothing else return (Just c) case (Cereal.decode . fromLineReady $ B.pack xs) of Left str -> fail str Right x -> return x -- cgit v1.2.3