Safe Haskell | None |
---|---|
Language | Haskell2010 |
Game.LambdaHack.Server.ProtocolServer
Contents
Description
The server definitions for the server-client communication protocol.
- data ChanServer resp req = ChanServer {}
- type ConnServerDict = EnumMap FactionId ConnServerFaction
- class MonadServer m => MonadServerReadRequest m where
- sendUpdateAI :: MonadServerReadRequest m => FactionId -> ResponseAI -> m ()
- sendQueryAI :: MonadServerReadRequest m => FactionId -> ActorId -> m RequestAI
- sendPingAI :: (MonadAtomic m, MonadServerReadRequest m) => FactionId -> m ()
- sendUpdateUI :: MonadServerReadRequest m => FactionId -> ResponseUI -> m ()
- sendQueryUI :: (MonadAtomic m, MonadServerReadRequest m) => FactionId -> ActorId -> m RequestUI
- sendPingUI :: (MonadAtomic m, MonadServerReadRequest m) => FactionId -> m ()
- killAllClients :: (MonadAtomic m, MonadServerReadRequest m) => m ()
- childrenServer :: MVar [Async ()]
- updateConn :: (MonadAtomic m, MonadServerReadRequest m) => (FactionId -> ChanServer ResponseUI RequestUI -> IO ()) -> (FactionId -> ChanServer ResponseAI RequestAI -> IO ()) -> m ()
- type ConnServerFaction = (Maybe (ChanServer ResponseUI RequestUI), ChanServer ResponseAI RequestAI)
The communication channels
data ChanServer resp req Source #
Connection channel between the server and a single client.
Constructors
ChanServer | |
type ConnServerDict = EnumMap FactionId ConnServerFaction Source #
Connection information for all factions, indexed by faction identifier.
The server-client communication monad
class MonadServer m => MonadServerReadRequest m where Source #
The server monad with the ability to communicate with clients.
Minimal complete definition
Methods
getDict :: m ConnServerDict Source #
getsDict :: (ConnServerDict -> a) -> m a Source #
modifyDict :: (ConnServerDict -> ConnServerDict) -> m () Source #
putDict :: ConnServerDict -> m () Source #
Instances
Protocol
sendUpdateAI :: MonadServerReadRequest m => FactionId -> ResponseAI -> m () Source #
sendQueryAI :: MonadServerReadRequest m => FactionId -> ActorId -> m RequestAI Source #
sendPingAI :: (MonadAtomic m, MonadServerReadRequest m) => FactionId -> m () Source #
sendUpdateUI :: MonadServerReadRequest m => FactionId -> ResponseUI -> m () Source #
sendQueryUI :: (MonadAtomic m, MonadServerReadRequest m) => FactionId -> ActorId -> m RequestUI Source #
sendPingUI :: (MonadAtomic m, MonadServerReadRequest m) => FactionId -> m () Source #
Assorted
killAllClients :: (MonadAtomic m, MonadServerReadRequest m) => m () Source #
childrenServer :: MVar [Async ()] Source #
updateConn :: (MonadAtomic m, MonadServerReadRequest m) => (FactionId -> ChanServer ResponseUI RequestUI -> IO ()) -> (FactionId -> ChanServer ResponseAI RequestAI -> IO ()) -> m () Source #
Update connections to the new definition of factions. Connect to clients in old or newly spawned threads that read and write directly to the channels.
Internal operations
type ConnServerFaction = (Maybe (ChanServer ResponseUI RequestUI), ChanServer ResponseAI RequestAI) Source #
Connections to the human-controlled client of a faction and to the AI client for the same faction.