mongodb/Database/MongoDB/Transport.hs

41 lines
1,002 B
Haskell
Raw Normal View History

2016-06-21 01:49:31 +00:00
{-|
Module : MongoDB TLS
Copyright : (c) Victor Denisov, 2016
License : Apache 2.0
Maintainer : Victor Denisov denisovenator@gmail.com
Stability : alpha
Portability : POSIX
2016-06-21 01:49:31 +00:00
This module defines a connection interface. It could be a regular
network connection, TLS connection, a mock or anything else.
-}
module Database.MongoDB.Transport (
Transport(..),
fromHandle,
) where
import Prelude hiding (read)
import Data.ByteString (ByteString)
import qualified Data.ByteString as ByteString
import System.IO
-- | Abstract transport interface
2020-04-01 14:53:37 +00:00
--
-- `read` should return `ByteString.null` on EOF
data Transport = Transport {
2020-04-01 14:53:37 +00:00
read :: Int -> IO ByteString,
write :: ByteString -> IO (),
flush :: IO (),
close :: IO ()}
fromHandle :: Handle -> IO Transport
2016-06-21 01:49:31 +00:00
-- ^ Make connection from handle
fromHandle handle = do
return Transport
2016-05-02 02:05:51 +00:00
{ read = ByteString.hGet handle
, write = ByteString.hPut handle
, flush = hFlush handle
, close = hClose handle
}