haste-app-0.1.0.0: src/Haste/App/Protocol/Types.hs
{-# LANGUAGE RankNTypes, GADTs #-}
-- | Types for the Haste.App protocol.
module Haste.App.Protocol.Types where
import Haste.Events (Recipient (..))
import Data.Int
import Haste.Concurrent (CIO)
type Nonce = Int32
data SomeRecipient where
SomeRecipient :: Recipient a => a -> SomeRecipient
instance Recipient SomeRecipient where
postMessage (SomeRecipient r) = postMessage r
-- | Location of a Haste.App server.
data Endpoint
= WebSocket
{ -- * Host on which clients can expect to reach this endpoint.
wsEndpointHost :: !String
-- * Port on which the endpoint will listen to connections from clients.
, wsEndpointPort :: !Int
}
| LocalNode
{ -- | Name by which to identify a local endpoint.
localNodeIdent :: !String
} deriving (Eq, Ord, Show)
-- | A server node startup configuration.
type NodeConfig = CIO ()