diff --git a/cmd/gexp/blocktestcmd.go b/cmd/gexp/blocktestcmd.go
index 8b759e0a38..cec14509a5 100644
--- a/cmd/gexp/blocktestcmd.go
+++ b/cmd/gexp/blocktestcmd.go
@@ -22,7 +22,7 @@ import (
"github.com/codegangsta/cli"
"github.com/expanse-project/go-expanse/cmd/utils"
- "github.com/expanse-project/go-expanse/eth"
+ "github.com/expanse-project/go-expanse/exp"
"github.com/expanse-project/go-expanse/ethdb"
"github.com/expanse-project/go-expanse/tests"
)
diff --git a/eth/fetcher/metrics.go b/eth/fetcher/metrics.go
deleted file mode 100644
index 9dad34e6a0..0000000000
--- a/eth/fetcher/metrics.go
+++ /dev/null
@@ -1,46 +0,0 @@
-// 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 .
-
-// Contains the metrics collected by the fetcher.
-
-package fetcher
-
-import (
- "github.com/expanse-project/go-expanse/metrics"
-)
-
-var (
- propAnnounceInMeter = metrics.NewMeter("eth/fetcher/prop/announces/in")
- propAnnounceOutTimer = metrics.NewTimer("eth/fetcher/prop/announces/out")
- propAnnounceDropMeter = metrics.NewMeter("eth/fetcher/prop/announces/drop")
- propAnnounceDOSMeter = metrics.NewMeter("eth/fetcher/prop/announces/dos")
-
- propBroadcastInMeter = metrics.NewMeter("eth/fetcher/prop/broadcasts/in")
- propBroadcastOutTimer = metrics.NewTimer("eth/fetcher/prop/broadcasts/out")
- propBroadcastDropMeter = metrics.NewMeter("eth/fetcher/prop/broadcasts/drop")
- propBroadcastDOSMeter = metrics.NewMeter("eth/fetcher/prop/broadcasts/dos")
-
- blockFetchMeter = metrics.NewMeter("eth/fetcher/fetch/blocks")
- headerFetchMeter = metrics.NewMeter("eth/fetcher/fetch/headers")
- bodyFetchMeter = metrics.NewMeter("eth/fetcher/fetch/bodies")
-
- blockFilterInMeter = metrics.NewMeter("eth/fetcher/filter/blocks/in")
- blockFilterOutMeter = metrics.NewMeter("eth/fetcher/filter/blocks/out")
- headerFilterInMeter = metrics.NewMeter("eth/fetcher/filter/headers/in")
- headerFilterOutMeter = metrics.NewMeter("eth/fetcher/filter/headers/out")
- bodyFilterInMeter = metrics.NewMeter("eth/fetcher/filter/bodies/in")
- bodyFilterOutMeter = metrics.NewMeter("eth/fetcher/filter/bodies/out")
-)
diff --git a/eth/metrics.go b/eth/metrics.go
deleted file mode 100644
index 3e38d62c2c..0000000000
--- a/eth/metrics.go
+++ /dev/null
@@ -1,157 +0,0 @@
-// 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 .
-
-package eth
-
-import (
- "github.com/expanse-project/go-expanse/metrics"
- "github.com/expanse-project/go-expanse/p2p"
-)
-
-var (
- propTxnInPacketsMeter = metrics.NewMeter("eth/prop/txns/in/packets")
- propTxnInTrafficMeter = metrics.NewMeter("eth/prop/txns/in/traffic")
- propTxnOutPacketsMeter = metrics.NewMeter("eth/prop/txns/out/packets")
- propTxnOutTrafficMeter = metrics.NewMeter("eth/prop/txns/out/traffic")
- propHashInPacketsMeter = metrics.NewMeter("eth/prop/hashes/in/packets")
- propHashInTrafficMeter = metrics.NewMeter("eth/prop/hashes/in/traffic")
- propHashOutPacketsMeter = metrics.NewMeter("eth/prop/hashes/out/packets")
- propHashOutTrafficMeter = metrics.NewMeter("eth/prop/hashes/out/traffic")
- propBlockInPacketsMeter = metrics.NewMeter("eth/prop/blocks/in/packets")
- propBlockInTrafficMeter = metrics.NewMeter("eth/prop/blocks/in/traffic")
- propBlockOutPacketsMeter = metrics.NewMeter("eth/prop/blocks/out/packets")
- propBlockOutTrafficMeter = metrics.NewMeter("eth/prop/blocks/out/traffic")
- reqHashInPacketsMeter = metrics.NewMeter("eth/req/hashes/in/packets")
- reqHashInTrafficMeter = metrics.NewMeter("eth/req/hashes/in/traffic")
- reqHashOutPacketsMeter = metrics.NewMeter("eth/req/hashes/out/packets")
- reqHashOutTrafficMeter = metrics.NewMeter("eth/req/hashes/out/traffic")
- reqBlockInPacketsMeter = metrics.NewMeter("eth/req/blocks/in/packets")
- reqBlockInTrafficMeter = metrics.NewMeter("eth/req/blocks/in/traffic")
- reqBlockOutPacketsMeter = metrics.NewMeter("eth/req/blocks/out/packets")
- reqBlockOutTrafficMeter = metrics.NewMeter("eth/req/blocks/out/traffic")
- reqHeaderInPacketsMeter = metrics.NewMeter("eth/req/headers/in/packets")
- reqHeaderInTrafficMeter = metrics.NewMeter("eth/req/headers/in/traffic")
- reqHeaderOutPacketsMeter = metrics.NewMeter("eth/req/headers/out/packets")
- reqHeaderOutTrafficMeter = metrics.NewMeter("eth/req/headers/out/traffic")
- reqBodyInPacketsMeter = metrics.NewMeter("eth/req/bodies/in/packets")
- reqBodyInTrafficMeter = metrics.NewMeter("eth/req/bodies/in/traffic")
- reqBodyOutPacketsMeter = metrics.NewMeter("eth/req/bodies/out/packets")
- reqBodyOutTrafficMeter = metrics.NewMeter("eth/req/bodies/out/traffic")
- reqStateInPacketsMeter = metrics.NewMeter("eth/req/states/in/packets")
- reqStateInTrafficMeter = metrics.NewMeter("eth/req/states/in/traffic")
- reqStateOutPacketsMeter = metrics.NewMeter("eth/req/states/out/packets")
- reqStateOutTrafficMeter = metrics.NewMeter("eth/req/states/out/traffic")
- reqReceiptInPacketsMeter = metrics.NewMeter("eth/req/receipts/in/packets")
- reqReceiptInTrafficMeter = metrics.NewMeter("eth/req/receipts/in/traffic")
- reqReceiptOutPacketsMeter = metrics.NewMeter("eth/req/receipts/out/packets")
- reqReceiptOutTrafficMeter = metrics.NewMeter("eth/req/receipts/out/traffic")
- miscInPacketsMeter = metrics.NewMeter("eth/misc/in/packets")
- miscInTrafficMeter = metrics.NewMeter("eth/misc/in/traffic")
- miscOutPacketsMeter = metrics.NewMeter("eth/misc/out/packets")
- miscOutTrafficMeter = metrics.NewMeter("eth/misc/out/traffic")
-)
-
-// meteredMsgReadWriter is a wrapper around a p2p.MsgReadWriter, capable of
-// accumulating the above defined metrics based on the data stream contents.
-type meteredMsgReadWriter struct {
- p2p.MsgReadWriter // Wrapped message stream to meter
- version int // Protocol version to select correct meters
-}
-
-// newMeteredMsgWriter wraps a p2p MsgReadWriter with metering support. If the
-// metrics system is disabled, this fucntion returns the original object.
-func newMeteredMsgWriter(rw p2p.MsgReadWriter) p2p.MsgReadWriter {
- if !metrics.Enabled {
- return rw
- }
- return &meteredMsgReadWriter{MsgReadWriter: rw}
-}
-
-// Init sets the protocol version used by the stream to know which meters to
-// increment in case of overlapping message ids between protocol versions.
-func (rw *meteredMsgReadWriter) Init(version int) {
- rw.version = version
-}
-
-func (rw *meteredMsgReadWriter) ReadMsg() (p2p.Msg, error) {
- // Read the message and short circuit in case of an error
- msg, err := rw.MsgReadWriter.ReadMsg()
- if err != nil {
- return msg, err
- }
- // Account for the data traffic
- packets, traffic := miscInPacketsMeter, miscInTrafficMeter
- switch {
- case rw.version < eth62 && msg.Code == BlockHashesMsg:
- packets, traffic = reqHashInPacketsMeter, reqHashInTrafficMeter
- case rw.version < eth62 && msg.Code == BlocksMsg:
- packets, traffic = reqBlockInPacketsMeter, reqBlockInTrafficMeter
-
- case rw.version >= eth62 && msg.Code == BlockHeadersMsg:
- packets, traffic = reqBlockInPacketsMeter, reqBlockInTrafficMeter
- case rw.version >= eth62 && msg.Code == BlockBodiesMsg:
- packets, traffic = reqBodyInPacketsMeter, reqBodyInTrafficMeter
-
- case rw.version >= eth63 && msg.Code == NodeDataMsg:
- packets, traffic = reqStateInPacketsMeter, reqStateInTrafficMeter
- case rw.version >= eth63 && msg.Code == ReceiptsMsg:
- packets, traffic = reqReceiptInPacketsMeter, reqReceiptInTrafficMeter
-
- case msg.Code == NewBlockHashesMsg:
- packets, traffic = propHashInPacketsMeter, propHashInTrafficMeter
- case msg.Code == NewBlockMsg:
- packets, traffic = propBlockInPacketsMeter, propBlockInTrafficMeter
- case msg.Code == TxMsg:
- packets, traffic = propTxnInPacketsMeter, propTxnInTrafficMeter
- }
- packets.Mark(1)
- traffic.Mark(int64(msg.Size))
-
- return msg, err
-}
-
-func (rw *meteredMsgReadWriter) WriteMsg(msg p2p.Msg) error {
- // Account for the data traffic
- packets, traffic := miscOutPacketsMeter, miscOutTrafficMeter
- switch {
- case rw.version < eth62 && msg.Code == BlockHashesMsg:
- packets, traffic = reqHashOutPacketsMeter, reqHashOutTrafficMeter
- case rw.version < eth62 && msg.Code == BlocksMsg:
- packets, traffic = reqBlockOutPacketsMeter, reqBlockOutTrafficMeter
-
- case rw.version >= eth62 && msg.Code == BlockHeadersMsg:
- packets, traffic = reqHeaderOutPacketsMeter, reqHeaderOutTrafficMeter
- case rw.version >= eth62 && msg.Code == BlockBodiesMsg:
- packets, traffic = reqBodyOutPacketsMeter, reqBodyOutTrafficMeter
-
- case rw.version >= eth63 && msg.Code == NodeDataMsg:
- packets, traffic = reqStateOutPacketsMeter, reqStateOutTrafficMeter
- case rw.version >= eth63 && msg.Code == ReceiptsMsg:
- packets, traffic = reqReceiptOutPacketsMeter, reqReceiptOutTrafficMeter
-
- case msg.Code == NewBlockHashesMsg:
- packets, traffic = propHashOutPacketsMeter, propHashOutTrafficMeter
- case msg.Code == NewBlockMsg:
- packets, traffic = propBlockOutPacketsMeter, propBlockOutTrafficMeter
- case msg.Code == TxMsg:
- packets, traffic = propTxnOutPacketsMeter, propTxnOutTrafficMeter
- }
- packets.Mark(1)
- traffic.Mark(int64(msg.Size))
-
- // Send the packet to the p2p layer
- return rw.MsgReadWriter.WriteMsg(msg)
-}
diff --git a/eth/downloader/metrics.go b/exp/downloader/metrics.go
similarity index 100%
rename from eth/downloader/metrics.go
rename to exp/downloader/metrics.go
diff --git a/exp/fetcher/metrics.go b/exp/fetcher/metrics.go
index 7bb8cd5c4b..9dad34e6a0 100644
--- a/exp/fetcher/metrics.go
+++ b/exp/fetcher/metrics.go
@@ -1,18 +1,18 @@
-// Copyright 2015 The go-expanse Authors
-// This file is part of the go-expanse library.
+// Copyright 2015 The go-ethereum Authors
+// This file is part of the go-ethereum library.
//
-// The go-expanse library is free software: you can redistribute it and/or modify
+// 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-expanse library is distributed in the hope that it will be useful,
+// 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-expanse library. If not, see .
+// along with the go-ethereum library. If not, see .
// Contains the metrics collected by the fetcher.
@@ -23,10 +23,24 @@ import (
)
var (
- announceMeter = metrics.NewMeter("exp/sync/RemoteAnnounces")
- announceTimer = metrics.NewTimer("exp/sync/LocalAnnounces")
- broadcastMeter = metrics.NewMeter("exp/sync/RemoteBroadcasts")
- broadcastTimer = metrics.NewTimer("exp/sync/LocalBroadcasts")
- discardMeter = metrics.NewMeter("exp/sync/DiscardedBlocks")
- futureMeter = metrics.NewMeter("exp/sync/FutureBlocks")
+ propAnnounceInMeter = metrics.NewMeter("eth/fetcher/prop/announces/in")
+ propAnnounceOutTimer = metrics.NewTimer("eth/fetcher/prop/announces/out")
+ propAnnounceDropMeter = metrics.NewMeter("eth/fetcher/prop/announces/drop")
+ propAnnounceDOSMeter = metrics.NewMeter("eth/fetcher/prop/announces/dos")
+
+ propBroadcastInMeter = metrics.NewMeter("eth/fetcher/prop/broadcasts/in")
+ propBroadcastOutTimer = metrics.NewTimer("eth/fetcher/prop/broadcasts/out")
+ propBroadcastDropMeter = metrics.NewMeter("eth/fetcher/prop/broadcasts/drop")
+ propBroadcastDOSMeter = metrics.NewMeter("eth/fetcher/prop/broadcasts/dos")
+
+ blockFetchMeter = metrics.NewMeter("eth/fetcher/fetch/blocks")
+ headerFetchMeter = metrics.NewMeter("eth/fetcher/fetch/headers")
+ bodyFetchMeter = metrics.NewMeter("eth/fetcher/fetch/bodies")
+
+ blockFilterInMeter = metrics.NewMeter("eth/fetcher/filter/blocks/in")
+ blockFilterOutMeter = metrics.NewMeter("eth/fetcher/filter/blocks/out")
+ headerFilterInMeter = metrics.NewMeter("eth/fetcher/filter/headers/in")
+ headerFilterOutMeter = metrics.NewMeter("eth/fetcher/filter/headers/out")
+ bodyFilterInMeter = metrics.NewMeter("eth/fetcher/filter/bodies/in")
+ bodyFilterOutMeter = metrics.NewMeter("eth/fetcher/filter/bodies/out")
)
diff --git a/exp/handler.go b/exp/handler.go
index f382f0a48e..7695b1b250 100644
--- a/exp/handler.go
+++ b/exp/handler.go
@@ -26,8 +26,8 @@ import (
"github.com/expanse-project/go-expanse/common"
"github.com/expanse-project/go-expanse/core"
"github.com/expanse-project/go-expanse/core/types"
- "github.com/expanse-project/go-expanse/eth/downloader"
- "github.com/expanse-project/go-expanse/eth/fetcher"
+ "github.com/expanse-project/go-expanse/exp/downloader"
+ "github.com/expanse-project/go-expanse/exp/fetcher"
"github.com/expanse-project/go-expanse/ethdb"
"github.com/expanse-project/go-expanse/event"
"github.com/expanse-project/go-expanse/logger"
diff --git a/eth/handler_test.go b/exp/handler_test.go
similarity index 99%
rename from eth/handler_test.go
rename to exp/handler_test.go
index a3970e018b..6d12539726 100644
--- a/eth/handler_test.go
+++ b/exp/handler_test.go
@@ -1,4 +1,4 @@
-package eth
+package exp
import (
"fmt"
@@ -11,7 +11,7 @@ import (
"github.com/expanse-project/go-expanse/core/state"
"github.com/expanse-project/go-expanse/core/types"
"github.com/expanse-project/go-expanse/crypto"
- "github.com/expanse-project/go-expanse/eth/downloader"
+ "github.com/expanse-project/go-expanse/exp/downloader"
"github.com/expanse-project/go-expanse/ethdb"
"github.com/expanse-project/go-expanse/p2p"
"github.com/expanse-project/go-expanse/params"
diff --git a/eth/helper_test.go b/exp/helper_test.go
similarity index 99%
rename from eth/helper_test.go
rename to exp/helper_test.go
index 012404ff12..578c2020dc 100644
--- a/eth/helper_test.go
+++ b/exp/helper_test.go
@@ -1,7 +1,7 @@
// This file contains some shares testing functionality, common to multiple
// different files and modules being tested.
-package eth
+package exp
import (
"crypto/rand"
diff --git a/exp/metrics.go b/exp/metrics.go
index 2bce1e89da..f18d8bcb24 100644
--- a/exp/metrics.go
+++ b/exp/metrics.go
@@ -1,44 +1,157 @@
-// Copyright 2015 The go-expanse Authors
-// This file is part of the go-expanse library.
+// Copyright 2015 The go-ethereum Authors
+// This file is part of the go-ethereum library.
//
-// The go-expanse library is free software: you can redistribute it and/or modify
+// 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-expanse library is distributed in the hope that it will be useful,
+// 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-expanse library. If not, see .
+// along with the go-ethereum library. If not, see .
package exp
import (
"github.com/expanse-project/go-expanse/metrics"
+ "github.com/expanse-project/go-expanse/p2p"
)
var (
- propTxnInPacketsMeter = metrics.NewMeter("exp/prop/txns/in/packets")
- propTxnInTrafficMeter = metrics.NewMeter("exp/prop/txns/in/traffic")
- propTxnOutPacketsMeter = metrics.NewMeter("exp/prop/txns/out/packets")
- propTxnOutTrafficMeter = metrics.NewMeter("exp/prop/txns/out/traffic")
- propHashInPacketsMeter = metrics.NewMeter("exp/prop/hashes/in/packets")
- propHashInTrafficMeter = metrics.NewMeter("exp/prop/hashes/in/traffic")
- propHashOutPacketsMeter = metrics.NewMeter("exp/prop/hashes/out/packets")
- propHashOutTrafficMeter = metrics.NewMeter("exp/prop/hashes/out/traffic")
- propBlockInPacketsMeter = metrics.NewMeter("exp/prop/blocks/in/packets")
- propBlockInTrafficMeter = metrics.NewMeter("exp/prop/blocks/in/traffic")
- propBlockOutPacketsMeter = metrics.NewMeter("exp/prop/blocks/out/packets")
- propBlockOutTrafficMeter = metrics.NewMeter("exp/prop/blocks/out/traffic")
- reqHashInPacketsMeter = metrics.NewMeter("exp/req/hashes/in/packets")
- reqHashInTrafficMeter = metrics.NewMeter("exp/req/hashes/in/traffic")
- reqHashOutPacketsMeter = metrics.NewMeter("exp/req/hashes/out/packets")
- reqHashOutTrafficMeter = metrics.NewMeter("exp/req/hashes/out/traffic")
- reqBlockInPacketsMeter = metrics.NewMeter("exp/req/blocks/in/packets")
- reqBlockInTrafficMeter = metrics.NewMeter("exp/req/blocks/in/traffic")
- reqBlockOutPacketsMeter = metrics.NewMeter("exp/req/blocks/out/packets")
- reqBlockOutTrafficMeter = metrics.NewMeter("exp/req/blocks/out/traffic")
+ propTxnInPacketsMeter = metrics.NewMeter("eth/prop/txns/in/packets")
+ propTxnInTrafficMeter = metrics.NewMeter("eth/prop/txns/in/traffic")
+ propTxnOutPacketsMeter = metrics.NewMeter("eth/prop/txns/out/packets")
+ propTxnOutTrafficMeter = metrics.NewMeter("eth/prop/txns/out/traffic")
+ propHashInPacketsMeter = metrics.NewMeter("eth/prop/hashes/in/packets")
+ propHashInTrafficMeter = metrics.NewMeter("eth/prop/hashes/in/traffic")
+ propHashOutPacketsMeter = metrics.NewMeter("eth/prop/hashes/out/packets")
+ propHashOutTrafficMeter = metrics.NewMeter("eth/prop/hashes/out/traffic")
+ propBlockInPacketsMeter = metrics.NewMeter("eth/prop/blocks/in/packets")
+ propBlockInTrafficMeter = metrics.NewMeter("eth/prop/blocks/in/traffic")
+ propBlockOutPacketsMeter = metrics.NewMeter("eth/prop/blocks/out/packets")
+ propBlockOutTrafficMeter = metrics.NewMeter("eth/prop/blocks/out/traffic")
+ reqHashInPacketsMeter = metrics.NewMeter("eth/req/hashes/in/packets")
+ reqHashInTrafficMeter = metrics.NewMeter("eth/req/hashes/in/traffic")
+ reqHashOutPacketsMeter = metrics.NewMeter("eth/req/hashes/out/packets")
+ reqHashOutTrafficMeter = metrics.NewMeter("eth/req/hashes/out/traffic")
+ reqBlockInPacketsMeter = metrics.NewMeter("eth/req/blocks/in/packets")
+ reqBlockInTrafficMeter = metrics.NewMeter("eth/req/blocks/in/traffic")
+ reqBlockOutPacketsMeter = metrics.NewMeter("eth/req/blocks/out/packets")
+ reqBlockOutTrafficMeter = metrics.NewMeter("eth/req/blocks/out/traffic")
+ reqHeaderInPacketsMeter = metrics.NewMeter("eth/req/headers/in/packets")
+ reqHeaderInTrafficMeter = metrics.NewMeter("eth/req/headers/in/traffic")
+ reqHeaderOutPacketsMeter = metrics.NewMeter("eth/req/headers/out/packets")
+ reqHeaderOutTrafficMeter = metrics.NewMeter("eth/req/headers/out/traffic")
+ reqBodyInPacketsMeter = metrics.NewMeter("eth/req/bodies/in/packets")
+ reqBodyInTrafficMeter = metrics.NewMeter("eth/req/bodies/in/traffic")
+ reqBodyOutPacketsMeter = metrics.NewMeter("eth/req/bodies/out/packets")
+ reqBodyOutTrafficMeter = metrics.NewMeter("eth/req/bodies/out/traffic")
+ reqStateInPacketsMeter = metrics.NewMeter("eth/req/states/in/packets")
+ reqStateInTrafficMeter = metrics.NewMeter("eth/req/states/in/traffic")
+ reqStateOutPacketsMeter = metrics.NewMeter("eth/req/states/out/packets")
+ reqStateOutTrafficMeter = metrics.NewMeter("eth/req/states/out/traffic")
+ reqReceiptInPacketsMeter = metrics.NewMeter("eth/req/receipts/in/packets")
+ reqReceiptInTrafficMeter = metrics.NewMeter("eth/req/receipts/in/traffic")
+ reqReceiptOutPacketsMeter = metrics.NewMeter("eth/req/receipts/out/packets")
+ reqReceiptOutTrafficMeter = metrics.NewMeter("eth/req/receipts/out/traffic")
+ miscInPacketsMeter = metrics.NewMeter("eth/misc/in/packets")
+ miscInTrafficMeter = metrics.NewMeter("eth/misc/in/traffic")
+ miscOutPacketsMeter = metrics.NewMeter("eth/misc/out/packets")
+ miscOutTrafficMeter = metrics.NewMeter("eth/misc/out/traffic")
)
+
+// meteredMsgReadWriter is a wrapper around a p2p.MsgReadWriter, capable of
+// accumulating the above defined metrics based on the data stream contents.
+type meteredMsgReadWriter struct {
+ p2p.MsgReadWriter // Wrapped message stream to meter
+ version int // Protocol version to select correct meters
+}
+
+// newMeteredMsgWriter wraps a p2p MsgReadWriter with metering support. If the
+// metrics system is disabled, this fucntion returns the original object.
+func newMeteredMsgWriter(rw p2p.MsgReadWriter) p2p.MsgReadWriter {
+ if !metrics.Enabled {
+ return rw
+ }
+ return &meteredMsgReadWriter{MsgReadWriter: rw}
+}
+
+// Init sets the protocol version used by the stream to know which meters to
+// increment in case of overlapping message ids between protocol versions.
+func (rw *meteredMsgReadWriter) Init(version int) {
+ rw.version = version
+}
+
+func (rw *meteredMsgReadWriter) ReadMsg() (p2p.Msg, error) {
+ // Read the message and short circuit in case of an error
+ msg, err := rw.MsgReadWriter.ReadMsg()
+ if err != nil {
+ return msg, err
+ }
+ // Account for the data traffic
+ packets, traffic := miscInPacketsMeter, miscInTrafficMeter
+ switch {
+ case rw.version < eth62 && msg.Code == BlockHashesMsg:
+ packets, traffic = reqHashInPacketsMeter, reqHashInTrafficMeter
+ case rw.version < eth62 && msg.Code == BlocksMsg:
+ packets, traffic = reqBlockInPacketsMeter, reqBlockInTrafficMeter
+
+ case rw.version >= eth62 && msg.Code == BlockHeadersMsg:
+ packets, traffic = reqBlockInPacketsMeter, reqBlockInTrafficMeter
+ case rw.version >= eth62 && msg.Code == BlockBodiesMsg:
+ packets, traffic = reqBodyInPacketsMeter, reqBodyInTrafficMeter
+
+ case rw.version >= eth63 && msg.Code == NodeDataMsg:
+ packets, traffic = reqStateInPacketsMeter, reqStateInTrafficMeter
+ case rw.version >= eth63 && msg.Code == ReceiptsMsg:
+ packets, traffic = reqReceiptInPacketsMeter, reqReceiptInTrafficMeter
+
+ case msg.Code == NewBlockHashesMsg:
+ packets, traffic = propHashInPacketsMeter, propHashInTrafficMeter
+ case msg.Code == NewBlockMsg:
+ packets, traffic = propBlockInPacketsMeter, propBlockInTrafficMeter
+ case msg.Code == TxMsg:
+ packets, traffic = propTxnInPacketsMeter, propTxnInTrafficMeter
+ }
+ packets.Mark(1)
+ traffic.Mark(int64(msg.Size))
+
+ return msg, err
+}
+
+func (rw *meteredMsgReadWriter) WriteMsg(msg p2p.Msg) error {
+ // Account for the data traffic
+ packets, traffic := miscOutPacketsMeter, miscOutTrafficMeter
+ switch {
+ case rw.version < eth62 && msg.Code == BlockHashesMsg:
+ packets, traffic = reqHashOutPacketsMeter, reqHashOutTrafficMeter
+ case rw.version < eth62 && msg.Code == BlocksMsg:
+ packets, traffic = reqBlockOutPacketsMeter, reqBlockOutTrafficMeter
+
+ case rw.version >= eth62 && msg.Code == BlockHeadersMsg:
+ packets, traffic = reqHeaderOutPacketsMeter, reqHeaderOutTrafficMeter
+ case rw.version >= eth62 && msg.Code == BlockBodiesMsg:
+ packets, traffic = reqBodyOutPacketsMeter, reqBodyOutTrafficMeter
+
+ case rw.version >= eth63 && msg.Code == NodeDataMsg:
+ packets, traffic = reqStateOutPacketsMeter, reqStateOutTrafficMeter
+ case rw.version >= eth63 && msg.Code == ReceiptsMsg:
+ packets, traffic = reqReceiptOutPacketsMeter, reqReceiptOutTrafficMeter
+
+ case msg.Code == NewBlockHashesMsg:
+ packets, traffic = propHashOutPacketsMeter, propHashOutTrafficMeter
+ case msg.Code == NewBlockMsg:
+ packets, traffic = propBlockOutPacketsMeter, propBlockOutTrafficMeter
+ case msg.Code == TxMsg:
+ packets, traffic = propTxnOutPacketsMeter, propTxnOutTrafficMeter
+ }
+ packets.Mark(1)
+ traffic.Mark(int64(msg.Size))
+
+ // Send the packet to the p2p layer
+ return rw.MsgReadWriter.WriteMsg(msg)
+}
diff --git a/exp/peer.go b/exp/peer.go
index b31f832eca..786963af13 100644
--- a/exp/peer.go
+++ b/exp/peer.go
@@ -25,7 +25,7 @@ import (
"github.com/expanse-project/go-expanse/common"
"github.com/expanse-project/go-expanse/core/types"
- "github.com/expanse-project/go-expanse/eth/downloader"
+ "github.com/expanse-project/go-expanse/exp/downloader"
"github.com/expanse-project/go-expanse/logger"
"github.com/expanse-project/go-expanse/logger/glog"
"github.com/expanse-project/go-expanse/p2p"
diff --git a/jsre/expanse_js.go b/jsre/expanse_js.go
index aa46a776fd..2d5c685b40 100644
--- a/jsre/expanse_js.go
+++ b/jsre/expanse_js.go
@@ -6081,7 +6081,7 @@ module.exports = IsSyncing;
},{"../utils/utils":20,"./formatters":29,"./method":35,"./requestmanager":43}],45:[function(require,module,exports){
/*
- This file is part of ethereum.js.
+ This file is part of expanse.js.
ethereum.js is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
diff --git a/rpc/api/eth.go b/rpc/api/eth.go
index 134c3c4781..4434524089 100644
--- a/rpc/api/eth.go
+++ b/rpc/api/eth.go
@@ -97,6 +97,54 @@ var (
"eth_resend": (*ethApi).Resend,
"eth_pendingTransactions": (*ethApi).PendingTransactions,
"eth_getTransactionReceipt": (*ethApi).GetTransactionReceipt,
+ "exp_accounts": (*ethApi).Accounts,
+ "exp_blockNumber": (*ethApi).BlockNumber,
+ "exp_getBalance": (*ethApi).GetBalance,
+ "exp_protocolVersion": (*ethApi).ProtocolVersion,
+ "exp_coinbase": (*ethApi).Coinbase,
+ "exp_mining": (*ethApi).IsMining,
+ "exp_syncing": (*ethApi).IsSyncing,
+ "exp_gasPrice": (*ethApi).GasPrice,
+ "exp_getStorage": (*ethApi).GetStorage,
+ "exp_storageAt": (*ethApi).GetStorage,
+ "exp_getStorageAt": (*ethApi).GetStorageAt,
+ "exp_getTransactionCount": (*ethApi).GetTransactionCount,
+ "exp_getBlockTransactionCountByHash": (*ethApi).GetBlockTransactionCountByHash,
+ "exp_getBlockTransactionCountByNumber": (*ethApi).GetBlockTransactionCountByNumber,
+ "exp_getUncleCountByBlockHash": (*ethApi).GetUncleCountByBlockHash,
+ "exp_getUncleCountByBlockNumber": (*ethApi).GetUncleCountByBlockNumber,
+ "exp_getData": (*ethApi).GetData,
+ "exp_getCode": (*ethApi).GetData,
+ "exp_sign": (*ethApi).Sign,
+ "exp_sendRawTransaction": (*ethApi).SendRawTransaction,
+ "exp_sendTransaction": (*ethApi).SendTransaction,
+ "exp_transact": (*ethApi).SendTransaction,
+ "exp_estimateGas": (*ethApi).EstimateGas,
+ "exp_call": (*ethApi).Call,
+ "exp_flush": (*ethApi).Flush,
+ "exp_getBlockByHash": (*ethApi).GetBlockByHash,
+ "exp_getBlockByNumber": (*ethApi).GetBlockByNumber,
+ "exp_getTransactionByHash": (*ethApi).GetTransactionByHash,
+ "exp_getTransactionByBlockNumberAndIndex": (*ethApi).GetTransactionByBlockNumberAndIndex,
+ "exp_getTransactionByBlockHashAndIndex": (*ethApi).GetTransactionByBlockHashAndIndex,
+ "exp_getUncleByBlockHashAndIndex": (*ethApi).GetUncleByBlockHashAndIndex,
+ "exp_getUncleByBlockNumberAndIndex": (*ethApi).GetUncleByBlockNumberAndIndex,
+ "exp_getCompilers": (*ethApi).GetCompilers,
+ "exp_compileSolidity": (*ethApi).CompileSolidity,
+ "exp_newFilter": (*ethApi).NewFilter,
+ "exp_newBlockFilter": (*ethApi).NewBlockFilter,
+ "exp_newPendingTransactionFilter": (*ethApi).NewPendingTransactionFilter,
+ "exp_uninstallFilter": (*ethApi).UninstallFilter,
+ "exp_getFilterChanges": (*ethApi).GetFilterChanges,
+ "exp_getFilterLogs": (*ethApi).GetFilterLogs,
+ "exp_getLogs": (*ethApi).GetLogs,
+ "exp_hashrate": (*ethApi).Hashrate,
+ "exp_getWork": (*ethApi).GetWork,
+ "exp_submitWork": (*ethApi).SubmitWork,
+ "exp_submitHashrate": (*ethApi).SubmitHashrate,
+ "exp_resend": (*ethApi).Resend,
+ "exp_pendingTransactions": (*ethApi).PendingTransactions,
+ "exp_getTransactionReceipt": (*ethApi).GetTransactionReceipt,
}
)
@@ -168,8 +216,8 @@ func (self *ethApi) IsMining(req *shared.Request) (interface{}, error) {
}
func (self *ethApi) IsSyncing(req *shared.Request) (interface{}, error) {
- current := self.ethereum.ChainManager().CurrentBlock().NumberU64()
- origin, height := self.ethereum.Downloader().Boundaries()
+ current := self.expanse.ChainManager().CurrentBlock().NumberU64()
+ origin, height := self.expanse.Downloader().Boundaries()
if current < height {
return map[string]interface{}{
diff --git a/rpc/comms/ipc_unix.go b/rpc/comms/ipc_unix.go
index 203f65959a..d5e1552867 100644
--- a/rpc/comms/ipc_unix.go
+++ b/rpc/comms/ipc_unix.go
@@ -71,7 +71,7 @@ func (self *ipcClient) reconnect() error {
}
-func startIpc(cfg IpcConfig, codec codec.Codec, initializer func(conn net.Conn) (shared.EthereumApi, error)) error {
+func startIpc(cfg IpcConfig, codec codec.Codec, initializer func(conn net.Conn) (shared.ExpanseApi, error)) error {
// Ensure the IPC path exists and remove any previous leftover
if err := os.MkdirAll(filepath.Dir(cfg.Endpoint), 0751); err != nil {
return err
diff --git a/rpc/jeth.go b/rpc/jeth.go
index 86969bdadb..479a937fc0 100644
--- a/rpc/jeth.go
+++ b/rpc/jeth.go
@@ -40,7 +40,7 @@ type Jeth struct {
}
-func NewJeth(ethApi shared.EthereumApi, re *jsre.JSRE, client comms.EthereumClient, fe xeth.Frontend) *Jeth {
+func NewJeth(ethApi shared.ExpanseApi, re *jsre.JSRE, client comms.ExpanseClient, fe xeth.Frontend) *Jeth {
return &Jeth{ethApi, re, client, fe}
}
diff --git a/tests/block_test_util.go b/tests/block_test_util.go
index 3ac6a5fc9b..536af3fcab 100644
--- a/tests/block_test_util.go
+++ b/tests/block_test_util.go
@@ -177,13 +177,13 @@ func runBlockTest(test *BlockTest) error {
// import pre accounts
- _, err = test.InsertPreState(ethereum)
+ _, err = test.InsertPreState(expanse)
if err != nil {
return fmt.Errorf("InsertPreState: %v", err)
}
- cm := ethereum.ChainManager()
+ cm := expanse.ChainManager()
validBlocks, err := test.TryBlocksInsert(cm)
if err != nil {
return err