mirror of https://github.com/voidlizard/hbs2
wip
This commit is contained in:
parent
aa3682b9bc
commit
cd8536bec3
|
@ -20,6 +20,7 @@ import Data.Word
|
||||||
import Data.Dynamic
|
import Data.Dynamic
|
||||||
import Prettyprinter
|
import Prettyprinter
|
||||||
import System.Random qualified as Random
|
import System.Random qualified as Random
|
||||||
|
import GHC.TypeLits
|
||||||
import Data.Maybe
|
import Data.Maybe
|
||||||
|
|
||||||
import FakeMessaging
|
import FakeMessaging
|
||||||
|
@ -36,10 +37,18 @@ class Monad m => CookieGenerator p m where
|
||||||
class Monad m => HasTimeout msg m where
|
class Monad m => HasTimeout msg m where
|
||||||
timeoutFor :: Proxy msg -> m (Timeout 'Seconds)
|
timeoutFor :: Proxy msg -> m (Timeout 'Seconds)
|
||||||
|
|
||||||
|
class HasCookie p msg | msg -> p where
|
||||||
|
getCookie :: msg -> Maybe (Cookie p)
|
||||||
|
|
||||||
-- still okay
|
-- still okay
|
||||||
|
|
||||||
type family Encoded p :: Type
|
type family Encoded p :: Type
|
||||||
|
|
||||||
|
type family ProtoId p m :: Nat
|
||||||
|
|
||||||
|
class Registered msg where
|
||||||
|
protoId :: Proxy msg -> Nat
|
||||||
|
|
||||||
class IsEncoded p msg | msg -> p where
|
class IsEncoded p msg | msg -> p where
|
||||||
encode :: msg -> Encoded p
|
encode :: msg -> Encoded p
|
||||||
decode :: Encoded p -> Maybe msg
|
decode :: Encoded p -> Maybe msg
|
||||||
|
@ -74,7 +83,7 @@ data Fabrique p = forall bus . Messaging bus p (MessageWithCookie p)
|
||||||
data Dispatcher p m =
|
data Dispatcher p m =
|
||||||
Dispatcher
|
Dispatcher
|
||||||
{ self :: Peer p
|
{ self :: Peer p
|
||||||
, handlers :: Cache (Cookie p) (Handler p m)
|
, handlers :: Cache (Cookie p) (Handler p m) --- FIXME: class + maybe cookie
|
||||||
, fabriq :: Fabrique p
|
, fabriq :: Fabrique p
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -141,6 +150,9 @@ dispatcher d = fix \next -> do
|
||||||
|
|
||||||
next
|
next
|
||||||
|
|
||||||
|
class DefaultAnswer msg p | msg -> p where
|
||||||
|
defAnswer :: msg
|
||||||
|
|
||||||
data PingPong p = Ping
|
data PingPong p = Ping
|
||||||
| Pong
|
| Pong
|
||||||
deriving stock (Typeable)
|
deriving stock (Typeable)
|
||||||
|
|
Loading…
Reference in New Issue