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

Simplex.Messaging.Server.MsgStore.Journal

Documentation

data JournalMsgStore s Source #

Instances

Instances details
MsgStoreClass (JournalMsgStore s) Source # 
Instance details

Defined in Simplex.Messaging.Server.MsgStore.Journal

Associated Types

type StoreMonad (JournalMsgStore s) = (m :: Type -> Type) Source #

type MsgStoreConfig (JournalMsgStore s) = (c :: Type) Source #

type MsgQueue (JournalMsgStore s) = (q :: Type) Source #

type StoreQueue (JournalMsgStore s) = (q :: Type) Source #

type QueueStore (JournalMsgStore s) = (qs :: Type) Source #

Methods

newMsgStore :: MsgStoreConfig (JournalMsgStore s) -> IO (JournalMsgStore s) Source #

closeMsgStore :: JournalMsgStore s -> IO () Source #

withActiveMsgQueues :: Monoid a => JournalMsgStore s -> (StoreQueue (JournalMsgStore s) -> IO a) -> IO a Source #

unsafeWithAllMsgQueues :: Monoid a => Bool -> JournalMsgStore s -> (StoreQueue (JournalMsgStore s) -> IO a) -> IO a Source #

expireOldMessages :: Bool -> JournalMsgStore s -> Int64 -> Int64 -> IO MessageStats Source #

logQueueStates :: JournalMsgStore s -> IO () Source #

logQueueState :: StoreQueue (JournalMsgStore s) -> StoreMonad (JournalMsgStore s) () Source #

queueStore :: JournalMsgStore s -> QueueStore (JournalMsgStore s) Source #

loadedQueueCounts :: JournalMsgStore s -> IO LoadedQueueCounts Source #

mkQueue :: JournalMsgStore s -> Bool -> RecipientId -> QueueRec -> IO (StoreQueue (JournalMsgStore s)) Source #

getMsgQueue :: JournalMsgStore s -> StoreQueue (JournalMsgStore s) -> Bool -> StoreMonad (JournalMsgStore s) (MsgQueue (JournalMsgStore s)) Source #

getPeekMsgQueue :: JournalMsgStore s -> StoreQueue (JournalMsgStore s) -> StoreMonad (JournalMsgStore s) (Maybe (MsgQueue (JournalMsgStore s), Message)) Source #

withIdleMsgQueue :: Int64 -> JournalMsgStore s -> StoreQueue (JournalMsgStore s) -> (MsgQueue (JournalMsgStore s) -> StoreMonad (JournalMsgStore s) a) -> StoreMonad (JournalMsgStore s) (Maybe a, Int) Source #

deleteQueue :: JournalMsgStore s -> StoreQueue (JournalMsgStore s) -> IO (Either ErrorType QueueRec) Source #

deleteQueueSize :: JournalMsgStore s -> StoreQueue (JournalMsgStore s) -> IO (Either ErrorType (QueueRec, Int)) Source #

getQueueMessages_ :: Bool -> StoreQueue (JournalMsgStore s) -> MsgQueue (JournalMsgStore s) -> StoreMonad (JournalMsgStore s) [Message] Source #

writeMsg :: JournalMsgStore s -> StoreQueue (JournalMsgStore s) -> Bool -> Message -> ExceptT ErrorType IO (Maybe (Message, Bool)) Source #

setOverQuota_ :: StoreQueue (JournalMsgStore s) -> IO () Source #

getQueueSize_ :: MsgQueue (JournalMsgStore s) -> StoreMonad (JournalMsgStore s) Int Source #

tryPeekMsg_ :: StoreQueue (JournalMsgStore s) -> MsgQueue (JournalMsgStore s) -> StoreMonad (JournalMsgStore s) (Maybe Message) Source #

tryDeleteMsg_ :: StoreQueue (JournalMsgStore s) -> MsgQueue (JournalMsgStore s) -> Bool -> StoreMonad (JournalMsgStore s) () Source #

isolateQueue :: JournalMsgStore s -> StoreQueue (JournalMsgStore s) -> Text -> StoreMonad (JournalMsgStore s) a -> ExceptT ErrorType IO a Source #

unsafeRunStore :: StoreQueue (JournalMsgStore s) -> Text -> StoreMonad (JournalMsgStore s) a -> IO a Source #

tryPeekMsg :: JournalMsgStore s -> StoreQueue (JournalMsgStore s) -> ExceptT ErrorType IO (Maybe Message) Source #

tryDelMsg :: JournalMsgStore s -> StoreQueue (JournalMsgStore s) -> MsgId -> ExceptT ErrorType IO (Maybe Message) Source #

tryDelPeekMsg :: JournalMsgStore s -> StoreQueue (JournalMsgStore s) -> MsgId -> ExceptT ErrorType IO (Maybe Message, Maybe Message) Source #

deleteExpiredMsgs :: JournalMsgStore s -> StoreQueue (JournalMsgStore s) -> Int64 -> ExceptT ErrorType IO Int Source #

getQueueSize :: JournalMsgStore s -> StoreQueue (JournalMsgStore s) -> ExceptT ErrorType IO Int Source #

type MsgQueue (JournalMsgStore s) Source # 
Instance details

Defined in Simplex.Messaging.Server.MsgStore.Journal

type MsgStoreConfig (JournalMsgStore s) Source # 
Instance details

Defined in Simplex.Messaging.Server.MsgStore.Journal

type QueueStore (JournalMsgStore s) Source # 
Instance details

Defined in Simplex.Messaging.Server.MsgStore.Journal

type StoreMonad (JournalMsgStore s) Source # 
Instance details

Defined in Simplex.Messaging.Server.MsgStore.Journal

type StoreQueue (JournalMsgStore s) Source # 
Instance details

Defined in Simplex.Messaging.Server.MsgStore.Journal

data QStore (s :: QSType) where Source #

Constructors

MQStore :: QStoreType 'QSMemory -> QStore 'QSMemory 

Instances

Instances details
QueueStoreClass (JournalQueue s) (QStore s) Source # 
Instance details

Defined in Simplex.Messaging.Server.MsgStore.Journal

Associated Types

type QueueStoreCfg (QStore s) Source #

Methods

newQueueStore :: QueueStoreCfg (QStore s) -> IO (QStore s) Source #

closeQueueStore :: QStore s -> IO () Source #

getEntityCounts :: QStore s -> IO EntityCounts Source #

loadedQueues :: QStore s -> TMap RecipientId (JournalQueue s) Source #

compactQueues :: QStore s -> IO Int64 Source #

addQueue_ :: QStore s -> (RecipientId -> QueueRec -> IO (JournalQueue s)) -> RecipientId -> QueueRec -> IO (Either ErrorType (JournalQueue s)) Source #

getQueue_ :: forall (p :: Party). QueueParty p => QStore s -> (Bool -> RecipientId -> QueueRec -> IO (JournalQueue s)) -> SParty p -> QueueId -> IO (Either ErrorType (JournalQueue s)) Source #

getQueues_ :: forall (p :: Party). BatchParty p => QStore s -> (Bool -> RecipientId -> QueueRec -> IO (JournalQueue s)) -> SParty p -> [QueueId] -> IO [Either ErrorType (JournalQueue s)] Source #

getQueueLinkData :: QStore s -> JournalQueue s -> LinkId -> IO (Either ErrorType QueueLinkData) Source #

addQueueLinkData :: QStore s -> JournalQueue s -> LinkId -> QueueLinkData -> IO (Either ErrorType ()) Source #

deleteQueueLinkData :: QStore s -> JournalQueue s -> IO (Either ErrorType ()) Source #

secureQueue :: QStore s -> JournalQueue s -> SndPublicAuthKey -> IO (Either ErrorType ()) Source #

updateKeys :: QStore s -> JournalQueue s -> NonEmpty RcvPublicAuthKey -> IO (Either ErrorType ()) Source #

addQueueNotifier :: QStore s -> JournalQueue s -> NtfCreds -> IO (Either ErrorType (Maybe NtfCreds)) Source #

deleteQueueNotifier :: QStore s -> JournalQueue s -> IO (Either ErrorType (Maybe NtfCreds)) Source #

suspendQueue :: QStore s -> JournalQueue s -> IO (Either ErrorType ()) Source #

blockQueue :: QStore s -> JournalQueue s -> BlockingInfo -> IO (Either ErrorType ()) Source #

unblockQueue :: QStore s -> JournalQueue s -> IO (Either ErrorType ()) Source #

updateQueueTime :: QStore s -> JournalQueue s -> SystemDate -> IO (Either ErrorType QueueRec) Source #

deleteStoreQueue :: QStore s -> JournalQueue s -> IO (Either ErrorType QueueRec) Source #

getCreateService :: QStore s -> ServiceRec -> IO (Either ErrorType ServiceId) Source #

setQueueService :: forall (p :: Party). (PartyI p, ServiceParty p) => QStore s -> JournalQueue s -> SParty p -> Maybe ServiceId -> IO (Either ErrorType ()) Source #

getQueueNtfServices :: QStore s -> [(NotifierId, a)] -> IO (Either ErrorType ([(Maybe ServiceId, [(NotifierId, a)])], [(NotifierId, a)])) Source #

getServiceQueueCount :: forall (p :: Party). (PartyI p, ServiceParty p) => QStore s -> SParty p -> ServiceId -> IO (Either ErrorType Int64) Source #

type QueueStoreCfg (QStore s) Source # 
Instance details

Defined in Simplex.Messaging.Server.MsgStore.Journal

data QStoreCfg s where Source #

Constructors

MQStoreCfg :: QStoreCfg 'QSMemory 

data JournalQueue (s :: QSType) Source #

Instances

Instances details
StoreQueueClass (JournalQueue s) Source # 
Instance details

Defined in Simplex.Messaging.Server.MsgStore.Journal

Methods

recipientId :: JournalQueue s -> RecipientId Source #

queueRec :: JournalQueue s -> TVar (Maybe QueueRec) Source #

withQueueLock :: JournalQueue s -> Text -> IO a -> IO a Source #

QueueStoreClass (JournalQueue s) (QStore s) Source # 
Instance details

Defined in Simplex.Messaging.Server.MsgStore.Journal

Associated Types

type QueueStoreCfg (QStore s) Source #

Methods

newQueueStore :: QueueStoreCfg (QStore s) -> IO (QStore s) Source #

closeQueueStore :: QStore s -> IO () Source #

getEntityCounts :: QStore s -> IO EntityCounts Source #

loadedQueues :: QStore s -> TMap RecipientId (JournalQueue s) Source #

compactQueues :: QStore s -> IO Int64 Source #

addQueue_ :: QStore s -> (RecipientId -> QueueRec -> IO (JournalQueue s)) -> RecipientId -> QueueRec -> IO (Either ErrorType (JournalQueue s)) Source #

getQueue_ :: forall (p :: Party). QueueParty p => QStore s -> (Bool -> RecipientId -> QueueRec -> IO (JournalQueue s)) -> SParty p -> QueueId -> IO (Either ErrorType (JournalQueue s)) Source #

getQueues_ :: forall (p :: Party). BatchParty p => QStore s -> (Bool -> RecipientId -> QueueRec -> IO (JournalQueue s)) -> SParty p -> [QueueId] -> IO [Either ErrorType (JournalQueue s)] Source #

getQueueLinkData :: QStore s -> JournalQueue s -> LinkId -> IO (Either ErrorType QueueLinkData) Source #

addQueueLinkData :: QStore s -> JournalQueue s -> LinkId -> QueueLinkData -> IO (Either ErrorType ()) Source #

deleteQueueLinkData :: QStore s -> JournalQueue s -> IO (Either ErrorType ()) Source #

secureQueue :: QStore s -> JournalQueue s -> SndPublicAuthKey -> IO (Either ErrorType ()) Source #

updateKeys :: QStore s -> JournalQueue s -> NonEmpty RcvPublicAuthKey -> IO (Either ErrorType ()) Source #

addQueueNotifier :: QStore s -> JournalQueue s -> NtfCreds -> IO (Either ErrorType (Maybe NtfCreds)) Source #

deleteQueueNotifier :: QStore s -> JournalQueue s -> IO (Either ErrorType (Maybe NtfCreds)) Source #

suspendQueue :: QStore s -> JournalQueue s -> IO (Either ErrorType ()) Source #

blockQueue :: QStore s -> JournalQueue s -> BlockingInfo -> IO (Either ErrorType ()) Source #

unblockQueue :: QStore s -> JournalQueue s -> IO (Either ErrorType ()) Source #

updateQueueTime :: QStore s -> JournalQueue s -> SystemDate -> IO (Either ErrorType QueueRec) Source #

deleteStoreQueue :: QStore s -> JournalQueue s -> IO (Either ErrorType QueueRec) Source #

getCreateService :: QStore s -> ServiceRec -> IO (Either ErrorType ServiceId) Source #

setQueueService :: forall (p :: Party). (PartyI p, ServiceParty p) => QStore s -> JournalQueue s -> SParty p -> Maybe ServiceId -> IO (Either ErrorType ()) Source #

getQueueNtfServices :: QStore s -> [(NotifierId, a)] -> IO (Either ErrorType ([(Maybe ServiceId, [(NotifierId, a)])], [(NotifierId, a)])) Source #

getServiceQueueCount :: forall (p :: Party). (PartyI p, ServiceParty p) => QStore s -> SParty p -> ServiceId -> IO (Either ErrorType Int64) Source #

data JournalStoreConfig s Source #

Constructors

JournalStoreConfig 

Fields

data MsgQueueState Source #

Constructors

MsgQueueState 

Fields

Instances

Instances details
Show MsgQueueState Source # 
Instance details

Defined in Simplex.Messaging.Server.MsgStore.Journal

Methods

showsPrec :: Int -> MsgQueueState -> ShowS

show :: MsgQueueState -> String

showList :: [MsgQueueState] -> ShowS

StrEncoding MsgQueueState Source # 
Instance details

Defined in Simplex.Messaging.Server.MsgStore.Journal

Methods

strEncode :: MsgQueueState -> ByteString Source #

strDecode :: ByteString -> Either String MsgQueueState Source #

strP :: Parser MsgQueueState Source #

data JournalState t Source #

Constructors

JournalState 

Fields

Instances

Instances details
Show (JournalState t) Source # 
Instance details

Defined in Simplex.Messaging.Server.MsgStore.Journal

Methods

showsPrec :: Int -> JournalState t -> ShowS

show :: JournalState t -> String

showList :: [JournalState t] -> ShowS

JournalTypeI t => StrEncoding (JournalState t) Source # 
Instance details

Defined in Simplex.Messaging.Server.MsgStore.Journal

Methods

strEncode :: JournalState t -> ByteString Source #

strDecode :: ByteString -> Either String (JournalState t) Source #

strP :: Parser (JournalState t) Source #

data SJournalType (t :: JournalType) where Source #

Constructors

SJTRead :: SJournalType 'JTRead 
SJTWrite :: SJournalType 'JTWrite 

Instances

Instances details
Show (SJournalType t) Source # 
Instance details

Defined in Simplex.Messaging.Server.MsgStore.Journal

Methods

showsPrec :: Int -> SJournalType t -> ShowS

show :: SJournalType t -> String

showList :: [SJournalType t] -> ShowS

msgQueueStatePath :: FilePath -> RecipientId -> FilePath Source #

readQueueState :: JournalMsgStore s -> FilePath -> IO (Maybe MsgQueueState, Bool) Source #

newJournalId :: TVar StdGen -> IO ByteString Source #

appendState :: Handle -> MsgQueueState -> IO () Source #

journalFilePath :: FilePath -> ByteString -> FilePath Source #

logFileExt :: String Source #