good morning!!!!

Skip to content
Snippets Groups Projects
Select Git revision
  • 271e5b7fc921709bd57ec672912f63a4586717dd
  • master default protected
  • v0.2.16-candidate
  • shivam/rpcAddBorTx
  • default-cli-config
  • shivam/minerRecommitFix
  • vcastellm/pos-296-bump-go-version-in-bor-and-heimdall
  • shivam/ethstats-backend-fix
  • v0.2.16-beta1-candidate
  • v0.2.15-beta3-candidate
  • shivam/newCli-IPC
  • v0.3.0-dev
  • checkpoint-whitelist-master
  • shivam/codecov
  • jdkanani/fix-typo-log
  • shivam/hardcoded-spans-v0.2.14
  • shivam/hardcoded-spans
  • shivam/fast-state-sync
  • shivam/fast-state-sync-master
  • gethv1.10.15-merge
  • fix-txpool-2
  • v0.2.14-tmp-span-hotfix
  • v0.2.15-beta2
  • v0.2.15-beta1
  • v0.3.0-beta3
  • v0.3.0-beta2
  • v0.3.0-beta1
  • v0.2.14
  • v0.2.13
  • v0.2.13-beta2
  • v0.2.13-beta1
  • v0.2.12
  • v0.2.12-beta3
  • v0.2.12-beta1
  • v0.2.12-beta2
  • v0.2.11
  • v0.2.10
  • v0.2.10-beta2
  • v0.2.9
  • v0.2.9-beta1
  • v0.2.8
41 results

handler_go14.go

Blame
  • Forked from github / maticnetwork / bor
    Source project has a limited visibility.
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    metrics.go 2.15 KiB
    // Copyright 2015 The go-ethereum Authors
    // This file is part of the go-ethereum library.
    //
    // The go-ethereum library is free software: you can redistribute it and/or modify
    // it under the terms of the GNU Lesser General Public License as published by
    // the Free Software Foundation, either version 3 of the License, or
    // (at your option) any later version.
    //
    // The go-ethereum library is distributed in the hope that it will be useful,
    // but WITHOUT ANY WARRANTY; without even the implied warranty of
    // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    // GNU Lesser General Public License for more details.
    //
    // You should have received a copy of the GNU Lesser General Public License
    // along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
    
    // Contains the meters and timers used by the networking layer.
    
    package p2p
    
    import (
    	"net"
    
    	"github.com/ethereum/go-ethereum/metrics"
    )
    
    var (
    	ingressConnectMeter = metrics.NewMeter("p2p/InboundConnects")
    	ingressTrafficMeter = metrics.NewMeter("p2p/InboundTraffic")
    	egressConnectMeter  = metrics.NewMeter("p2p/OutboundConnects")
    	egressTrafficMeter  = metrics.NewMeter("p2p/OutboundTraffic")
    )
    
    // meteredConn is a wrapper around a network TCP connection that meters both the
    // inbound and outbound network traffic.
    type meteredConn struct {
    	*net.TCPConn // Network connection to wrap with metering
    }
    
    // newMeteredConn creates a new metered connection, also bumping the ingress or
    // egress connection meter.
    func newMeteredConn(conn net.Conn, ingress bool) net.Conn {
    	if ingress {
    		ingressConnectMeter.Mark(1)
    	} else {
    		egressConnectMeter.Mark(1)
    	}
    	return &meteredConn{conn.(*net.TCPConn)}
    }
    
    // Read delegates a network read to the underlying connection, bumping the ingress
    // traffic meter along the way.
    func (c *meteredConn) Read(b []byte) (n int, err error) {
    	n, err = c.TCPConn.Read(b)
    	ingressTrafficMeter.Mark(int64(n))
    	return
    }
    
    // Write delegates a network write to the underlying connection, bumping the
    // egress traffic meter along the way.
    func (c *meteredConn) Write(b []byte) (n int, err error) {
    	n, err = c.TCPConn.Write(b)
    	egressTrafficMeter.Mark(int64(n))
    	return
    }