libp2p-hs-0.1.0.0: Haskell implementation of the libp2p networking stack
Safe HaskellNone
LanguageGHC2021

Network.LibP2P.NAT.Relay.Message

Description

Circuit Relay v2 message encoding/decoding (protobuf).

Two message types: HopMessage: client ↔ relay (RESERVE, CONNECT, STATUS) StopMessage: relay ↔ target (CONNECT, STATUS)

Wire format: [uvarint length][protobuf message]

HopMessage fields: type(1), peer(2), reservation(3), limit(4), status(5) StopMessage fields: type(1), peer(2), limit(3), status(4) Peer fields: id(1), addrs(2) Reservation fields: expire(1), addrs(2), voucher(3) Limit fields: duration(1), data(2)

Synopsis

Types

data RelayStatus Source #

Relay status codes (shared between Hop and Stop).

Instances

Instances details
Show RelayStatus Source # 
Instance details

Defined in Network.LibP2P.NAT.Relay.Message

Eq RelayStatus Source # 
Instance details

Defined in Network.LibP2P.NAT.Relay.Message

data RelayPeer Source #

Relay peer info (nested message).

Constructors

RelayPeer 

Fields

Instances

Instances details
Show RelayPeer Source # 
Instance details

Defined in Network.LibP2P.NAT.Relay.Message

Eq RelayPeer Source # 
Instance details

Defined in Network.LibP2P.NAT.Relay.Message

data Reservation Source #

Reservation info (nested in HopMessage).

Constructors

Reservation 

Fields

Instances

Instances details
Show Reservation Source # 
Instance details

Defined in Network.LibP2P.NAT.Relay.Message

Eq Reservation Source # 
Instance details

Defined in Network.LibP2P.NAT.Relay.Message

data RelayLimit Source #

Relay limit (nested in both Hop and Stop).

Constructors

RelayLimit 

Fields

Instances

Instances details
Show RelayLimit Source # 
Instance details

Defined in Network.LibP2P.NAT.Relay.Message

Eq RelayLimit Source # 
Instance details

Defined in Network.LibP2P.NAT.Relay.Message

data HopMessage Source #

HopMessage: client ↔ relay.

Constructors

HopMessage 

Instances

Instances details
Show HopMessage Source # 
Instance details

Defined in Network.LibP2P.NAT.Relay.Message

Eq HopMessage Source # 
Instance details

Defined in Network.LibP2P.NAT.Relay.Message

data StopMessage Source #

StopMessage: relay ↔ target.

Constructors

StopMessage 

Instances

Instances details
Show StopMessage Source # 
Instance details

Defined in Network.LibP2P.NAT.Relay.Message

Eq StopMessage Source # 
Instance details

Defined in Network.LibP2P.NAT.Relay.Message

Status conversion

relayStatusToWord :: RelayStatus -> Word32 Source #

Convert RelayStatus to wire value.

wordToRelayStatus :: Word32 -> Maybe RelayStatus Source #

Convert wire value to RelayStatus.

HopMessage encode/decode

encodeHopMessage :: HopMessage -> ByteString Source #

Encode HopMessage to protobuf (no framing).

decodeHopMessage :: ByteString -> Either ParseError HopMessage Source #

Decode HopMessage from protobuf.

encodeHopFramed :: HopMessage -> ByteString Source #

Encode HopMessage with uvarint length prefix.

decodeHopFramed :: Int -> ByteString -> Either String HopMessage Source #

Decode HopMessage from framed bytes.

writeHopMessage :: StreamIO -> HopMessage -> IO () Source #

Write a framed HopMessage to a stream.

readHopMessage :: StreamIO -> Int -> IO (Either String HopMessage) Source #

Read a framed HopMessage from a stream.

StopMessage encode/decode

encodeStopMessage :: StopMessage -> ByteString Source #

Encode StopMessage to protobuf (no framing).

decodeStopMessage :: ByteString -> Either ParseError StopMessage Source #

Decode StopMessage from protobuf.

encodeStopFramed :: StopMessage -> ByteString Source #

Encode StopMessage with uvarint length prefix.

decodeStopFramed :: Int -> ByteString -> Either String StopMessage Source #

Decode StopMessage from framed bytes.

writeStopMessage :: StreamIO -> StopMessage -> IO () Source #

Write a framed StopMessage to a stream.

readStopMessage :: StreamIO -> Int -> IO (Either String StopMessage) Source #

Read a framed StopMessage from a stream.

Constants

maxRelayMessageSize :: Int Source #

Maximum relay message size: 64 KiB.

hopProtocolId :: Text Source #

Hop protocol identifier.

stopProtocolId :: Text Source #

Stop protocol identifier.