83
vendor/github.com/status-im/rendezvous/stream.go
generated
vendored
Normal file
83
vendor/github.com/status-im/rendezvous/stream.go
generated
vendored
Normal file
@@ -0,0 +1,83 @@
|
||||
package rendezvous
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/ethereum/go-ethereum/metrics"
|
||||
"github.com/libp2p/go-libp2p/core/network"
|
||||
"github.com/libp2p/go-libp2p/core/protocol"
|
||||
)
|
||||
|
||||
var (
|
||||
ingressTrafficMeter = metrics.NewRegisteredMeter("rendezvous/InboundTraffic", nil)
|
||||
egressTrafficMeter = metrics.NewRegisteredMeter("rendezvous/OutboundTraffic", nil)
|
||||
)
|
||||
|
||||
// InstrumentedStream implements read writer interface and collects metrics.
|
||||
type InstrumentedStream struct {
|
||||
s network.Stream
|
||||
}
|
||||
|
||||
func (si InstrumentedStream) CloseWrite() error {
|
||||
return si.s.CloseWrite()
|
||||
}
|
||||
|
||||
func (si InstrumentedStream) CloseRead() error {
|
||||
return si.s.CloseRead()
|
||||
}
|
||||
|
||||
func (si InstrumentedStream) ID() string {
|
||||
return si.s.ID()
|
||||
}
|
||||
|
||||
func (si InstrumentedStream) Write(p []byte) (int, error) {
|
||||
n, err := si.s.Write(p)
|
||||
egressTrafficMeter.Mark(int64(n))
|
||||
return n, err
|
||||
}
|
||||
|
||||
func (si InstrumentedStream) Read(p []byte) (int, error) {
|
||||
n, err := si.s.Read(p)
|
||||
ingressTrafficMeter.Mark(int64(n))
|
||||
return n, err
|
||||
}
|
||||
|
||||
func (si InstrumentedStream) Close() error {
|
||||
return si.s.Close()
|
||||
}
|
||||
|
||||
func (si InstrumentedStream) Reset() error {
|
||||
return si.s.Reset()
|
||||
}
|
||||
|
||||
func (si InstrumentedStream) SetDeadline(timeout time.Time) error {
|
||||
return si.s.SetDeadline(timeout)
|
||||
}
|
||||
|
||||
func (si InstrumentedStream) SetReadDeadline(timeout time.Time) error {
|
||||
return si.s.SetReadDeadline(timeout)
|
||||
}
|
||||
|
||||
func (si InstrumentedStream) SetWriteDeadline(timeout time.Time) error {
|
||||
return si.s.SetWriteDeadline(timeout)
|
||||
}
|
||||
|
||||
func (si InstrumentedStream) Protocol() protocol.ID {
|
||||
return si.s.Protocol()
|
||||
}
|
||||
|
||||
func (si InstrumentedStream) SetProtocol(pid protocol.ID) error {
|
||||
return si.s.SetProtocol(pid)
|
||||
}
|
||||
|
||||
func (si InstrumentedStream) Conn() network.Conn {
|
||||
return si.s.Conn()
|
||||
}
|
||||
|
||||
func (si InstrumentedStream) Stat() network.Stats {
|
||||
return si.s.Stat()
|
||||
}
|
||||
|
||||
func (si InstrumentedStream) Scope() network.StreamScope {
|
||||
return si.s.Scope()
|
||||
}
|
||||
Reference in New Issue
Block a user