Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Marconi.Core.Worker
Description
Workers are wrapper around indexers that hide there type parameters.
See Core
for documentation.
Synopsis
- data WorkerIndexer m input event indexer = WorkerIndexer {
- workerIndexerVar :: !(MVar (indexer event))
- worker :: WorkerM m input (Point event)
- type WorkerIndexerType n event indexer = (IsIndex n event indexer, IsSync n event indexer, Closeable n indexer)
- data WorkerM m input point = forall indexer event n.(WorkerIndexerType n event indexer, Point event ~ point) => Worker {
- workerName :: Text
- workerState :: MVar (indexer event)
- transformInput :: Preprocessor (ExceptT IndexerError m) point input event
- hoistError :: forall a. n a -> ExceptT IndexerError m a
- type Worker = WorkerM IO
- createWorker :: (MonadIO f, WorkerIndexerType (ExceptT IndexerError m) event indexer) => Text -> (input -> Maybe event) -> indexer event -> f (WorkerIndexer m input event indexer)
- createWorkerPure :: (MonadIO f, MonadIO m, WorkerIndexerType m event indexer) => Text -> Preprocessor (ExceptT IndexerError m) (Point event) input event -> indexer event -> f (WorkerIndexer m input event indexer)
- createWorkerHoist :: (MonadIO f, WorkerIndexerType n event indexer) => (forall a. n a -> ExceptT IndexerError m a) -> Text -> Preprocessor (ExceptT IndexerError m) (Point event) input event -> indexer event -> f (WorkerIndexer m input event indexer)
- createWorkerWithPreprocessing :: (MonadIO f, WorkerIndexerType (ExceptT IndexerError m) event indexer) => Text -> Preprocessor (ExceptT IndexerError m) (Point event) input event -> indexer event -> f (WorkerIndexer m input event indexer)
- startWorker :: forall input m. MonadIO m => Ord (Point input) => TChan (ProcessedInput (Point input) input) -> MVar IndexerError -> QSemN -> QSemN -> Worker input (Point input) -> m ThreadId
Documentation
data WorkerIndexer m input event indexer #
Worker which also provides direct access to the indexer hidden inside it.
Constructors
WorkerIndexer | |
Fields
|
type WorkerIndexerType n event indexer = (IsIndex n event indexer, IsSync n event indexer, Closeable n indexer) #
Type alias for the type classes that are required to build a worker for an indexer
A worker hides the shape of an indexer and integrates the data needed to interact with a coordinator.
Constructors
forall indexer event n.(WorkerIndexerType n event indexer, Point event ~ point) => Worker | |
Fields
|
createWorker :: (MonadIO f, WorkerIndexerType (ExceptT IndexerError m) event indexer) => Text -> (input -> Maybe event) -> indexer event -> f (WorkerIndexer m input event indexer) #
create a worker for an indexer that already throws IndexerError
createWorkerPure :: (MonadIO f, MonadIO m, WorkerIndexerType m event indexer) => Text -> Preprocessor (ExceptT IndexerError m) (Point event) input event -> indexer event -> f (WorkerIndexer m input event indexer) #
create a worker for an indexer that doesn't throw error
createWorkerHoist :: (MonadIO f, WorkerIndexerType n event indexer) => (forall a. n a -> ExceptT IndexerError m a) -> Text -> Preprocessor (ExceptT IndexerError m) (Point event) input event -> indexer event -> f (WorkerIndexer m input event indexer) #
create a worker for an indexer, retuning the worker and the MVar
it's using internally
createWorkerWithPreprocessing :: (MonadIO f, WorkerIndexerType (ExceptT IndexerError m) event indexer) => Text -> Preprocessor (ExceptT IndexerError m) (Point event) input event -> indexer event -> f (WorkerIndexer m input event indexer) #
create a worker for an indexer that already throws IndexerError
startWorker :: forall input m. MonadIO m => Ord (Point input) => TChan (ProcessedInput (Point input) input) -> MVar IndexerError -> QSemN -> QSemN -> Worker input (Point input) -> m ThreadId #
The worker notify its coordinator that it's ready and starts waiting for new events and process them as they come