mirror of
https://github.com/tendermint/tendermint.git
synced 2026-01-07 05:46:32 +00:00
* p2p: add a per-message type send and receive metric (#9622) * p2p: ressurrect the p2p envelope and use to calculate message metric Add new SendEnvelope, TrySendEnvelope, BroadcastEnvelope, and ReceiveEnvelope methods in the p2p package to work with the new envelope type. Care was taken to ensure this was performed in a non-breaking manner. Co-authored-by: William Banfield <4561443+williambanfield@users.noreply.github.com> Co-authored-by: William Banfield <wbanfield@gmail.com>
41 lines
1.3 KiB
Go
41 lines
1.3 KiB
Go
package p2p
|
|
|
|
import (
|
|
"github.com/gogo/protobuf/proto"
|
|
"github.com/tendermint/tendermint/p2p/conn"
|
|
tmp2p "github.com/tendermint/tendermint/proto/tendermint/p2p"
|
|
)
|
|
|
|
type ChannelDescriptor = conn.ChannelDescriptor
|
|
type ConnectionStatus = conn.ConnectionStatus
|
|
|
|
// Envelope contains a message with sender routing info.
|
|
type Envelope struct {
|
|
Src Peer // sender (empty if outbound)
|
|
Message proto.Message // message payload
|
|
ChannelID byte
|
|
}
|
|
|
|
// Unwrapper is a Protobuf message that can contain a variety of inner messages
|
|
// (e.g. via oneof fields). If a Channel's message type implements Unwrapper, the
|
|
// p2p layer will automatically unwrap inbound messages so that reactors do not have to do this themselves.
|
|
type Unwrapper interface {
|
|
proto.Message
|
|
|
|
// Unwrap will unwrap the inner message contained in this message.
|
|
Unwrap() (proto.Message, error)
|
|
}
|
|
|
|
// Wrapper is a companion type to Unwrapper. It is a Protobuf message that can contain a variety of inner messages. The p2p layer will automatically wrap outbound messages so that the reactors do not have to do it themselves.
|
|
type Wrapper interface {
|
|
proto.Message
|
|
|
|
// Wrap will take the underlying message and wrap it in its wrapper type.
|
|
Wrap() proto.Message
|
|
}
|
|
|
|
var (
|
|
_ Wrapper = &tmp2p.PexRequest{}
|
|
_ Wrapper = &tmp2p.PexAddrs{}
|
|
)
|