module Network.LibP2P.Transport.Transport
( RawConnection (..)
, Listener (..)
, Transport (..)
) where
import Network.LibP2P.Multiaddr.Multiaddr (Multiaddr)
import Network.LibP2P.MultistreamSelect.Negotiation (StreamIO (..))
data RawConnection = RawConnection
{ RawConnection -> StreamIO
rcStreamIO :: !StreamIO
, RawConnection -> Multiaddr
rcLocalAddr :: !Multiaddr
, RawConnection -> Multiaddr
rcRemoteAddr :: !Multiaddr
, RawConnection -> IO ()
rcClose :: !(IO ())
}
data Listener = Listener
{ Listener -> IO RawConnection
listenerAccept :: !(IO RawConnection)
, Listener -> IO ()
listenerClose :: !(IO ())
, Listener -> Multiaddr
listenerAddr :: !Multiaddr
}
data Transport = Transport
{ Transport -> Multiaddr -> IO RawConnection
transportDial :: !(Multiaddr -> IO RawConnection)
, Transport -> Multiaddr -> IO Listener
transportListen :: !(Multiaddr -> IO Listener)
, Transport -> Multiaddr -> Bool
transportCanDial :: !(Multiaddr -> Bool)
}