diff --git a/haskell/msgpack.cabal b/haskell/msgpack.cabal
index ba305296..8d91b151 100644
--- a/haskell/msgpack.cabal
+++ b/haskell/msgpack.cabal
@@ -1,12 +1,12 @@
Name: msgpack
-Version: 0.5.0.0
+Version: 0.6.0.0
Synopsis: A Haskell implementation of MessagePack
Description:
A Haskell implementation of MessagePack
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
@@ -22,10 +22,8 @@ Extra-source-files:
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 @@ Library
Data.MessagePack.Pack
Data.MessagePack.Unpack
Data.MessagePack.Object
- Data.MessagePack.Iteratee
Data.MessagePack.Derive
Source-repository head
diff --git a/haskell/src/Data/MessagePack.hs b/haskell/src/Data/MessagePack.hs
index 1c77ca91..801c2738 100644
--- a/haskell/src/Data/MessagePack.hs
+++ b/haskell/src/Data/MessagePack.hs
@@ -17,89 +17,11 @@ module Data.MessagePack(
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)
diff --git a/haskell/src/Data/MessagePack/Iteratee.hs b/haskell/src/Data/MessagePack/Iteratee.hs
deleted file mode 100644
index 553e2d17..00000000
--- a/haskell/src/Data/MessagePack/Iteratee.hs
+++ /dev/null
@@ -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)