Safe Haskell | None |
---|---|
Language | Haskell2010 |
DMCC session handling.
Synopsis
- data Session = Session {
- protocolVersion :: Text
- dmccHandle :: DMCCHandle
- webHook :: Maybe (Request, Manager)
- agents :: TVar (Map AgentId Agent)
- agentLocks :: TVar (Set AgentId)
- startSession :: (MonadUnliftIO m, MonadLoggerIO m, MonadBaseControl IO m, MonadCatch m) => (String, PortNumber) -> Maybe FilePath -> Text -> Text -> Maybe String -> SessionOptions -> m Session
- stopSession :: (MonadUnliftIO m, MonadLoggerIO m, MonadBaseControl IO m, MonadCatch m) => Session -> m ()
- defaultSessionOptions :: SessionOptions
- data DMCCError = ApplicationSessionFailed
- data DMCCHandle = DMCCHandle {
- connection :: TMVar ConnectionData
- dmccSession :: TMVar (Text, Int)
- reconnect :: forall m. (MonadUnliftIO m, MonadLoggerIO m, MonadBaseControl IO m, MonadCatch m) => m ()
- pingThread :: ThreadId
- readThread :: ThreadId
- procThread :: ThreadId
- invokeId :: TVar Int
- syncResponses :: TVar (IntMap (TMVar (Maybe Response)))
- agentRequests :: TVar (IntMap AgentId)
- sessionOptions :: SessionOptions
- sendRequestSync :: (MonadUnliftIO m, MonadLoggerIO m, MonadBaseControl IO m, MonadCatch m) => DMCCHandle -> Maybe AgentId -> Request -> m (Maybe Response)
- sendRequestAsync :: (MonadUnliftIO m, MonadLoggerIO m, MonadBaseControl IO m, MonadCatch m) => DMCCHandle -> Maybe AgentId -> Request -> m ()
Documentation
Library API session.
Session | |
|
:: (MonadUnliftIO m, MonadLoggerIO m, MonadBaseControl IO m, MonadCatch m) | |
=> (String, PortNumber) | Host and port of AES server. |
-> Maybe FilePath | AES CA certificates directory for TLS. |
-> Text | DMCC API user. |
-> Text | DMCC API password. |
-> Maybe String | Web hook URL. |
-> SessionOptions | |
-> m Session |
stopSession :: (MonadUnliftIO m, MonadLoggerIO m, MonadBaseControl IO m, MonadCatch m) => Session -> m () Source #
TODO Agent releasing notice
Instances
Show DMCCError Source # | |
Exception DMCCError Source # | |
Defined in DMCC.Session toException :: DMCCError -> SomeException # fromException :: SomeException -> Maybe DMCCError # displayException :: DMCCError -> String # |
data DMCCHandle Source #
Low-level DMCC API plumbing.
DMCCHandle | |
|
:: (MonadUnliftIO m, MonadLoggerIO m, MonadBaseControl IO m, MonadCatch m) | |
=> DMCCHandle | |
-> Maybe AgentId | Push erroneous responses to this agent's event processor. TODO Disallow unknown agents on type level (use AgentHandle). |
-> Request | |
-> m (Maybe Response) |
Send a request and block until the response arrives or a write exception occurs. No request is sent until a connection and an application session become available. Write exceptions cause a reconnection and a session restart, Nothing is returned in this case.
This must not be used to for session setup as this requires an active DMCC application session!
Write errors are made explicit here because sendRequestSync
is
called from multiple locations, making it tedious to install the
reconnection handler everywhere.
:: (MonadUnliftIO m, MonadLoggerIO m, MonadBaseControl IO m, MonadCatch m) | |
=> DMCCHandle | |
-> Maybe AgentId | Push erroneous responses to this agent's event processor. |
-> Request | |
-> m () |
Like sendRequestAsync
, but do not wait for a result.