go-libp2p-core icon indicating copy to clipboard operation
go-libp2p-core copied to clipboard

Add transport and connection 'Traits'

Open whyrusleeping opened this issue 8 years ago • 3 comments

A transport implementation should be able to signal the capabilities it has by default. Some transports might already have some of the layers we currently add on top, such as QUIC already having build in multiplexing, and cjdns already having transport level encryption.

This can even be extended to help us move to supporting unreliable transports.

I think some of the general traits we want to have are (non-exhaustively):

  • HasEncryption
  • HasMultiplexing
  • IsReliable

whyrusleeping avatar Sep 23 '16 09:09 whyrusleeping

Now that all transports are expose all required features, this is less of an issue (no more HasEncryption, HasMultiplexing, IsReliable). However, we will likely still want "traits" for optional (but useful) features.

Stebalien avatar Jun 07 '18 17:06 Stebalien

One example would be https://github.com/libp2p/go-libp2p-swarm/pull/57#discussion_r194146101

magik6k avatar Jun 09 '18 12:06 magik6k

Being able to send packets "out of band" or unencrypted would be nice.

paralin avatar Jun 15 '18 21:06 paralin