msgpack 0.5.0.0 → 0.6.0.0
raw patch · 3 files changed
+4/−167 lines, 3 filesdep −MonadCatchIO-transformersdep −iterateePVP ok
version bump matches the API change (PVP)
Dependencies removed: MonadCatchIO-transformers, iteratee
API changes (from Hackage documentation)
- Data.MessagePack: packToFile :: FilePath -> Put -> IO ()
- Data.MessagePack: packToHandle :: Handle -> Put -> IO ()
- Data.MessagePack: packToHandle' :: Handle -> Put -> IO ()
- Data.MessagePack: packToString :: Put -> ByteString
- Data.MessagePack: unpackFromFile :: MonadCatchIO m => FilePath -> Parser a -> m a
- Data.MessagePack: unpackFromFileI :: MonadCatchIO m => FilePath -> Iteratee ByteString m a -> m a
- Data.MessagePack: unpackFromHandle :: MonadCatchIO m => Handle -> Parser a -> m a
- Data.MessagePack: unpackFromHandleI :: MonadCatchIO m => Handle -> Iteratee ByteString m a -> m a
- Data.MessagePack: unpackFromString :: (Monad m, IsByteString s) => s -> Parser a -> m a
- Data.MessagePack: unpackFromStringI :: (Monad m, IsByteString s) => s -> Iteratee ByteString m a -> m a
- Data.MessagePack.Iteratee: enumHandleNonBlocking :: MonadIO m => Int -> Handle -> Enumerator ByteString m a
- Data.MessagePack.Iteratee: getI :: (Monad m, Unpackable a) => Iteratee ByteString m a
- Data.MessagePack.Iteratee: parserToIteratee :: Monad m => Parser a -> Iteratee ByteString m a
Files
- msgpack.cabal +4/−7
- src/Data/MessagePack.hs +0/−78
- src/Data/MessagePack/Iteratee.hs +0/−82
msgpack.cabal view
@@ -1,12 +1,12 @@ Name: msgpack-Version: 0.5.0.0-Synopsis: A Haskell binding to MessagePack+Version: 0.6.0.0+Synopsis: A Haskell implementation of MessagePack Description:- A Haskell binding to MessagePack <http://msgpack.org/>+ A Haskell implementation of MessagePack <http://msgpack.org/> License: BSD3 License-File: LICENSE-Copyright: Copyright (c) 2009-2010, Hideyuki Tanaka+Copyright: Copyright (c) 2009-2011, Hideyuki Tanaka Category: Data Author: Hideyuki Tanaka Maintainer: Hideyuki Tanaka <tanaka.hideyuki@gmail.com>@@ -22,10 +22,8 @@ Library Build-depends: base >=4 && <5, transformers >= 0.2 && < 0.3,- MonadCatchIO-transformers >= 0.2.2 && < 0.2.3, bytestring >= 0.9 && < 0.10, vector >= 0.7 && < 0.8,- iteratee >= 0.8 && < 0.9, attoparsec >= 0.8 && < 0.9, binary >= 0.5.0 && < 0.5.1, data-binary-ieee754 >= 0.4 && < 0.5,@@ -41,7 +39,6 @@ Data.MessagePack.Pack Data.MessagePack.Unpack Data.MessagePack.Object- Data.MessagePack.Iteratee Data.MessagePack.Derive Source-repository head
src/Data/MessagePack.hs view
@@ -17,89 +17,11 @@ module Data.MessagePack.Pack, module Data.MessagePack.Unpack, module Data.MessagePack.Object,- module Data.MessagePack.Iteratee, module Data.MessagePack.Derive,- - -- * Pack functions- packToString,- packToHandle,- packToHandle',- packToFile,- - -- * Unpack functions- unpackFromString,- unpackFromHandle,- unpackFromFile,- unpackFromStringI,- unpackFromHandleI,- unpackFromFileI,- ) where -import qualified Control.Monad.CatchIO as CIO-import Control.Monad.IO.Class-import qualified Data.Attoparsec as A-import Data.Binary.Put-import qualified Data.ByteString as B-import qualified Data.ByteString.Lazy as L-import qualified Data.Iteratee as I-import System.IO- import Data.MessagePack.Assoc import Data.MessagePack.Pack import Data.MessagePack.Unpack import Data.MessagePack.Object-import Data.MessagePack.Iteratee import Data.MessagePack.Derive--bufferSize :: Int-bufferSize = 4 * 1024---- | Pack to ByteString.-packToString :: Put -> L.ByteString-packToString = runPut---- | Pack to Handle-packToHandle :: Handle -> Put -> IO ()-packToHandle h = L.hPutStr h . packToString---- | Pack to Handle and Flush Handle-packToHandle' :: Handle -> Put -> IO ()-packToHandle' h p = packToHandle h p >> hFlush h---- | Pack to File-packToFile :: FilePath -> Put -> IO ()-packToFile path = L.writeFile path . packToString---- | Unpack from ByteString-unpackFromString :: (Monad m, IsByteString s) => s -> A.Parser a -> m a-unpackFromString bs =- unpackFromStringI bs . parserToIteratee---- | Unpack from Handle-unpackFromHandle :: CIO.MonadCatchIO m => Handle -> A.Parser a -> m a-unpackFromHandle h =- unpackFromHandleI h .parserToIteratee---- | Unpack from File-unpackFromFile :: CIO.MonadCatchIO m => FilePath -> A.Parser a -> m a-unpackFromFile path =- unpackFromFileI path . parserToIteratee---- | Iteratee interface to unpack from ByteString-unpackFromStringI :: (Monad m, IsByteString s) => s -> I.Iteratee B.ByteString m a -> m a-unpackFromStringI bs =- I.run . I.joinIM . I.enumPure1Chunk (toBS bs)---- | Iteratee interface to unpack from Handle-unpackFromHandleI :: CIO.MonadCatchIO m => Handle -> I.Iteratee B.ByteString m a -> m a-unpackFromHandleI h =- I.run . I.joinIM . enumHandleNonBlocking bufferSize h---- | Iteratee interface to unpack from File-unpackFromFileI :: CIO.MonadCatchIO m => FilePath -> I.Iteratee B.ByteString m a -> m a-unpackFromFileI path p =- CIO.bracket- (liftIO $ openBinaryFile path ReadMode)- (liftIO . hClose)- (flip unpackFromHandleI p)
− src/Data/MessagePack/Iteratee.hs
@@ -1,82 +0,0 @@------------------------------------------------------------------------ |--- Module : Data.MessagePack.Iteratee--- Copyright : (c) Hideyuki Tanaka, 2009-2010--- License : BSD3------ Maintainer: tanaka.hideyuki@gmail.com--- Stability : experimental--- Portability: portable------ MessagePack Deserializer interface to @Data.Iteratee@--------------------------------------------------------------------------module Data.MessagePack.Iteratee(- -- * Iteratee version of deserializer- getI,- -- * Non Blocking Enumerator- enumHandleNonBlocking,- -- * Convert Parser to Iteratee- parserToIteratee,- ) where--import Control.Exception-import Control.Monad.IO.Class-import qualified Data.Attoparsec as A-import qualified Data.ByteString as B-import qualified Data.Iteratee as I-import System.IO--import Data.MessagePack.Unpack---- | Deserialize a value-getI :: (Monad m, Unpackable a) => I.Iteratee B.ByteString m a-getI = parserToIteratee get---- | Enumerator-enumHandleNonBlocking :: MonadIO m => Int -> Handle -> I.Enumerator B.ByteString m a-enumHandleNonBlocking bufSize h =- I.enumFromCallback (readSome bufSize h) ()--readSome :: MonadIO m => Int -> Handle -> st -> m (Either SomeException ((Bool, st), B.ByteString))-readSome bufSize h st = liftIO $ do- ebs <- try $ hGetSome bufSize h- case ebs of- Left exc ->- return $ Left (exc :: SomeException)- Right bs | B.null bs ->- return $ Right ((False, st), B.empty)- Right bs ->- return $ Right ((True, st), bs)--hGetSome :: Int -> Handle -> IO B.ByteString-hGetSome bufSize h = do- bs <- B.hGetNonBlocking h bufSize- if B.null bs- then do- hd <- B.hGet h 1- if B.null hd- then do- return B.empty- else do- rest <- B.hGetNonBlocking h (bufSize - 1)- return $ B.cons (B.head hd) rest- else do- return bs---- | Convert Parser to Iteratee-parserToIteratee :: Monad m => A.Parser a -> I.Iteratee B.ByteString m a-parserToIteratee p = I.icont (itr (A.parse p)) Nothing- where- itr pcont s = case s of- I.EOF _ ->- I.throwErr (I.setEOF s)- I.Chunk bs ->- case pcont bs of- A.Fail _ _ msg ->- I.throwErr (I.iterStrExc msg)- A.Partial cont ->- I.icont (itr cont) Nothing- A.Done remain ret ->- I.idone ret (I.Chunk remain)