simplexmq-6.5.0.16: SimpleXMQ message broker
Safe HaskellSafe-Inferred
LanguageHaskell2010

Simplex.Messaging.Agent.Client

Synopsis

Documentation

data AgentClient Source #

Constructors

AgentClient 

Fields

data CQRData r Source #

Constructors

CQRData 

newAgentClient :: Int -> InitialAgentServers -> UTCTime -> Map (Maybe SMPServer) (Maybe SystemSeconds) -> Env -> IO AgentClient Source #

Creates an SMP agent client instance that receives commands and sends responses via TBQueues.

withConnLock :: AgentClient -> ConnId -> Text -> AM a -> AM a Source #

withConnLocks :: AgentClient -> Set ConnId -> Text -> AM' a -> AM' a Source #

withInvLock :: AgentClient -> ByteString -> Text -> AM a -> AM a Source #

withLockMap :: (Ord k, MonadUnliftIO m) => TMap k Lock -> k -> Text -> m a -> m a Source #

withLocksMap :: (Ord k, MonadUnliftIO m) => TMap k Lock -> Set k -> Text -> m a -> m a Source #

getMapLock :: Ord k => TMap k Lock -> k -> STM Lock Source #

closeProtocolServerClients :: ProtocolServerClient v err msg => AgentClient -> (AgentClient -> TMap (TransportSession msg) (ClientVar msg)) -> IO () Source #

reconnectServerClients :: ProtocolServerClient v err msg => AgentClient -> (AgentClient -> TMap (TransportSession msg) (ClientVar msg)) -> IO () Source #

subscribeQueues :: AgentClient -> Bool -> [RcvQueueSub] -> AM' [(RcvQueueSub, Either AgentErrorType (Maybe ServiceId))] Source #

Batch by transport session and subscribe queues. The list of results can have a different order.

sendAgentMessage :: AgentClient -> SndQueue -> MsgFlags -> ByteString -> AM (Maybe SMPServer) Source #

agentCbDecrypt :: DhSecretX25519 -> CbNonce -> ByteString -> Either AgentErrorType ByteString Source #

NaCl crypto-box decrypt - both for messages received from the server and per-queue E2E encrypted messages from the sender that were inside.

logServer :: MonadIO m => ByteString -> AgentClient -> ProtocolServer s -> EntityId -> ByteString -> m () Source #

logSecret :: EntityId -> ByteString Source #

logSecret' :: ByteString -> ByteString Source #

hasGetLock :: SomeRcvQueue q => AgentClient -> q -> IO Bool Source #

agentDRG :: AgentClient -> TVar ChaChaDRG Source #

data ServerQueueInfo Source #

Constructors

ServerQueueInfo 

Fields

Instances

Instances details
FromJSON ServerQueueInfo Source # 
Instance details

Defined in Simplex.Messaging.Agent.Client

Methods

parseJSON :: Value -> Parser ServerQueueInfo

parseJSONList :: Value -> Parser [ServerQueueInfo]

omittedField :: Maybe ServerQueueInfo

ToJSON ServerQueueInfo Source # 
Instance details

Defined in Simplex.Messaging.Agent.Client

Show ServerQueueInfo Source # 
Instance details

Defined in Simplex.Messaging.Agent.Client

Methods

showsPrec :: Int -> ServerQueueInfo -> ShowS

show :: ServerQueueInfo -> String

showList :: [ServerQueueInfo] -> ShowS

data ServerSessions Source #

Constructors

ServerSessions 

Fields

Instances

Instances details
FromJSON ServerSessions Source # 
Instance details

Defined in Simplex.Messaging.Agent.Client

Methods

parseJSON :: Value -> Parser ServerSessions

parseJSONList :: Value -> Parser [ServerSessions]

omittedField :: Maybe ServerSessions

ToJSON ServerSessions Source # 
Instance details

Defined in Simplex.Messaging.Agent.Client

Methods

toJSON :: ServerSessions -> Value

toEncoding :: ServerSessions -> Encoding

toJSONList :: [ServerSessions] -> Value

toEncodingList :: [ServerSessions] -> Encoding

omitField :: ServerSessions -> Bool

Show ServerSessions Source # 
Instance details

Defined in Simplex.Messaging.Agent.Client

Methods

showsPrec :: Int -> ServerSessions -> ShowS

show :: ServerSessions -> String

showList :: [ServerSessions] -> ShowS

data SMPServerSubs Source #

Constructors

SMPServerSubs 

Fields

Instances

Instances details
FromJSON SMPServerSubs Source # 
Instance details

Defined in Simplex.Messaging.Agent.Client

Methods

parseJSON :: Value -> Parser SMPServerSubs

parseJSONList :: Value -> Parser [SMPServerSubs]

omittedField :: Maybe SMPServerSubs

ToJSON SMPServerSubs Source # 
Instance details

Defined in Simplex.Messaging.Agent.Client

Methods

toJSON :: SMPServerSubs -> Value

toEncoding :: SMPServerSubs -> Encoding

toJSONList :: [SMPServerSubs] -> Value

toEncodingList :: [SMPServerSubs] -> Encoding

omitField :: SMPServerSubs -> Bool

Show SMPServerSubs Source # 
Instance details

Defined in Simplex.Messaging.Agent.Client

Methods

showsPrec :: Int -> SMPServerSubs -> ShowS

show :: SMPServerSubs -> String

showList :: [SMPServerSubs] -> ShowS

protocolClientError :: (Show err, Encoding err) => (HostName -> err -> AgentErrorType) -> HostName -> ProtocolClientError err -> AgentErrorType Source #

data Worker Source #

Constructors

Worker 

Fields

data SessionVar a Source #

Constructors

SessionVar 

Fields

data SubscriptionsInfo Source #

Instances

Instances details
FromJSON SubscriptionsInfo Source # 
Instance details

Defined in Simplex.Messaging.Agent.Client

Methods

parseJSON :: Value -> Parser SubscriptionsInfo

parseJSONList :: Value -> Parser [SubscriptionsInfo]

omittedField :: Maybe SubscriptionsInfo

ToJSON SubscriptionsInfo Source # 
Instance details

Defined in Simplex.Messaging.Agent.Client

Show SubscriptionsInfo Source # 
Instance details

Defined in Simplex.Messaging.Agent.Client

Methods

showsPrec :: Int -> SubscriptionsInfo -> ShowS

show :: SubscriptionsInfo -> String

showList :: [SubscriptionsInfo] -> ShowS

data SubInfo Source #

Constructors

SubInfo 

Fields

Instances

Instances details
FromJSON SubInfo Source # 
Instance details

Defined in Simplex.Messaging.Agent.Client

Methods

parseJSON :: Value -> Parser SubInfo

parseJSONList :: Value -> Parser [SubInfo]

omittedField :: Maybe SubInfo

ToJSON SubInfo Source # 
Instance details

Defined in Simplex.Messaging.Agent.Client

Methods

toJSON :: SubInfo -> Value

toEncoding :: SubInfo -> Encoding

toJSONList :: [SubInfo] -> Value

toEncodingList :: [SubInfo] -> Encoding

omitField :: SubInfo -> Bool

Show SubInfo Source # 
Instance details

Defined in Simplex.Messaging.Agent.Client

Methods

showsPrec :: Int -> SubInfo -> ShowS

show :: SubInfo -> String

showList :: [SubInfo] -> ShowS

data AgentOperation Source #

Instances

Instances details
Show AgentOperation Source # 
Instance details

Defined in Simplex.Messaging.Agent.Client

Methods

showsPrec :: Int -> AgentOperation -> ShowS

show :: AgentOperation -> String

showList :: [AgentOperation] -> ShowS

Eq AgentOperation Source # 
Instance details

Defined in Simplex.Messaging.Agent.Client

data AgentOpState Source #

Constructors

AgentOpState 

Fields

data AgentState Source #

Instances

Instances details
Show AgentState Source # 
Instance details

Defined in Simplex.Messaging.Agent.Client

Methods

showsPrec :: Int -> AgentState -> ShowS

show :: AgentState -> String

showList :: [AgentState] -> ShowS

Eq AgentState Source # 
Instance details

Defined in Simplex.Messaging.Agent.Client

Methods

(==) :: AgentState -> AgentState -> Bool

(/=) :: AgentState -> AgentState -> Bool

data AgentLocks Source #

Constructors

AgentLocks 

Fields

Instances

Instances details
FromJSON AgentLocks Source # 
Instance details

Defined in Simplex.Messaging.Agent.Client

Methods

parseJSON :: Value -> Parser AgentLocks

parseJSONList :: Value -> Parser [AgentLocks]

omittedField :: Maybe AgentLocks

ToJSON AgentLocks Source # 
Instance details

Defined in Simplex.Messaging.Agent.Client

Methods

toJSON :: AgentLocks -> Value

toEncoding :: AgentLocks -> Encoding

toJSONList :: [AgentLocks] -> Value

toEncodingList :: [AgentLocks] -> Encoding

omitField :: AgentLocks -> Bool

Show AgentLocks Source # 
Instance details

Defined in Simplex.Messaging.Agent.Client

Methods

showsPrec :: Int -> AgentLocks -> ShowS

show :: AgentLocks -> String

showList :: [AgentLocks] -> ShowS

getAgentWorker :: (Ord k, Show k, AnyError e, MonadUnliftIO m) => String -> Bool -> AgentClient -> k -> TMap k Worker -> (Worker -> ExceptT e m ()) -> m Worker Source #

getAgentWorker' :: forall a k e m. (Ord k, Show k, AnyError e, MonadUnliftIO m) => (a -> Worker) -> (Worker -> STM a) -> String -> Bool -> AgentClient -> k -> TMap k a -> (a -> ExceptT e m ()) -> m a Source #

waitForWork :: MonadIO m => TMVar () -> m () Source #

hasWorkToDo :: Worker -> STM () Source #

hasWorkToDo' :: TMVar () -> STM () Source #

withWork :: AgentClient -> TMVar () -> (Connection -> IO (Either StoreError (Maybe a))) -> (a -> AM ()) -> AM () Source #

withWork_ :: (AnyStoreError e', MonadIO m) => AgentClient -> TMVar () -> ExceptT e m (Either e' (Maybe a)) -> (a -> ExceptT e m ()) -> ExceptT e m () Source #

withWorkItems :: (AnyStoreError e', MonadIO m) => AgentClient -> TMVar () -> ExceptT e m (Either e' [Either e' a]) -> (NonEmpty a -> ExceptT e m ()) -> ExceptT e m () Source #

agentOperationBracket :: MonadUnliftIO m => AgentClient -> AgentOperation -> (AgentClient -> IO ()) -> m a -> m a Source #

data UserNetworkInfo Source #

Constructors

UserNetworkInfo 

Fields

Instances

Instances details
FromJSON UserNetworkInfo Source # 
Instance details

Defined in Simplex.Messaging.Agent.Client

Methods

parseJSON :: Value -> Parser UserNetworkInfo

parseJSONList :: Value -> Parser [UserNetworkInfo]

omittedField :: Maybe UserNetworkInfo

ToJSON UserNetworkInfo Source # 
Instance details

Defined in Simplex.Messaging.Agent.Client

Show UserNetworkInfo Source # 
Instance details

Defined in Simplex.Messaging.Agent.Client

Methods

showsPrec :: Int -> UserNetworkInfo -> ShowS

show :: UserNetworkInfo -> String

showList :: [UserNetworkInfo] -> ShowS

data UserNetworkType Source #

Instances

Instances details
FromJSON UserNetworkType Source # 
Instance details

Defined in Simplex.Messaging.Agent.Client

Methods

parseJSON :: Value -> Parser UserNetworkType

parseJSONList :: Value -> Parser [UserNetworkType]

omittedField :: Maybe UserNetworkType

ToJSON UserNetworkType Source # 
Instance details

Defined in Simplex.Messaging.Agent.Client

Show UserNetworkType Source # 
Instance details

Defined in Simplex.Messaging.Agent.Client

Methods

showsPrec :: Int -> UserNetworkType -> ShowS

show :: UserNetworkType -> String

showList :: [UserNetworkType] -> ShowS

Eq UserNetworkType Source # 
Instance details

Defined in Simplex.Messaging.Agent.Client

whenSuspending :: AgentClient -> STM () -> STM () Source #

withStore :: AgentClient -> (Connection -> IO (Either StoreError a)) -> AM a Source #

withStoreBatch :: Traversable t => AgentClient -> (Connection -> t (IO (Either AgentErrorType a))) -> AM' (t (Either AgentErrorType a)) Source #

withStoreBatch' :: Traversable t => AgentClient -> (Connection -> t (IO a)) -> AM' (t (Either AgentErrorType a)) Source #

notifySub :: MonadIO m => AgentClient -> AEvent 'AENone -> m () Source #

notifySub' :: forall e m. (AEntityI e, MonadIO m) => AgentClient -> ConnId -> AEvent e -> m () Source #

incSMPServerStat' :: AgentClient -> UserId -> SMPServer -> (AgentSMPServerStats -> TVar Int) -> Int -> STM () Source #

incXFTPServerStat' :: AgentClient -> UserId -> XFTPServer -> (AgentXFTPServerStats -> TVar Int) -> Int -> STM () Source #

incXFTPServerSizeStat :: AgentClient -> UserId -> XFTPServer -> (AgentXFTPServerStats -> TVar Int64) -> Int64 -> STM () Source #

incNtfServerStat' :: AgentClient -> UserId -> NtfServer -> (AgentNtfServerStats -> TVar Int) -> Int -> STM () Source #

data AgentWorkersDetails Source #

Constructors

AgentWorkersDetails 

Fields

Instances

Instances details
FromJSON AgentWorkersDetails Source # 
Instance details

Defined in Simplex.Messaging.Agent.Client

ToJSON AgentWorkersDetails Source # 
Instance details

Defined in Simplex.Messaging.Agent.Client

Show AgentWorkersDetails Source # 
Instance details

Defined in Simplex.Messaging.Agent.Client

Methods

showsPrec :: Int -> AgentWorkersDetails -> ShowS

show :: AgentWorkersDetails -> String

showList :: [AgentWorkersDetails] -> ShowS

data AgentWorkersSummary Source #

Constructors

AgentWorkersSummary 

Fields

Instances

Instances details
FromJSON AgentWorkersSummary Source # 
Instance details

Defined in Simplex.Messaging.Agent.Client

ToJSON AgentWorkersSummary Source # 
Instance details

Defined in Simplex.Messaging.Agent.Client

Show AgentWorkersSummary Source # 
Instance details

Defined in Simplex.Messaging.Agent.Client

Methods

showsPrec :: Int -> AgentWorkersSummary -> ShowS

show :: AgentWorkersSummary -> String

showList :: [AgentWorkersSummary] -> ShowS

data AgentQueuesInfo Source #

Constructors

AgentQueuesInfo 

Fields

Instances

Instances details
FromJSON AgentQueuesInfo Source # 
Instance details

Defined in Simplex.Messaging.Agent.Client

Methods

parseJSON :: Value -> Parser AgentQueuesInfo

parseJSONList :: Value -> Parser [AgentQueuesInfo]

omittedField :: Maybe AgentQueuesInfo

ToJSON AgentQueuesInfo Source # 
Instance details

Defined in Simplex.Messaging.Agent.Client

Show AgentQueuesInfo Source # 
Instance details

Defined in Simplex.Messaging.Agent.Client

Methods

showsPrec :: Int -> AgentQueuesInfo -> ShowS

show :: AgentQueuesInfo -> String

showList :: [AgentQueuesInfo] -> ShowS