| Copyright | (C) 2020 Martins Erts |
|---|---|
| License | MIT |
| Maintainer | Martins Erts <martins.erts@gmail.com> |
| Stability | experimental |
| Safe Haskell | None |
| Language | Haskell2010 |
BfHaskell.DSL.Streaming
Description
Synopsis
- data StreamingHandler m a where
- GetNextStreamMessage :: StreamingHandler m StreamingMessage
- TryGetNextStreamMessage :: StreamingHandler m (Maybe StreamingMessage)
- SubscribeToMarkets :: MarketFilter -> StreamingHandler m ()
- GetMarketCache :: StreamingHandler m (Map MarketId MarketDetails)
- SubscribeToOrders :: StreamingHandler m ()
- GetOrderCache :: StreamingHandler m (Map MarketId OrderRunnerTable)
- getNextStreamMessage :: Member StreamingHandler r => Sem r StreamingMessage
- tryGetNextStreamMessage :: Member StreamingHandler r => Sem r (Maybe StreamingMessage)
- subscribeToMarkets :: Member StreamingHandler r => MarketFilter -> Sem r ()
- getMarketCache :: Member StreamingHandler r => Sem r (Map MarketId MarketDetails)
- subscribeToOrders :: Member StreamingHandler r => Sem r ()
- getOrderCache :: Member StreamingHandler r => Sem r (Map MarketId OrderRunnerTable)
- runStreamingHandler :: Members '[Embed IO, Output LogMessage, Async, Resource, LoginHandler, Error String] r => StreamingConnectionInfo -> InterpreterFor StreamingHandler r
- defaultStreamingConnectionInfo :: StreamingConnectionInfo
- mkMarketListFilter :: [MarketId] -> MarketFilter
- type Handicap = Maybe Double
- data MarketDetails
- type MarketId = Text
- data MarketRunner = MarketRunner {}
- type MarketRunnerKey = (SelectionId, Handicap)
- data SMConnectionState
- type SelectionId = Integer
- data StreamingConnectionInfo = StreamingConnectionInfo {
- _sciHostName :: Text
- _sciPort :: Int
- data StreamingMessage
- data OrderRunner = OrderRunner {}
- type OrderRunnerTable = Map MarketRunnerKey OrderRunner
- mdMarketDefinition :: Lens' MarketDetails (Maybe MarketDefinition)
- mdTv :: Lens' MarketDetails (Maybe Double)
- mdMarketRunners :: Lens' MarketDetails MarketRunnerTable
- mrBackPrices :: Lens' MarketRunner LadderPrices
- mrLayPrices :: Lens' MarketRunner LadderPrices
- mrDispBackPrices :: Lens' MarketRunner LadderPrices
- mrDispLayPrices :: Lens' MarketRunner LadderPrices
- mrTv :: Lens' MarketRunner (Maybe Double)
- mrLtp :: Lens' MarketRunner (Maybe Double)
- orMatchedBacks :: Lens' OrderRunner PricePoints
- orMatchedLays :: Lens' OrderRunner PricePoints
- orOrders :: Lens' OrderRunner (Map BetId Order)
Effect
data StreamingHandler m a where Source #
Streaming DSL
Constructors
| GetNextStreamMessage :: StreamingHandler m StreamingMessage | Gets next message from queue. Blocks if there are no messages. |
| TryGetNextStreamMessage :: StreamingHandler m (Maybe StreamingMessage) | Tries to get next message from queue. Returns |
| SubscribeToMarkets :: MarketFilter -> StreamingHandler m () | Subscribes to market stream specified by |
| GetMarketCache :: StreamingHandler m (Map MarketId MarketDetails) | Retrieves market cache. |
| SubscribeToOrders :: StreamingHandler m () | Subscribes to order stream. |
| GetOrderCache :: StreamingHandler m (Map MarketId OrderRunnerTable) | Retrieves order cache. |
Instances
| type DefiningModule (StreamingHandler :: k -> Type -> Type) Source # | |
Defined in BfHaskell.StreamingAPI.Types | |
Actions
getNextStreamMessage :: Member StreamingHandler r => Sem r StreamingMessage Source #
Gets next message from queue. Blocks if there are no messages.
tryGetNextStreamMessage :: Member StreamingHandler r => Sem r (Maybe StreamingMessage) Source #
Tries to get next message from queue. Returns Nothing, if queue is empty.
subscribeToMarkets :: Member StreamingHandler r => MarketFilter -> Sem r () Source #
Subscribes to market stream specified by MarketFilter. There is only one
one current market subscription. Following calls overwrite previous subscriptions.
getMarketCache :: Member StreamingHandler r => Sem r (Map MarketId MarketDetails) Source #
Retrieves market cache.
subscribeToOrders :: Member StreamingHandler r => Sem r () Source #
Subscribes to order stream.
getOrderCache :: Member StreamingHandler r => Sem r (Map MarketId OrderRunnerTable) Source #
Retrieves order cache.
Interpretations
Arguments
| :: Members '[Embed IO, Output LogMessage, Async, Resource, LoginHandler, Error String] r | |
| => StreamingConnectionInfo | Streaming configuration |
| -> InterpreterFor StreamingHandler r |
Runs StreamingHandler interpreter
Helpers
defaultStreamingConnectionInfo :: StreamingConnectionInfo Source #
Default streaming connection info
mkMarketListFilter :: [MarketId] -> MarketFilter Source #
Helper to create market filter containing list for market ids
Data types
data MarketDetails Source #
Market details
Instances
| Default MarketDetails Source # | |
Defined in BfHaskell.StreamingAPI.Types Methods def :: MarketDetails | |
data MarketRunner Source #
Market runner
Constructors
| MarketRunner | |
Fields
| |
Instances
| Show MarketRunner Source # | |
Defined in BfHaskell.StreamingAPI.Types Methods showsPrec :: Int -> MarketRunner -> ShowS # show :: MarketRunner -> String # showList :: [MarketRunner] -> ShowS # | |
| Default MarketRunner Source # | |
Defined in BfHaskell.StreamingAPI.Types Methods def :: MarketRunner | |
type MarketRunnerKey = (SelectionId, Handicap) Source #
data SMConnectionState Source #
Streaming API connection state
Constructors
| SMCSConnected | |
| SMCSDisconnected |
Instances
| Eq SMConnectionState Source # | |
Defined in BfHaskell.StreamingAPI.Types Methods (==) :: SMConnectionState -> SMConnectionState -> Bool # (/=) :: SMConnectionState -> SMConnectionState -> Bool # | |
| Show SMConnectionState Source # | |
Defined in BfHaskell.StreamingAPI.Types Methods showsPrec :: Int -> SMConnectionState -> ShowS # show :: SMConnectionState -> String # showList :: [SMConnectionState] -> ShowS # | |
type SelectionId = Integer Source #
data StreamingConnectionInfo Source #
Streaming API connection details
Constructors
| StreamingConnectionInfo | |
Fields
| |
Instances
| Show StreamingConnectionInfo Source # | |
Defined in BfHaskell.StreamingAPI.Types Methods showsPrec :: Int -> StreamingConnectionInfo -> ShowS # show :: StreamingConnectionInfo -> String # showList :: [StreamingConnectionInfo] -> ShowS # | |
data StreamingMessage Source #
Streaming update message to be received by client
Constructors
| SMConnectionStateChanged SMConnectionState | Connection state changed |
| SMMarketUpdate [MarketId] | Market data updated |
| SMOrderUpdate [MarketId] | Order data updated |
Instances
| Show StreamingMessage Source # | |
Defined in BfHaskell.StreamingAPI.Types Methods showsPrec :: Int -> StreamingMessage -> ShowS # show :: StreamingMessage -> String # showList :: [StreamingMessage] -> ShowS # | |
data OrderRunner Source #
Order runner
Constructors
| OrderRunner | |
Fields
| |
Instances
| Show OrderRunner Source # | |
Defined in BfHaskell.StreamingAPI.Types Methods showsPrec :: Int -> OrderRunner -> ShowS # show :: OrderRunner -> String # showList :: [OrderRunner] -> ShowS # | |
| Default OrderRunner Source # | |
Defined in BfHaskell.StreamingAPI.Types Methods def :: OrderRunner | |
Lens
mdMarketDefinition :: Lens' MarketDetails (Maybe MarketDefinition) Source #
mdMarketRunners :: Lens' MarketDetails MarketRunnerTable Source #
mrBackPrices :: Lens' MarketRunner LadderPrices Source #
mrLayPrices :: Lens' MarketRunner LadderPrices Source #
mrDispBackPrices :: Lens' MarketRunner LadderPrices Source #
mrDispLayPrices :: Lens' MarketRunner LadderPrices Source #
orMatchedBacks :: Lens' OrderRunner PricePoints Source #
orMatchedLays :: Lens' OrderRunner PricePoints Source #