Safe Haskell | None |
---|
Connect to a single server or a replica set of servers
- type Secs = Double
- type IOE = ErrorT IOError IO
- runIOE :: ErrorT IOError IO a -> IO a
- type Pipe = Pipeline Response Message
- close :: Pipeline i o -> IO ()
- isClosed :: Pipeline i o -> IO Bool
- data Host = Host HostName PortID
- data PortID
- defaultPort :: PortID
- host :: HostName -> Host
- showHostPort :: Host -> String
- readHostPort :: String -> Host
- readHostPortM :: Monad m => String -> m Host
- globalConnectTimeout :: IORef Secs
- connect :: Host -> IOE Pipe
- connect' :: Secs -> Host -> IOE Pipe
- type ReplicaSetName = Text
- openReplicaSet :: (ReplicaSetName, [Host]) -> IOE ReplicaSet
- openReplicaSet' :: Secs -> (ReplicaSetName, [Host]) -> IOE ReplicaSet
- data ReplicaSet
- primary :: ReplicaSet -> IOE Pipe
- secondaryOk :: ReplicaSet -> IOE Pipe
- routedHost :: ((Host, Bool) -> (Host, Bool) -> IOE Ordering) -> ReplicaSet -> IOE Pipe
- closeReplicaSet :: ReplicaSet -> IO ()
- replSetName :: ReplicaSet -> Text
Util
runIOE :: ErrorT IOError IO a -> IO aSource
Run action while catching explicit error and rethrowing in IO monad
Connection
Server
Default MongoDB port = 27017
host :: HostName -> HostSource
Host on defaultPort
showHostPort :: Host -> StringSource
Display host as "host:port" TODO: Distinguish Service and UnixSocket port
readHostPort :: String -> HostSource
Read string "hostname:port" as Host hostname (PortNumber port)
or "hostname" as host hostname
(default port). Error if string does not match either syntax.
readHostPortM :: Monad m => String -> m HostSource
Read string "hostname:port" as Host hosthame (PortNumber port)
or "hostname" as host hostname
(default port). Fail if string does not match either syntax.
TODO: handle Service and UnixSocket port
globalConnectTimeout :: IORef SecsSource
connect
(and openReplicaSet
) fails if it can't connect within this many seconds (default is 6 seconds). Use 'connect\'' (and 'openReplicaSet\'') if you want to ignore this global and specify your own timeout. Note, this timeout only applies to initial connection establishment, not when reading/writing to the connection.
connect :: Host -> IOE PipeSource
Connect to Host returning pipelined TCP connection. Throw IOError if connection refused or no response within globalConnectTimeout
.
connect' :: Secs -> Host -> IOE PipeSource
Connect to Host returning pipelined TCP connection. Throw IOError if connection refused or no response within given number of seconds.
Replica Set
type ReplicaSetName = TextSource
openReplicaSet :: (ReplicaSetName, [Host]) -> IOE ReplicaSetSource
Open connections (on demand) to servers in replica set. Supplied hosts is seed list. At least one of them must be a live member of the named replica set, otherwise fail. The value of globalConnectTimeout
at the time of this call is the timeout used for future member connect attempts. To use your own value call 'openReplicaSet\'' instead.
openReplicaSet' :: Secs -> (ReplicaSetName, [Host]) -> IOE ReplicaSetSource
Open connections (on demand) to servers in replica set. Supplied hosts is seed list. At least one of them must be a live member of the named replica set, otherwise fail. Supplied seconds timeout is used for connect attempts to members.
data ReplicaSet Source
Maintains a connection (created on demand) to each server in the named replica set
primary :: ReplicaSet -> IOE PipeSource
Return connection to current primary of replica set. Fail if no primary available.
secondaryOk :: ReplicaSet -> IOE PipeSource
Return connection to a random secondary, or primary if no secondaries available.
routedHost :: ((Host, Bool) -> (Host, Bool) -> IOE Ordering) -> ReplicaSet -> IOE PipeSource
Return a connection to a host using a user-supplied sorting function, which sorts based on a tuple containing the host and a boolean indicating whether the host is primary.
closeReplicaSet :: ReplicaSet -> IO ()Source
Close all connections to replica set
replSetName :: ReplicaSet -> TextSource
name of connected replica set