hasbolt 0.1.0.9 → 0.1.1.0
raw patch · 3 files changed
+20/−17 lines, 3 filesdep ~QuickCheckdep ~basedep ~hasboltPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: QuickCheck, base, hasbolt, hspec
API changes (from Hackage documentation)
Files
- hasbolt.cabal +5/−5
- src/Database/Bolt.hs +1/−0
- src/Database/Bolt/Connection/Pipe.hs +14/−12
hasbolt.cabal view
@@ -1,5 +1,5 @@ name: hasbolt-version: 0.1.0.9+version: 0.1.1.0 cabal-version: >=1.10 build-type: Simple license: BSD3@@ -62,10 +62,10 @@ type: exitcode-stdio-1.0 main-is: Spec.hs build-depends:- base >=4.9.0.0 && <4.10,- hasbolt >=0.1.0.9 && <0.2,- hspec >=2.2.4 && <2.3,- QuickCheck >=2.8.2 && <2.9,+ base >=4.8 && <5,+ hasbolt >=0.1.1.0 && <0.2,+ hspec >=2.4.1 && <2.5,+ QuickCheck >=2.9.2 && <2.10, hex >=0.1.2 && <0.2, text >=1.2.2.1 && <1.3, containers >=0.5.7.1 && <0.6,
src/Database/Bolt.hs view
@@ -17,3 +17,4 @@ import Database.Bolt.Value.Type import Data.Default (Default (..))+
src/Database/Bolt/Connection/Pipe.hs view
@@ -11,12 +11,13 @@ import Control.Monad.IO.Class (MonadIO (..)) import Data.Binary (Binary (..)) import Data.ByteString (ByteString)-import qualified Data.ByteString as B (concat, length,- null, splitAt)+import qualified Data.ByteString as B (concat, length, null,+ splitAt) import Data.Maybe (fromMaybe) import Data.Word (Word16, Word32) import Network.Simple.TCP (Socket, closeSock,- connectSock, recv, send)+ connectSock, recv, send,+ sendMany) -- |Creates new 'Pipe' instance to use all requests through connect :: MonadIO m => BoltCfg -> m Pipe@@ -44,16 +45,17 @@ discardAll pipe = flush pipe RequestDiscardAll >> void (fetch pipe) flush :: MonadIO m => Pipe -> Request -> m ()-flush pipe request = do let bs = pack $ toStructure request- let chunkSize = chunkSizeFor (mcs pipe) bs- let chunks = split chunkSize bs- let terminal = encodeStrict (0 :: Word16)- let sock = connectionSocket pipe- forM_ chunks $ \chunk -> do- let size = fromIntegral (B.length chunk) :: Word16- send sock $ encodeStrict size- send sock chunk+flush pipe request = do forM_ chunks $ sendMany sock . mkChunk send sock terminal+ where bs = pack $ toStructure request+ chunkSize = chunkSizeFor (mcs pipe) bs+ chunks = split chunkSize bs+ terminal = encodeStrict (0 :: Word16)+ sock = connectionSocket pipe++ mkChunk :: ByteString -> [ByteString]+ mkChunk chunk = let size = fromIntegral (B.length chunk) :: Word16+ in [encodeStrict size, chunk] fetch :: MonadIO m => Pipe -> m Response fetch pipe = do bs <- B.concat <$> chunks