Libp2pQuicConnection class

A libp2p-friendly wrapper around a QUIC connection.

Libp2pQuicConnection encapsulates a raw QuicConnection and exposes simple send and close methods compatible with libp2p transport interfaces. The underlying connection object is accessible via quicConnection for callers that need to interact with QUIC-specific APIs (stream allocation, encryption details, etc.).

Example

final transport = Libp2pQuicTransport();
final conn = await transport.dial(multiaddr);
conn.send(Uint8List.fromList([0x01, 0x02]));
print('Underlying QUIC conn: ${conn.quicConnection}');
conn.close();

Constructors

Libp2pQuicConnection(Object _quicConnection, {PeerId? peerId, List<String> alpnProtocols = const ['libp2p']})
Creates a libp2p wrapper around quicConnection.

Properties

alpnProtocols → List<String>
ALPN protocols advertised by this endpoint during the TLS handshake.
final
hashCode → int
The hash code for this object.
no setterinherited
isAlpnValid → bool
Whether the peer's selected ALPN matches one of alpnProtocols.
no setter
negotiatedAlpn → String?
The ALPN protocol negotiated by the peer, if available.
no setter
peerId ↔ PeerId?
The authenticated libp2p PeerId of the remote peer.
getter/setter pair
quicConnection → Object
The underlying QUIC connection object.
no setter
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited

Methods

close() → void
Close the underlying QUIC connection.
negotiateProtocol(List<String> protocols) → Future<String?>
Negotiate a protocol using multistream-select.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
send(Uint8List data) → void
Send data on a new unidirectional stream.
toString() → String
A string representation of this object.
inherited
validateAlpn() → void
Validates that the peer's selected ALPN is in alpnProtocols.
verifyPeerCertificate(List<int> certBytes, {PeerId? expectedPeerId, required CryptoBackend backend}) → Future<bool>
Verifies that certBytes contains the libp2p TLS extension, derives the remote PeerId from the embedded public key, and assigns it to peerId.
verifyPeerCertificateFromHandshake({PeerId? expectedPeerId, required CryptoBackend backend}) → Future<bool>
Verifies the peer using the certificate received during the handshake.

Operators

operator ==(Object other) → bool
The equality operator.
inherited