toxcore-0.2.12: A Tox protocol implementation in Haskell
Safe HaskellNone
LanguageHaskell2010

Tox.Conduit.DHT

Synopsis

Documentation

newtype DhtConduit i o m a Source #

A wrapper around ConduitT to provide the necessary instances for DHT logic without requiring orphan instances.

Constructors

DhtConduit 

Fields

Instances

Instances details
MonadState s m => MonadState s (DhtConduit i o m) Source # 
Instance details

Defined in Tox.Conduit.DHT

Methods

get :: DhtConduit i o m s #

put :: s -> DhtConduit i o m () #

state :: (s -> (a, s)) -> DhtConduit i o m a #

MonadTrans (DhtConduit i o) Source # 
Instance details

Defined in Tox.Conduit.DHT

Methods

lift :: Monad m => m a -> DhtConduit i o m a #

Monad (DhtConduit i o m) Source # 
Instance details

Defined in Tox.Conduit.DHT

Methods

(>>=) :: DhtConduit i o m a -> (a -> DhtConduit i o m b) -> DhtConduit i o m b #

(>>) :: DhtConduit i o m a -> DhtConduit i o m b -> DhtConduit i o m b #

return :: a -> DhtConduit i o m a #

Functor (DhtConduit i o m) Source # 
Instance details

Defined in Tox.Conduit.DHT

Methods

fmap :: (a -> b) -> DhtConduit i o m a -> DhtConduit i o m b #

(<$) :: a -> DhtConduit i o m b -> DhtConduit i o m a #

Applicative (DhtConduit i o m) Source # 
Instance details

Defined in Tox.Conduit.DHT

Methods

pure :: a -> DhtConduit i o m a #

(<*>) :: DhtConduit i o m (a -> b) -> DhtConduit i o m a -> DhtConduit i o m b #

liftA2 :: (a -> b -> c) -> DhtConduit i o m a -> DhtConduit i o m b -> DhtConduit i o m c #

(*>) :: DhtConduit i o m a -> DhtConduit i o m b -> DhtConduit i o m b #

(<*) :: DhtConduit i o m a -> DhtConduit i o m b -> DhtConduit i o m a #

MonadIO m => MonadIO (DhtConduit i o m) Source # 
Instance details

Defined in Tox.Conduit.DHT

Methods

liftIO :: IO a -> DhtConduit i o m a #

Timed m => Timed (DhtConduit i o m) Source # 
Instance details

Defined in Tox.Conduit.DHT

MonadRandomBytes m => MonadRandomBytes (DhtConduit i o m) Source # 
Instance details

Defined in Tox.Conduit.DHT

Keyed m => Keyed (DhtConduit i o m) Source # 
Instance details

Defined in Tox.Conduit.DHT

Monad m => Networked (DhtConduit i (NodeInfo, Packet ByteString) m) Source #

The Networked instance for DhtConduit yields outgoing packets.

Instance details

Defined in Tox.Conduit.DHT

Methods

sendPacket :: (Binary payload, Show payload) => NodeInfo -> Packet payload -> DhtConduit i (NodeInfo, Packet ByteString) m () Source #

(Timed m, MonadRandomBytes m, MonadState DhtState m, Keyed m) => DhtNodeMonad (DhtConduit i (NodeInfo, Packet ByteString) m) Source #

DhtConduit is a DhtNodeMonad if the underlying monad m provides state and other effects.

Instance details

Defined in Tox.Conduit.DHT

dhtPacketHandler :: forall m. (Timed m, MonadRandomBytes m, MonadState DhtState m, Keyed m) => ConduitT (NodeInfo, Packet ByteString) (NodeInfo, Packet ByteString) m () Source #

Conduit that handles incoming DHT packets.

dhtMaintenanceLoop :: forall i m. (Timed m, MonadRandomBytes m, MonadState DhtState m, Keyed m) => ConduitT i (NodeInfo, Packet ByteString) m () Source #

Run maintenance operations within a conduit.

dhtBootstrapFrom :: forall i m. (Timed m, MonadRandomBytes m, MonadState DhtState m, Keyed m) => NodeInfo -> ConduitT i (NodeInfo, Packet ByteString) m () Source #

Bootstrap from a node within a conduit.