diff --git a/core/core.go b/core/core.go index cb4d29c9dcbb002f52d6901046332d5db1294721..43d0bb3a68542aedf3a8938b0828df3cb942a178 100644 --- a/core/core.go +++ b/core/core.go @@ -24,12 +24,16 @@ import ( log "github.com/eris-ltd/eris-logger" - config "github.com/eris-ltd/eris-db/config" - consensus "github.com/eris-ltd/eris-db/consensus" - core_types "github.com/eris-ltd/eris-db/core/types" - definitions "github.com/eris-ltd/eris-db/definitions" - manager "github.com/eris-ltd/eris-db/manager" - server "github.com/eris-ltd/eris-db/server" + config "github.com/eris-ltd/eris-db/config" + consensus "github.com/eris-ltd/eris-db/consensus" + definitions "github.com/eris-ltd/eris-db/definitions" + event "github.com/eris-ltd/eris-db/event" + manager "github.com/eris-ltd/eris-db/manager" + // rpc_v0 is carried over from Eris-DBv0.11 and before on port 1337 + rpc_v0 "github.com/eris-ltd/eris-db/rpc/v0" + // rpc_tendermint is carried over from Eris-DBv0.11 and before on port 46657 + // rpc_tendermint "github.com/eris-ltd/eris-db/rpc/tendermint" + server "github.com/eris-ltd/eris-db/server" ) // Core is the high-level structure @@ -76,14 +80,14 @@ func NewCore(chainId string, consensusConfig *config.ModuleConfig, func (core *Core) NewGateway(config *server.ServerConfig) (*server.ServeProcess, error) { - codec := &core_types.TCodec{} - eventSubscriptions := NewEventSubscriptions(core.pipe.Events()) + codec := &rpc_v0.TCodec{} + eventSubscriptions := event.NewEventSubscriptions(core.pipe.Events()) // The services. - tmwss := NewErisDbWsService(codec, core.pipe) - tmjs := NewErisDbJsonService(codec, core.pipe, eventSubscriptions) + tmwss := rpc_v0.NewErisDbWsService(codec, core.pipe) + tmjs := rpc_v0.NewErisDbJsonService(codec, core.pipe, eventSubscriptions) // The servers. - jsonServer := NewJsonRpcServer(tmjs) - restServer := NewRestServer(codec, core.pipe, eventSubscriptions) + jsonServer := rpc_v0.NewJsonRpcServer(tmjs) + restServer := rpc_v0.NewRestServer(codec, core.pipe, eventSubscriptions) wsServer := server.NewWebSocketServer(config.WebSocket.MaxWebSocketSessions, tmwss) // Create a server process. diff --git a/definitions/pipe.go b/definitions/pipe.go index 1db83165085c1b32fad713fd6ede3956944fb477..070c3d22bdc1b4ca3b226f4e5aa7937fbac38c56 100644 --- a/definitions/pipe.go +++ b/definitions/pipe.go @@ -25,10 +25,10 @@ package definitions // these interfaces into an Engine, Communicator, NameReg, Permissions (suggestion) import ( - events "github.com/tendermint/go-events" tendermint_types "github.com/tendermint/tendermint/types" account "github.com/eris-ltd/eris-db/account" + event "github.com/eris-ltd/eris-db/event" manager_types "github.com/eris-ltd/eris-db/manager/types" transaction "github.com/eris-ltd/eris-db/txs" types "github.com/eris-ltd/eris-db/core/types" @@ -38,7 +38,7 @@ type Pipe interface { Accounts() Accounts Blockchain() Blockchain Consensus() Consensus - Events() EventEmitter + Events() event.EventEmitter NameReg() NameReg Net() Net Transactor() Transactor @@ -50,7 +50,7 @@ type Pipe interface { type Accounts interface { GenPrivAccount() (*account.PrivAccount, error) GenPrivAccountFromKey(privKey []byte) (*account.PrivAccount, error) - Accounts([]*types.FilterData) (*types.AccountList, error) + Accounts([]*event.FilterData) (*types.AccountList, error) Account(address []byte) (*account.Account, error) Storage(address []byte) (*types.Storage, error) StorageAt(address, key []byte) (*types.StorageItem, error) @@ -62,7 +62,7 @@ type Blockchain interface { ChainId() (string, error) LatestBlockHeight() (int, error) LatestBlock() (*tendermint_types.Block, error) - Blocks([]*types.FilterData) (*types.Blocks, error) + Blocks([]*event.FilterData) (*types.Blocks, error) Block(height int) (*tendermint_types.Block, error) } @@ -71,14 +71,9 @@ type Consensus interface { Validators() (*types.ValidatorList, error) } -type EventEmitter interface { - Subscribe(subId, event string, callback func(events.EventData)) (bool, error) - Unsubscribe(subId string) (bool, error) -} - type NameReg interface { Entry(key string) (*transaction.NameRegEntry, error) - Entries([]*types.FilterData) (*types.ResultListNames, error) + Entries([]*event.FilterData) (*types.ResultListNames, error) } type Net interface { diff --git a/definitions/tendermint_pipe.go b/definitions/tendermint_pipe.go new file mode 100644 index 0000000000000000000000000000000000000000..d82f8727f7e2fb7bbb839c1ba1fa4927b2c3bea8 --- /dev/null +++ b/definitions/tendermint_pipe.go @@ -0,0 +1,26 @@ +// Copyright 2015, 2016 Eris Industries (UK) Ltd. +// This file is part of Eris-RT + +// Eris-RT is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Eris-RT 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 General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Eris-RT. If not, see <http://www.gnu.org/licenses/>. + +package definitions + +// NOTE: [ben] TendermintPipe is the additional pipe to carry over +// the RPC exposed by old Tendermint on port `46657` (eris-db-0.11.4 and before) +// This TendermintPipe interface should be depracted and work towards a generic +// collection of RPC routes for Eris-DB-1.0.0 + +type TendermintPipe interface { + +} diff --git a/core/event_cache.go b/event/event_cache.go similarity index 82% rename from core/event_cache.go rename to event/event_cache.go index f2e2e58a81d4b626ef708df6b67922c957ddba3a..5b196e16eb3d12eeb9c672a6e3965c79a138a72f 100644 --- a/core/event_cache.go +++ b/event/event_cache.go @@ -1,13 +1,11 @@ -package core +package event import ( "fmt" "sync" "time" - "github.com/tendermint/go-events" - - definitions "github.com/eris-ltd/eris-db/definitions" + evts "github.com/tendermint/go-events" ) var ( @@ -48,12 +46,12 @@ func (this *EventCache) poll() []interface{} { // Catches events that callers subscribe to and adds them to an array ready to be polled. type EventSubscriptions struct { mtx *sync.Mutex - eventEmitter definitions.EventEmitter + eventEmitter EventEmitter subs map[string]*EventCache reap bool } -func NewEventSubscriptions(eventEmitter definitions.EventEmitter) *EventSubscriptions { +func NewEventSubscriptions(eventEmitter EventEmitter) *EventSubscriptions { es := &EventSubscriptions{ mtx: &sync.Mutex{}, eventEmitter: eventEmitter, @@ -86,14 +84,14 @@ func reap(es *EventSubscriptions) { // a delay - though a conflict is practically impossible, and if it does // happen it's for an insignificant amount of time (the time it takes to // carry out EventCache.poll() ). -func (this *EventSubscriptions) add(eventId string) (string, error) { - subId, errSID := generateSubId() +func (this *EventSubscriptions) Add(eventId string) (string, error) { + subId, errSID := GenerateSubId() if errSID != nil { return "", errSID } cache := newEventCache() _, errC := this.eventEmitter.Subscribe(subId, eventId, - func(evt events.EventData) { + func(evt evts.EventData) { cache.mtx.Lock() defer cache.mtx.Unlock() cache.events = append(cache.events, evt) @@ -106,7 +104,7 @@ func (this *EventSubscriptions) add(eventId string) (string, error) { return subId, nil } -func (this *EventSubscriptions) poll(subId string) ([]interface{}, error) { +func (this *EventSubscriptions) Poll(subId string) ([]interface{}, error) { sub, ok := this.subs[subId] if !ok { return nil, fmt.Errorf("Subscription not active. ID: " + subId) @@ -114,7 +112,7 @@ func (this *EventSubscriptions) poll(subId string) ([]interface{}, error) { return sub.poll(), nil } -func (this *EventSubscriptions) remove(subId string) error { +func (this *EventSubscriptions) Remove(subId string) error { this.mtx.Lock() defer this.mtx.Unlock() // TODO Check this. diff --git a/core/event_cache_test.go b/event/event_cache_test.go similarity index 99% rename from core/event_cache_test.go rename to event/event_cache_test.go index da0a483993b0ac7b73856a6fdf750a19cf3a003e..065611312182bd527b53d52e433ccdacb276469b 100644 --- a/core/event_cache_test.go +++ b/event/event_cache_test.go @@ -1,4 +1,4 @@ -package core +package event import ( "encoding/hex" diff --git a/core/types/events.go b/event/events.go similarity index 64% rename from core/types/events.go rename to event/events.go index c96f7dfa43aa8d83c7078e6f20e84b2fb1fd810a..9df7739d88101be843ebc5a6aa99a13819d5982b 100644 --- a/core/types/events.go +++ b/event/events.go @@ -14,9 +14,13 @@ // You should have received a copy of the GNU General Public License // along with Eris-RT. If not, see <http://www.gnu.org/licenses/>. -package types +package event import ( + "crypto/rand" + "encoding/hex" + "strings" + evts "github.com/tendermint/go-events" ) @@ -25,6 +29,11 @@ import ( // [ben] To improve this we will switch out go-events with eris-db/event so // that there is no need anymore for this poor wrapper. +type EventEmitter interface { + Subscribe(subId, event string, callback func(evts.EventData)) (bool, error) + Unsubscribe(subId string) (bool, error) +} + // The events struct has methods for working with events. type events struct { eventSwitch *evts.EventSwitch @@ -45,3 +54,34 @@ func (this *events) Unsubscribe(subId string) (bool, error) { this.eventSwitch.RemoveListener(subId) return true, nil } + +// *********************************** Events *********************************** + +// EventSubscribe +type EventSub struct { + SubId string `json:"sub_id"` +} + +// EventUnsubscribe +type EventUnsub struct { + Result bool `json:"result"` +} + +// EventPoll +type PollResponse struct { + Events []interface{} `json:"events"` +} + +// ************************************************************************************** +// Helper function + +func GenerateSubId() (string, error) { + b := make([]byte, 32) + _, err := rand.Read(b) + if err != nil { + return "", err + } + rStr := hex.EncodeToString(b) + return strings.ToUpper(rStr), nil + +} diff --git a/core/types/filters.go b/event/filters.go similarity index 99% rename from core/types/filters.go rename to event/filters.go index 9cb86241fd8b682d4f65a1f1311dc015e2f820e5..948a2f012af4275782adcd480248cc424b459ca6 100644 --- a/core/types/filters.go +++ b/event/filters.go @@ -1,4 +1,4 @@ -package types +package event import ( "fmt" diff --git a/event/event.go b/event_new/event.go similarity index 100% rename from event/event.go rename to event_new/event.go diff --git a/event/event_test.go b/event_new/event_test.go similarity index 100% rename from event/event_test.go rename to event_new/event_test.go diff --git a/event/example_test.go b/event_new/example_test.go similarity index 100% rename from event/example_test.go rename to event_new/example_test.go diff --git a/event/filter/filter.go b/event_new/filter/filter.go similarity index 100% rename from event/filter/filter.go rename to event_new/filter/filter.go diff --git a/event/filter/filter_test.go b/event_new/filter/filter_test.go similarity index 100% rename from event/filter/filter_test.go rename to event_new/filter/filter_test.go diff --git a/event/filter/generic_filter.go b/event_new/filter/generic_filter.go similarity index 100% rename from event/filter/generic_filter.go rename to event_new/filter/generic_filter.go diff --git a/manager/eris-mint/accounts.go b/manager/eris-mint/accounts.go index 28bb3de1475e0e144e2cd1573a658817f5f5f766..9acbe4a541e40e6c842ff859ee944e7400dc1c85 100644 --- a/manager/eris-mint/accounts.go +++ b/manager/eris-mint/accounts.go @@ -26,18 +26,19 @@ import ( tendermint_common "github.com/tendermint/go-common" - account "github.com/eris-ltd/eris-db/account" - core_types "github.com/eris-ltd/eris-db/core/types" + account "github.com/eris-ltd/eris-db/account" + core_types "github.com/eris-ltd/eris-db/core/types" + event "github.com/eris-ltd/eris-db/event" ) // The accounts struct has methods for working with accounts. type accounts struct { erisMint *ErisMint - filterFactory *core_types.FilterFactory + filterFactory *event.FilterFactory } func newAccounts(erisMint *ErisMint) *accounts { - ff := core_types.NewFilterFactory() + ff := event.NewFilterFactory() ff.RegisterFilterPool("code", &sync.Pool{ New: func() interface{} { @@ -73,7 +74,7 @@ func (this *accounts) GenPrivAccountFromKey(privKey []byte) ( } // Get all accounts. -func (this *accounts) Accounts(fda []*core_types.FilterData) ( +func (this *accounts) Accounts(fda []*event.FilterData) ( *core_types.AccountList, error) { accounts := make([]*account.Account, 0) state := this.erisMint.GetState() @@ -161,7 +162,7 @@ type AccountCodeFilter struct { match func([]byte, []byte) bool } -func (this *AccountCodeFilter) Configure(fd *core_types.FilterData) error { +func (this *AccountCodeFilter) Configure(fd *event.FilterData) error { op := fd.Op val, err := hex.DecodeString(fd.Value) @@ -200,12 +201,12 @@ type AccountBalanceFilter struct { match func(int64, int64) bool } -func (this *AccountBalanceFilter) Configure(fd *core_types.FilterData) error { - val, err := core_types.ParseNumberValue(fd.Value) +func (this *AccountBalanceFilter) Configure(fd *event.FilterData) error { + val, err := event.ParseNumberValue(fd.Value) if err != nil { return err } - match, err2 := core_types.GetRangeFilter(fd.Op, "balance") + match, err2 := event.GetRangeFilter(fd.Op, "balance") if err2 != nil { return err2 } diff --git a/manager/eris-mint/blockchain.go b/manager/eris-mint/blockchain.go index 461d4291eb8016eb244b93b252a473b93f9e8e6f..86a7b6481b29af321188df043a441306d40094a5 100644 --- a/manager/eris-mint/blockchain.go +++ b/manager/eris-mint/blockchain.go @@ -29,6 +29,7 @@ import ( "github.com/tendermint/tendermint/types" core_types "github.com/eris-ltd/eris-db/core/types" + event "github.com/eris-ltd/eris-db/event" "github.com/eris-ltd/eris-db/manager/eris-mint/state" ) @@ -45,11 +46,11 @@ type blockchain struct { chainID string genDocFile string // XXX blockStore BlockStore - filterFactory *core_types.FilterFactory + filterFactory *event.FilterFactory } func newBlockchain(chainID, genDocFile string, blockStore BlockStore) *blockchain { - ff := core_types.NewFilterFactory() + ff := event.NewFilterFactory() ff.RegisterFilterPool("height", &sync.Pool{ New: func() interface{} { @@ -106,7 +107,7 @@ func (this *blockchain) LatestBlock() (*types.Block, error) { // Get the blocks from 'minHeight' to 'maxHeight'. // TODO Caps on total number of blocks should be set. -func (this *blockchain) Blocks(fda []*core_types.FilterData) (*core_types.Blocks, error) { +func (this *blockchain) Blocks(fda []*event.FilterData) (*core_types.Blocks, error) { newFda := fda var minHeight int var maxHeight int @@ -156,7 +157,7 @@ func (this *blockchain) Block(height int) (*types.Block, error) { } // Function for matching accounts against filter data. -func (this *accounts) matchBlock(block, fda []*core_types.FilterData) bool { +func (this *accounts) matchBlock(block, fda []*event.FilterData) bool { return false } @@ -168,7 +169,7 @@ type BlockHeightFilter struct { match func(int, int) bool } -func (this *BlockHeightFilter) Configure(fd *core_types.FilterData) error { +func (this *BlockHeightFilter) Configure(fd *event.FilterData) error { op := fd.Op var val int if fd.Value == "min" { @@ -224,7 +225,7 @@ func (this *BlockHeightFilter) Match(v interface{}) bool { } // TODO i should start using named return params... -func getHeightMinMax(fda []*core_types.FilterData, height int) (int, int, []*core_types.FilterData, error) { +func getHeightMinMax(fda []*event.FilterData, height int) (int, int, []*event.FilterData, error) { min := 0 max := height diff --git a/manager/eris-mint/namereg.go b/manager/eris-mint/namereg.go index 4871a533132a9c96b71b0104f13adb88f2299c5c..cc161feb19dc2bd00dd5940e48b6483bb0de327b 100644 --- a/manager/eris-mint/namereg.go +++ b/manager/eris-mint/namereg.go @@ -28,17 +28,18 @@ import ( "github.com/eris-ltd/eris-db/txs" core_types "github.com/eris-ltd/eris-db/core/types" + event "github.com/eris-ltd/eris-db/event" ) // The net struct. type namereg struct { erisMint *ErisMint - filterFactory *core_types.FilterFactory + filterFactory *event.FilterFactory } func newNameReg(erisMint *ErisMint) *namereg { - ff := core_types.NewFilterFactory() + ff := event.NewFilterFactory() ff.RegisterFilterPool("name", &sync.Pool{ New: func() interface{} { @@ -76,7 +77,7 @@ func (this *namereg) Entry(key string) (*txs.NameRegEntry, error) { return entry, nil } -func (this *namereg) Entries(filters []*core_types.FilterData) (*core_types.ResultListNames, error) { +func (this *namereg) Entries(filters []*event.FilterData) (*core_types.ResultListNames, error) { var blockHeight int var names []*txs.NameRegEntry state := this.erisMint.GetState() @@ -108,7 +109,7 @@ type NameRegNameFilter struct { match func(string, string) bool } -func (this *NameRegNameFilter) Configure(fd *core_types.FilterData) error { +func (this *NameRegNameFilter) Configure(fd *event.FilterData) error { op := fd.Op val := fd.Value @@ -144,7 +145,7 @@ type NameRegOwnerFilter struct { match func([]byte, []byte) bool } -func (this *NameRegOwnerFilter) Configure(fd *core_types.FilterData) error { +func (this *NameRegOwnerFilter) Configure(fd *event.FilterData) error { op := fd.Op val, err := hex.DecodeString(fd.Value) @@ -183,7 +184,7 @@ type NameRegDataFilter struct { match func(string, string) bool } -func (this *NameRegDataFilter) Configure(fd *core_types.FilterData) error { +func (this *NameRegDataFilter) Configure(fd *event.FilterData) error { op := fd.Op val := fd.Value @@ -219,12 +220,12 @@ type NameRegExpiresFilter struct { match func(int64, int64) bool } -func (this *NameRegExpiresFilter) Configure(fd *core_types.FilterData) error { - val, err := core_types.ParseNumberValue(fd.Value) +func (this *NameRegExpiresFilter) Configure(fd *event.FilterData) error { + val, err := event.ParseNumberValue(fd.Value) if err != nil { return err } - match, err2 := core_types.GetRangeFilter(fd.Op, "expires") + match, err2 := event.GetRangeFilter(fd.Op, "expires") if err2 != nil { return err2 } diff --git a/manager/eris-mint/pipe.go b/manager/eris-mint/pipe.go index 74bc637313cb56a6b97b4e2f84cf0411778a8bfd..c5dcf62099138cbc22278511fae11dab730fc0a9 100644 --- a/manager/eris-mint/pipe.go +++ b/manager/eris-mint/pipe.go @@ -28,6 +28,7 @@ import ( config "github.com/eris-ltd/eris-db/config" definitions "github.com/eris-ltd/eris-db/definitions" + event "github.com/eris-ltd/eris-db/event" manager_types "github.com/eris-ltd/eris-db/manager/types" state "github.com/eris-ltd/eris-db/manager/eris-mint/state" state_types "github.com/eris-ltd/eris-db/manager/eris-mint/state/types" @@ -41,7 +42,7 @@ type ErisMintPipe struct { accounts definitions.Accounts blockchain definitions.Blockchain consensus definitions.Consensus - events definitions.EventEmitter + events event.EventEmitter namereg definitions.NameReg net definitions.Net transactor definitions.Transactor @@ -53,6 +54,10 @@ type ErisMintPipe struct { // eris-db/definitions.Pipe var _ definitions.Pipe = (*ErisMintPipe)(nil) +// NOTE [ben] Compiler check to ensure ErisMintPipe successfully implements +// eris-db/definitions.TendermintPipe +var _ definitions.TendermintPipe = (*ErisMintPipe)(nil) + func NewErisMintPipe(moduleConfig *config.ModuleConfig, eventSwitch *tendermint_events.EventSwitch) (*ErisMintPipe, error) { @@ -163,7 +168,7 @@ func (pipe *ErisMintPipe) Consensus() definitions.Consensus { return pipe.consensus } -func (pipe *ErisMintPipe) Events() definitions.EventEmitter { +func (pipe *ErisMintPipe) Events() event.EventEmitter { return pipe.events } diff --git a/manager/eris-mint/transactor.go b/manager/eris-mint/transactor.go index 548375140df03aeaa1f47f7e58b5289b33d05162..0f5f21b4e7809f508eae4c797471c3a6ea10f1a7 100644 --- a/manager/eris-mint/transactor.go +++ b/manager/eris-mint/transactor.go @@ -31,7 +31,7 @@ import ( "github.com/eris-ltd/eris-db/account" core_types "github.com/eris-ltd/eris-db/core/types" - definitions "github.com/eris-ltd/eris-db/definitions" + event "github.com/eris-ltd/eris-db/event" "github.com/eris-ltd/eris-db/manager/eris-mint/evm" "github.com/eris-ltd/eris-db/manager/eris-mint/state" "github.com/eris-ltd/eris-db/txs" @@ -41,12 +41,12 @@ type transactor struct { chainID string eventSwitch tEvents.Fireable erisMint *ErisMint - eventEmitter definitions.EventEmitter + eventEmitter event.EventEmitter txMtx *sync.Mutex } func newTransactor(chainID string, eventSwitch tEvents.Fireable, - erisMint *ErisMint, eventEmitter definitions.EventEmitter) *transactor { + erisMint *ErisMint, eventEmitter event.EventEmitter) *transactor { txs := &transactor{ chainID, eventSwitch, diff --git a/rpc/client/client.go b/rpc/tendermint/client/client.go similarity index 100% rename from rpc/client/client.go rename to rpc/tendermint/client/client.go diff --git a/rpc/core/accounts.go b/rpc/tendermint/core/accounts.go similarity index 100% rename from rpc/core/accounts.go rename to rpc/tendermint/core/accounts.go diff --git a/rpc/core/log.go b/rpc/tendermint/core/log.go similarity index 100% rename from rpc/core/log.go rename to rpc/tendermint/core/log.go diff --git a/rpc/core/mempool.go b/rpc/tendermint/core/mempool.go similarity index 100% rename from rpc/core/mempool.go rename to rpc/tendermint/core/mempool.go diff --git a/rpc/core/names.go b/rpc/tendermint/core/names.go similarity index 100% rename from rpc/core/names.go rename to rpc/tendermint/core/names.go diff --git a/rpc/core/net.go b/rpc/tendermint/core/net.go similarity index 100% rename from rpc/core/net.go rename to rpc/tendermint/core/net.go diff --git a/rpc/core/pipe.go b/rpc/tendermint/core/pipe.go similarity index 100% rename from rpc/core/pipe.go rename to rpc/tendermint/core/pipe.go diff --git a/rpc/core/routes.go b/rpc/tendermint/core/routes.go similarity index 100% rename from rpc/core/routes.go rename to rpc/tendermint/core/routes.go diff --git a/rpc/core/txs.go b/rpc/tendermint/core/txs.go similarity index 100% rename from rpc/core/txs.go rename to rpc/tendermint/core/txs.go diff --git a/rpc/core/types/responses.go b/rpc/tendermint/core/types/responses.go similarity index 100% rename from rpc/core/types/responses.go rename to rpc/tendermint/core/types/responses.go diff --git a/rpc/jsonrpc.go b/rpc/tendermint/jsonrpc.go similarity index 98% rename from rpc/jsonrpc.go rename to rpc/tendermint/jsonrpc.go index 72115138ad53350c8619c1fdce1ba67720e78a17..f0be57ee3633a085373aa117d7eb56d3aec3e37a 100644 --- a/rpc/jsonrpc.go +++ b/rpc/tendermint/jsonrpc.go @@ -1,4 +1,4 @@ -package rpc +package rpc_tendermint import ( "encoding/json" diff --git a/rpc/rpc_test.go b/rpc/tendermint/rpc_test.go similarity index 96% rename from rpc/rpc_test.go rename to rpc/tendermint/rpc_test.go index bfafa4c2f9861f01192de0ad9b9aba05897d304d..5764ef6407f0b16c1af89bc955d31f8b1701001e 100644 --- a/rpc/rpc_test.go +++ b/rpc/tendermint/rpc_test.go @@ -1,4 +1,4 @@ -package rpc +package rpc_tendermint import ( "github.com/stretchr/testify/assert" diff --git a/rpc/test/client_rpc_test.go b/rpc/tendermint/test/client_rpc_test.go similarity index 100% rename from rpc/test/client_rpc_test.go rename to rpc/tendermint/test/client_rpc_test.go diff --git a/rpc/test/client_ws_test.go b/rpc/tendermint/test/client_ws_test.go similarity index 100% rename from rpc/test/client_ws_test.go rename to rpc/tendermint/test/client_ws_test.go diff --git a/rpc/test/genesis.go b/rpc/tendermint/test/genesis.go similarity index 95% rename from rpc/test/genesis.go rename to rpc/tendermint/test/genesis.go index d1ee56212430394bf7f9e7a08bdff5b34b1eaf46..3cd80e11130fb6d27449d4d7b3c68e84582143ab 100644 --- a/rpc/test/genesis.go +++ b/rpc/tendermint/test/genesis.go @@ -40,7 +40,7 @@ var defaultGenesis = `{ }` var defaultPrivValidator = `{ - "address": "1D7A91CB32F758A02EBB9BE1FB6F8DEE56F90D42", + "address": "1D7A91CB32F758A02EBB9BE1FB6F8DEE56F90D42", "pub_key": [1,"06FBAC4E285285D1D91FCBC7E91C780ADA11516F67462340B3980CE2B94940E8"], "priv_key": [1,"C453604BD6480D5538B4C6FD2E3E314B5BCE518D75ADE4DA3DA85AB8ADFD819606FBAC4E285285D1D91FCBC7E91C780ADA11516F67462340B3980CE2B94940E8"], "last_height":0, diff --git a/rpc/test/helpers.go b/rpc/tendermint/test/helpers.go similarity index 100% rename from rpc/test/helpers.go rename to rpc/tendermint/test/helpers.go diff --git a/rpc/test/tests.go b/rpc/tendermint/test/tests.go similarity index 100% rename from rpc/test/tests.go rename to rpc/tendermint/test/tests.go diff --git a/rpc/test/ws_helpers.go b/rpc/tendermint/test/ws_helpers.go similarity index 100% rename from rpc/test/ws_helpers.go rename to rpc/tendermint/test/ws_helpers.go diff --git a/core/types/codec.go b/rpc/v0/codec.go similarity index 99% rename from core/types/codec.go rename to rpc/v0/codec.go index eff1ac4b61220934e374743ec0258156a442b2f7..1fd379bea6e5e330827421c9a56813ea165d0d76 100644 --- a/core/types/codec.go +++ b/rpc/v0/codec.go @@ -14,7 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Eris-RT. If not, see <http://www.gnu.org/licenses/>. -package types +package rpc_v0 import ( "io" diff --git a/core/json_service.go b/rpc/v0/json_service.go similarity index 68% rename from core/json_service.go rename to rpc/v0/json_service.go index 9d10ff952925362d4b1818e4fae1b40db24b418d..d880790ac2e3cca83831f3565c25d9f4e8248849 100644 --- a/core/json_service.go +++ b/rpc/v0/json_service.go @@ -1,4 +1,4 @@ -package core +package rpc_v0 import ( "encoding/json" @@ -8,10 +8,11 @@ import ( log "github.com/eris-ltd/eris-logger" - core_types "github.com/eris-ltd/eris-db/core/types" - definitions "github.com/eris-ltd/eris-db/definitions" - rpc "github.com/eris-ltd/eris-db/rpc" - server "github.com/eris-ltd/eris-db/server" + definitions "github.com/eris-ltd/eris-db/definitions" + event "github.com/eris-ltd/eris-db/event" + rpc "github.com/eris-ltd/eris-db/rpc" + rpc_tendermint "github.com/eris-ltd/eris-db/rpc/tendermint" + server "github.com/eris-ltd/eris-db/server" ) // Server used to handle JSON-RPC 2.0 requests. Implements server.Server @@ -54,13 +55,13 @@ func (this *JsonRpcServer) handleFunc(c *gin.Context) { type ErisDbJsonService struct { codec rpc.Codec pipe definitions.Pipe - eventSubs *EventSubscriptions + eventSubs *event.EventSubscriptions defaultHandlers map[string]RequestHandlerFunc } // Create a new JSON-RPC 2.0 service for erisdb (tendermint). func NewErisDbJsonService(codec rpc.Codec, pipe definitions.Pipe, - eventSubs *EventSubscriptions) server.HttpService { + eventSubs *event.EventSubscriptions) server.HttpService { tmhttps := &ErisDbJsonService{codec: codec, pipe: pipe, eventSubs: eventSubs} mtds := &ErisDbMethods{codec, pipe} @@ -78,19 +79,19 @@ func NewErisDbJsonService(codec rpc.Codec, pipe definitions.Pipe, func (this *ErisDbJsonService) Process(r *http.Request, w http.ResponseWriter) { // Create new request object and unmarshal. - req := &rpc.RPCRequest{} + req := &rpc_tendermint.RPCRequest{} decoder := json.NewDecoder(r.Body) errU := decoder.Decode(req) // Error when decoding. if errU != nil { - this.writeError("Failed to parse request: "+errU.Error(), "", rpc.PARSE_ERROR, w) + this.writeError("Failed to parse request: "+errU.Error(), "", rpc_tendermint.PARSE_ERROR, w) return } // Wrong protocol version. if req.JSONRPC != "2.0" { - this.writeError("Wrong protocol version: "+req.JSONRPC, req.Id, rpc.INVALID_REQUEST, w) + this.writeError("Wrong protocol version: "+req.JSONRPC, req.Id, rpc_tendermint.INVALID_REQUEST, w) return } @@ -104,13 +105,13 @@ func (this *ErisDbJsonService) Process(r *http.Request, w http.ResponseWriter) { this.writeResponse(req.Id, resp, w) } } else { - this.writeError("Method not found: "+mName, req.Id, rpc.METHOD_NOT_FOUND, w) + this.writeError("Method not found: "+mName, req.Id, rpc_tendermint.METHOD_NOT_FOUND, w) } } // Helper for writing error responses. func (this *ErisDbJsonService) writeError(msg, id string, code int, w http.ResponseWriter) { - response := rpc.NewRPCErrorResponse(id, code, msg) + response := rpc_tendermint.NewRPCErrorResponse(id, code, msg) err := this.codec.Encode(response, w) // If there's an error here all bets are off. if err != nil { @@ -123,11 +124,11 @@ func (this *ErisDbJsonService) writeError(msg, id string, code int, w http.Respo // Helper for writing responses. func (this *ErisDbJsonService) writeResponse(id string, result interface{}, w http.ResponseWriter) { log.Debug("Result: %v\n", result) - response := rpc.NewRPCResponse(id, result) + response := rpc_tendermint.NewRPCResponse(id, result) err := this.codec.Encode(response, w) log.Debug("Response: %v\n", response) if err != nil { - this.writeError("Internal error: "+err.Error(), id, rpc.INTERNAL_ERROR, w) + this.writeError("Internal error: "+err.Error(), id, rpc_tendermint.INTERNAL_ERROR, w) return } w.WriteHeader(200) @@ -136,48 +137,48 @@ func (this *ErisDbJsonService) writeResponse(id string, result interface{}, w ht // *************************************** Events ************************************ // Subscribe to an event. -func (this *ErisDbJsonService) EventSubscribe(request *rpc.RPCRequest, requester interface{}) (interface{}, int, error) { +func (this *ErisDbJsonService) EventSubscribe(request *rpc_tendermint.RPCRequest, requester interface{}) (interface{}, int, error) { param := &EventIdParam{} err := json.Unmarshal(request.Params, param) if err != nil { - return nil, rpc.INVALID_PARAMS, err + return nil, rpc_tendermint.INVALID_PARAMS, err } eventId := param.EventId - subId, errC := this.eventSubs.add(eventId) + subId, errC := this.eventSubs.Add(eventId) if errC != nil { - return nil, rpc.INTERNAL_ERROR, errC + return nil, rpc_tendermint.INTERNAL_ERROR, errC } - return &core_types.EventSub{subId}, 0, nil + return &event.EventSub{subId}, 0, nil } // Un-subscribe from an event. -func (this *ErisDbJsonService) EventUnsubscribe(request *rpc.RPCRequest, requester interface{}) (interface{}, int, error) { +func (this *ErisDbJsonService) EventUnsubscribe(request *rpc_tendermint.RPCRequest, requester interface{}) (interface{}, int, error) { param := &SubIdParam{} err := json.Unmarshal(request.Params, param) if err != nil { - return nil, rpc.INVALID_PARAMS, err + return nil, rpc_tendermint.INVALID_PARAMS, err } subId := param.SubId result, errC := this.pipe.Events().Unsubscribe(subId) if errC != nil { - return nil, rpc.INTERNAL_ERROR, errC + return nil, rpc_tendermint.INTERNAL_ERROR, errC } - return &core_types.EventUnsub{result}, 0, nil + return &event.EventUnsub{result}, 0, nil } // Check subscription event cache for new data. -func (this *ErisDbJsonService) EventPoll(request *rpc.RPCRequest, requester interface{}) (interface{}, int, error) { +func (this *ErisDbJsonService) EventPoll(request *rpc_tendermint.RPCRequest, requester interface{}) (interface{}, int, error) { param := &SubIdParam{} err := json.Unmarshal(request.Params, param) if err != nil { - return nil, rpc.INVALID_PARAMS, err + return nil, rpc_tendermint.INVALID_PARAMS, err } subId := param.SubId - result, errC := this.eventSubs.poll(subId) + result, errC := this.eventSubs.Poll(subId) if errC != nil { - return nil, rpc.INTERNAL_ERROR, errC + return nil, rpc_tendermint.INTERNAL_ERROR, errC } - return &core_types.PollResponse{result}, 0, nil + return &event.PollResponse{result}, 0, nil } diff --git a/core/methods.go b/rpc/v0/methods.go similarity index 62% rename from core/methods.go rename to rpc/v0/methods.go index 3dcecec07bc63e3f21b1392843ac3555a9763ebb..1c4feeec6c6b3b5f946f567526e4c74dab8ce1b5 100644 --- a/core/methods.go +++ b/rpc/v0/methods.go @@ -1,14 +1,10 @@ -package core +package rpc_v0 import ( - "crypto/rand" - "encoding/hex" - "strings" - - rpc "github.com/eris-ltd/eris-db/rpc" - - core_types "github.com/eris-ltd/eris-db/core/types" - definitions "github.com/eris-ltd/eris-db/definitions" + core_types "github.com/eris-ltd/eris-db/core/types" + definitions "github.com/eris-ltd/eris-db/definitions" + rpc "github.com/eris-ltd/eris-db/rpc" + rpc_tendermint "github.com/eris-ltd/eris-db/rpc/tendermint" "github.com/eris-ltd/eris-db/txs" ) @@ -60,7 +56,7 @@ type ErisDbMethods struct { } // Used to handle requests. interface{} param is a wildcard used for example with socket events. -type RequestHandlerFunc func(*rpc.RPCRequest, interface{}) (interface{}, int, error) +type RequestHandlerFunc func(*rpc_tendermint.RPCRequest, interface{}) (interface{}, int, error) // Private. Create a method name -> method handler map. func (this *ErisDbMethods) getMethods() map[string]RequestHandlerFunc { @@ -112,387 +108,374 @@ func (this *ErisDbMethods) getMethods() map[string]RequestHandlerFunc { // *************************************** Accounts *************************************** -func (this *ErisDbMethods) GenPrivAccount(request *rpc.RPCRequest, requester interface{}) (interface{}, int, error) { +func (this *ErisDbMethods) GenPrivAccount(request *rpc_tendermint.RPCRequest, requester interface{}) (interface{}, int, error) { pac, errC := this.pipe.Accounts().GenPrivAccount() if errC != nil { - return nil, rpc.INTERNAL_ERROR, errC + return nil, rpc_tendermint.INTERNAL_ERROR, errC } return pac, 0, nil } -func (this *ErisDbMethods) GenPrivAccountFromKey(request *rpc.RPCRequest, requester interface{}) (interface{}, int, error) { +func (this *ErisDbMethods) GenPrivAccountFromKey(request *rpc_tendermint.RPCRequest, requester interface{}) (interface{}, int, error) { param := &PrivKeyParam{} err := this.codec.DecodeBytes(param, request.Params) if err != nil { - return nil, rpc.INVALID_PARAMS, err + return nil, rpc_tendermint.INVALID_PARAMS, err } privKey := param.PrivKey pac, errC := this.pipe.Accounts().GenPrivAccountFromKey(privKey) if errC != nil { - return nil, rpc.INTERNAL_ERROR, errC + return nil, rpc_tendermint.INTERNAL_ERROR, errC } return pac, 0, nil } -func (this *ErisDbMethods) Account(request *rpc.RPCRequest, requester interface{}) (interface{}, int, error) { +func (this *ErisDbMethods) Account(request *rpc_tendermint.RPCRequest, requester interface{}) (interface{}, int, error) { param := &AddressParam{} err := this.codec.DecodeBytes(param, request.Params) if err != nil { - return nil, rpc.INVALID_PARAMS, err + return nil, rpc_tendermint.INVALID_PARAMS, err } address := param.Address // TODO is address check? account, errC := this.pipe.Accounts().Account(address) if errC != nil { - return nil, rpc.INTERNAL_ERROR, errC + return nil, rpc_tendermint.INTERNAL_ERROR, errC } return account, 0, nil } -func (this *ErisDbMethods) Accounts(request *rpc.RPCRequest, requester interface{}) (interface{}, int, error) { +func (this *ErisDbMethods) Accounts(request *rpc_tendermint.RPCRequest, requester interface{}) (interface{}, int, error) { param := &AccountsParam{} err := this.codec.DecodeBytes(param, request.Params) if err != nil { - return nil, rpc.INVALID_PARAMS, err + return nil, rpc_tendermint.INVALID_PARAMS, err } list, errC := this.pipe.Accounts().Accounts(param.Filters) if errC != nil { - return nil, rpc.INTERNAL_ERROR, errC + return nil, rpc_tendermint.INTERNAL_ERROR, errC } return list, 0, nil } -func (this *ErisDbMethods) AccountStorage(request *rpc.RPCRequest, requester interface{}) (interface{}, int, error) { +func (this *ErisDbMethods) AccountStorage(request *rpc_tendermint.RPCRequest, requester interface{}) (interface{}, int, error) { param := &AddressParam{} err := this.codec.DecodeBytes(param, request.Params) if err != nil { - return nil, rpc.INVALID_PARAMS, err + return nil, rpc_tendermint.INVALID_PARAMS, err } address := param.Address storage, errC := this.pipe.Accounts().Storage(address) if errC != nil { - return nil, rpc.INTERNAL_ERROR, errC + return nil, rpc_tendermint.INTERNAL_ERROR, errC } return storage, 0, nil } -func (this *ErisDbMethods) AccountStorageAt(request *rpc.RPCRequest, requester interface{}) (interface{}, int, error) { +func (this *ErisDbMethods) AccountStorageAt(request *rpc_tendermint.RPCRequest, requester interface{}) (interface{}, int, error) { param := &StorageAtParam{} err := this.codec.DecodeBytes(param, request.Params) if err != nil { - return nil, rpc.INVALID_PARAMS, err + return nil, rpc_tendermint.INVALID_PARAMS, err } address := param.Address key := param.Key storageItem, errC := this.pipe.Accounts().StorageAt(address, key) if errC != nil { - return nil, rpc.INTERNAL_ERROR, errC + return nil, rpc_tendermint.INTERNAL_ERROR, errC } return storageItem, 0, nil } // *************************************** Blockchain ************************************ -func (this *ErisDbMethods) BlockchainInfo(request *rpc.RPCRequest, requester interface{}) (interface{}, int, error) { +func (this *ErisDbMethods) BlockchainInfo(request *rpc_tendermint.RPCRequest, requester interface{}) (interface{}, int, error) { status, errC := this.pipe.Blockchain().Info() if errC != nil { - return nil, rpc.INTERNAL_ERROR, errC + return nil, rpc_tendermint.INTERNAL_ERROR, errC } return status, 0, nil } -func (this *ErisDbMethods) ChainId(request *rpc.RPCRequest, requester interface{}) (interface{}, int, error) { +func (this *ErisDbMethods) ChainId(request *rpc_tendermint.RPCRequest, requester interface{}) (interface{}, int, error) { chainId, errC := this.pipe.Blockchain().ChainId() if errC != nil { - return nil, rpc.INTERNAL_ERROR, errC + return nil, rpc_tendermint.INTERNAL_ERROR, errC } return &core_types.ChainId{chainId}, 0, nil } -func (this *ErisDbMethods) GenesisHash(request *rpc.RPCRequest, requester interface{}) (interface{}, int, error) { +func (this *ErisDbMethods) GenesisHash(request *rpc_tendermint.RPCRequest, requester interface{}) (interface{}, int, error) { hash, errC := this.pipe.Blockchain().GenesisHash() if errC != nil { - return nil, rpc.INTERNAL_ERROR, errC + return nil, rpc_tendermint.INTERNAL_ERROR, errC } return &core_types.GenesisHash{hash}, 0, nil } -func (this *ErisDbMethods) LatestBlockHeight(request *rpc.RPCRequest, requester interface{}) (interface{}, int, error) { +func (this *ErisDbMethods) LatestBlockHeight(request *rpc_tendermint.RPCRequest, requester interface{}) (interface{}, int, error) { height, errC := this.pipe.Blockchain().LatestBlockHeight() if errC != nil { - return nil, rpc.INTERNAL_ERROR, errC + return nil, rpc_tendermint.INTERNAL_ERROR, errC } return &core_types.LatestBlockHeight{height}, 0, nil } -func (this *ErisDbMethods) LatestBlock(request *rpc.RPCRequest, requester interface{}) (interface{}, int, error) { +func (this *ErisDbMethods) LatestBlock(request *rpc_tendermint.RPCRequest, requester interface{}) (interface{}, int, error) { block, errC := this.pipe.Blockchain().LatestBlock() if errC != nil { - return nil, rpc.INTERNAL_ERROR, errC + return nil, rpc_tendermint.INTERNAL_ERROR, errC } return block, 0, nil } -func (this *ErisDbMethods) Blocks(request *rpc.RPCRequest, requester interface{}) (interface{}, int, error) { +func (this *ErisDbMethods) Blocks(request *rpc_tendermint.RPCRequest, requester interface{}) (interface{}, int, error) { param := &BlocksParam{} err := this.codec.DecodeBytes(param, request.Params) if err != nil { - return nil, rpc.INVALID_PARAMS, err + return nil, rpc_tendermint.INVALID_PARAMS, err } blocks, errC := this.pipe.Blockchain().Blocks(param.Filters) if errC != nil { - return nil, rpc.INTERNAL_ERROR, errC + return nil, rpc_tendermint.INTERNAL_ERROR, errC } return blocks, 0, nil } -func (this *ErisDbMethods) Block(request *rpc.RPCRequest, requester interface{}) (interface{}, int, error) { +func (this *ErisDbMethods) Block(request *rpc_tendermint.RPCRequest, requester interface{}) (interface{}, int, error) { param := &HeightParam{} err := this.codec.DecodeBytes(param, request.Params) if err != nil { - return nil, rpc.INVALID_PARAMS, err + return nil, rpc_tendermint.INVALID_PARAMS, err } height := param.Height block, errC := this.pipe.Blockchain().Block(height) if errC != nil { - return nil, rpc.INTERNAL_ERROR, errC + return nil, rpc_tendermint.INTERNAL_ERROR, errC } return block, 0, nil } // *************************************** Consensus ************************************ -func (this *ErisDbMethods) ConsensusState(request *rpc.RPCRequest, requester interface{}) (interface{}, int, error) { +func (this *ErisDbMethods) ConsensusState(request *rpc_tendermint.RPCRequest, requester interface{}) (interface{}, int, error) { state, errC := this.pipe.Consensus().State() if errC != nil { - return nil, rpc.INTERNAL_ERROR, errC + return nil, rpc_tendermint.INTERNAL_ERROR, errC } return state, 0, nil } -func (this *ErisDbMethods) Validators(request *rpc.RPCRequest, requester interface{}) (interface{}, int, error) { +func (this *ErisDbMethods) Validators(request *rpc_tendermint.RPCRequest, requester interface{}) (interface{}, int, error) { validators, errC := this.pipe.Consensus().Validators() if errC != nil { - return nil, rpc.INTERNAL_ERROR, errC + return nil, rpc_tendermint.INTERNAL_ERROR, errC } return validators, 0, nil } // *************************************** Net ************************************ -func (this *ErisDbMethods) NetworkInfo(request *rpc.RPCRequest, requester interface{}) (interface{}, int, error) { +func (this *ErisDbMethods) NetworkInfo(request *rpc_tendermint.RPCRequest, requester interface{}) (interface{}, int, error) { info, errC := this.pipe.Net().Info() if errC != nil { - return nil, rpc.INTERNAL_ERROR, errC + return nil, rpc_tendermint.INTERNAL_ERROR, errC } return info, 0, nil } -func (this *ErisDbMethods) ClientVersion(request *rpc.RPCRequest, requester interface{}) (interface{}, int, error) { +func (this *ErisDbMethods) ClientVersion(request *rpc_tendermint.RPCRequest, requester interface{}) (interface{}, int, error) { version, errC := this.pipe.Net().ClientVersion() if errC != nil { - return nil, rpc.INTERNAL_ERROR, errC + return nil, rpc_tendermint.INTERNAL_ERROR, errC } return &core_types.ClientVersion{version}, 0, nil } -func (this *ErisDbMethods) Moniker(request *rpc.RPCRequest, requester interface{}) (interface{}, int, error) { +func (this *ErisDbMethods) Moniker(request *rpc_tendermint.RPCRequest, requester interface{}) (interface{}, int, error) { moniker, errC := this.pipe.Net().Moniker() if errC != nil { - return nil, rpc.INTERNAL_ERROR, errC + return nil, rpc_tendermint.INTERNAL_ERROR, errC } return &core_types.Moniker{moniker}, 0, nil } -func (this *ErisDbMethods) Listening(request *rpc.RPCRequest, requester interface{}) (interface{}, int, error) { +func (this *ErisDbMethods) Listening(request *rpc_tendermint.RPCRequest, requester interface{}) (interface{}, int, error) { listening, errC := this.pipe.Net().Listening() if errC != nil { - return nil, rpc.INTERNAL_ERROR, errC + return nil, rpc_tendermint.INTERNAL_ERROR, errC } return &core_types.Listening{listening}, 0, nil } -func (this *ErisDbMethods) Listeners(request *rpc.RPCRequest, requester interface{}) (interface{}, int, error) { +func (this *ErisDbMethods) Listeners(request *rpc_tendermint.RPCRequest, requester interface{}) (interface{}, int, error) { listeners, errC := this.pipe.Net().Listeners() if errC != nil { - return nil, rpc.INTERNAL_ERROR, errC + return nil, rpc_tendermint.INTERNAL_ERROR, errC } return &core_types.Listeners{listeners}, 0, nil } -func (this *ErisDbMethods) Peers(request *rpc.RPCRequest, requester interface{}) (interface{}, int, error) { +func (this *ErisDbMethods) Peers(request *rpc_tendermint.RPCRequest, requester interface{}) (interface{}, int, error) { peers, errC := this.pipe.Net().Peers() if errC != nil { - return nil, rpc.INTERNAL_ERROR, errC + return nil, rpc_tendermint.INTERNAL_ERROR, errC } return peers, 0, nil } -func (this *ErisDbMethods) Peer(request *rpc.RPCRequest, requester interface{}) (interface{}, int, error) { +func (this *ErisDbMethods) Peer(request *rpc_tendermint.RPCRequest, requester interface{}) (interface{}, int, error) { param := &PeerParam{} err := this.codec.DecodeBytes(param, request.Params) if err != nil { - return nil, rpc.INVALID_PARAMS, err + return nil, rpc_tendermint.INVALID_PARAMS, err } address := param.Address peer, errC := this.pipe.Net().Peer(address) if errC != nil { - return nil, rpc.INTERNAL_ERROR, errC + return nil, rpc_tendermint.INTERNAL_ERROR, errC } return peer, 0, nil } // *************************************** Txs ************************************ -func (this *ErisDbMethods) Call(request *rpc.RPCRequest, requester interface{}) (interface{}, int, error) { +func (this *ErisDbMethods) Call(request *rpc_tendermint.RPCRequest, requester interface{}) (interface{}, int, error) { param := &CallParam{} err := this.codec.DecodeBytes(param, request.Params) if err != nil { - return nil, rpc.INVALID_PARAMS, err + return nil, rpc_tendermint.INVALID_PARAMS, err } from := param.From to := param.Address data := param.Data call, errC := this.pipe.Transactor().Call(from, to, data) if errC != nil { - return nil, rpc.INTERNAL_ERROR, errC + return nil, rpc_tendermint.INTERNAL_ERROR, errC } return call, 0, nil } -func (this *ErisDbMethods) CallCode(request *rpc.RPCRequest, requester interface{}) (interface{}, int, error) { +func (this *ErisDbMethods) CallCode(request *rpc_tendermint.RPCRequest, requester interface{}) (interface{}, int, error) { param := &CallCodeParam{} err := this.codec.DecodeBytes(param, request.Params) if err != nil { - return nil, rpc.INVALID_PARAMS, err + return nil, rpc_tendermint.INVALID_PARAMS, err } from := param.From code := param.Code data := param.Data call, errC := this.pipe.Transactor().CallCode(from, code, data) if errC != nil { - return nil, rpc.INTERNAL_ERROR, errC + return nil, rpc_tendermint.INTERNAL_ERROR, errC } return call, 0, nil } -func (this *ErisDbMethods) BroadcastTx(request *rpc.RPCRequest, requester interface{}) (interface{}, int, error) { +func (this *ErisDbMethods) BroadcastTx(request *rpc_tendermint.RPCRequest, requester interface{}) (interface{}, int, error) { param := &txs.CallTx{} err := this.codec.DecodeBytes(param, request.Params) if err != nil { - return nil, rpc.INVALID_PARAMS, err + return nil, rpc_tendermint.INVALID_PARAMS, err } receipt, errC := this.pipe.Transactor().BroadcastTx(param) if errC != nil { - return nil, rpc.INTERNAL_ERROR, errC + return nil, rpc_tendermint.INTERNAL_ERROR, errC } return receipt, 0, nil } -func (this *ErisDbMethods) Transact(request *rpc.RPCRequest, requester interface{}) (interface{}, int, error) { +func (this *ErisDbMethods) Transact(request *rpc_tendermint.RPCRequest, requester interface{}) (interface{}, int, error) { param := &TransactParam{} err := this.codec.DecodeBytes(param, request.Params) if err != nil { - return nil, rpc.INVALID_PARAMS, err + return nil, rpc_tendermint.INVALID_PARAMS, err } receipt, errC := this.pipe.Transactor().Transact(param.PrivKey, param.Address, param.Data, param.GasLimit, param.Fee) if errC != nil { - return nil, rpc.INTERNAL_ERROR, errC + return nil, rpc_tendermint.INTERNAL_ERROR, errC } return receipt, 0, nil } -func (this *ErisDbMethods) TransactAndHold(request *rpc.RPCRequest, requester interface{}) (interface{}, int, error) { +func (this *ErisDbMethods) TransactAndHold(request *rpc_tendermint.RPCRequest, requester interface{}) (interface{}, int, error) { param := &TransactParam{} err := this.codec.DecodeBytes(param, request.Params) if err != nil { - return nil, rpc.INVALID_PARAMS, err + return nil, rpc_tendermint.INVALID_PARAMS, err } ce, errC := this.pipe.Transactor().TransactAndHold(param.PrivKey, param.Address, param.Data, param.GasLimit, param.Fee) if errC != nil { - return nil, rpc.INTERNAL_ERROR, errC + return nil, rpc_tendermint.INTERNAL_ERROR, errC } return ce, 0, nil } -func (this *ErisDbMethods) TransactNameReg(request *rpc.RPCRequest, requester interface{}) (interface{}, int, error) { +func (this *ErisDbMethods) TransactNameReg(request *rpc_tendermint.RPCRequest, requester interface{}) (interface{}, int, error) { param := &TransactNameRegParam{} err := this.codec.DecodeBytes(param, request.Params) if err != nil { - return nil, rpc.INVALID_PARAMS, err + return nil, rpc_tendermint.INVALID_PARAMS, err } receipt, errC := this.pipe.Transactor().TransactNameReg(param.PrivKey, param.Name, param.Data, param.Amount, param.Fee) if errC != nil { - return nil, rpc.INTERNAL_ERROR, errC + return nil, rpc_tendermint.INTERNAL_ERROR, errC } return receipt, 0, nil } -func (this *ErisDbMethods) UnconfirmedTxs(request *rpc.RPCRequest, requester interface{}) (interface{}, int, error) { +func (this *ErisDbMethods) UnconfirmedTxs(request *rpc_tendermint.RPCRequest, requester interface{}) (interface{}, int, error) { txs, errC := this.pipe.Transactor().UnconfirmedTxs() if errC != nil { - return nil, rpc.INTERNAL_ERROR, errC + return nil, rpc_tendermint.INTERNAL_ERROR, errC } return txs, 0, nil } -func (this *ErisDbMethods) SignTx(request *rpc.RPCRequest, requester interface{}) (interface{}, int, error) { +func (this *ErisDbMethods) SignTx(request *rpc_tendermint.RPCRequest, requester interface{}) (interface{}, int, error) { param := &SignTxParam{} err := this.codec.DecodeBytes(param, request.Params) if err != nil { - return nil, rpc.INVALID_PARAMS, err + return nil, rpc_tendermint.INVALID_PARAMS, err } tx := param.Tx pAccs := param.PrivAccounts txRet, errC := this.pipe.Transactor().SignTx(tx, pAccs) if errC != nil { - return nil, rpc.INTERNAL_ERROR, errC + return nil, rpc_tendermint.INTERNAL_ERROR, errC } return txRet, 0, nil } // *************************************** Name Registry *************************************** -func (this *ErisDbMethods) NameRegEntry(request *rpc.RPCRequest, requester interface{}) (interface{}, int, error) { +func (this *ErisDbMethods) NameRegEntry(request *rpc_tendermint.RPCRequest, requester interface{}) (interface{}, int, error) { param := &NameRegEntryParam{} err := this.codec.DecodeBytes(param, request.Params) if err != nil { - return nil, rpc.INVALID_PARAMS, err + return nil, rpc_tendermint.INVALID_PARAMS, err } name := param.Name // TODO is address check? entry, errC := this.pipe.NameReg().Entry(name) if errC != nil { - return nil, rpc.INTERNAL_ERROR, errC + return nil, rpc_tendermint.INTERNAL_ERROR, errC } return entry, 0, nil } -func (this *ErisDbMethods) NameRegEntries(request *rpc.RPCRequest, requester interface{}) (interface{}, int, error) { +func (this *ErisDbMethods) NameRegEntries(request *rpc_tendermint.RPCRequest, requester interface{}) (interface{}, int, error) { param := &FilterListParam{} err := this.codec.DecodeBytes(param, request.Params) if err != nil { - return nil, rpc.INVALID_PARAMS, err + return nil, rpc_tendermint.INVALID_PARAMS, err } list, errC := this.pipe.NameReg().Entries(param.Filters) if errC != nil { - return nil, rpc.INTERNAL_ERROR, errC + return nil, rpc_tendermint.INTERNAL_ERROR, errC } return list, 0, nil } - -// ************************************************************************************** - -func generateSubId() (string, error) { - b := make([]byte, 32) - _, err := rand.Read(b) - if err != nil { - return "", err - } - rStr := hex.EncodeToString(b) - return strings.ToUpper(rStr), nil - -} diff --git a/core/params.go b/rpc/v0/params.go similarity index 90% rename from core/params.go rename to rpc/v0/params.go index 1549eaf94e6c01f203222b21f430b63325ded463..08b93079bcad641660c889afc6543ad7d890e9f1 100644 --- a/core/params.go +++ b/rpc/v0/params.go @@ -1,8 +1,8 @@ -package core +package rpc_v0 import ( "github.com/eris-ltd/eris-db/account" - core_types "github.com/eris-ltd/eris-db/core/types" + event "github.com/eris-ltd/eris-db/event" "github.com/eris-ltd/eris-db/txs" ) @@ -17,12 +17,12 @@ type ( // Used to send an address // TODO deprecate in favor of 'FilterListParam' AccountsParam struct { - Filters []*core_types.FilterData `json:"filters"` + Filters []*event.FilterData `json:"filters"` } // Used to send an address FilterListParam struct { - Filters []*core_types.FilterData `json:"filters"` + Filters []*event.FilterData `json:"filters"` } PrivKeyParam struct { @@ -43,7 +43,7 @@ type ( // Get a series of blocks // TODO deprecate in favor of 'FilterListParam' BlocksParam struct { - Filters []*core_types.FilterData `json:"filters"` + Filters []*event.FilterData `json:"filters"` } // Event Id diff --git a/core/restServer.go b/rpc/v0/restServer.go similarity index 92% rename from core/restServer.go rename to rpc/v0/restServer.go index 2875317c056978687cf95eefbd11c5ecb53663e0..41655fd4d865f2a1652ba21daf2a2cc27dd61155 100644 --- a/core/restServer.go +++ b/rpc/v0/restServer.go @@ -1,4 +1,4 @@ -package core +package rpc_v0 import ( "encoding/hex" @@ -10,6 +10,7 @@ import ( core_types "github.com/eris-ltd/eris-db/core/types" definitions "github.com/eris-ltd/eris-db/definitions" + event "github.com/eris-ltd/eris-db/event" rpc "github.com/eris-ltd/eris-db/rpc" server "github.com/eris-ltd/eris-db/server" "github.com/eris-ltd/eris-db/txs" @@ -22,12 +23,13 @@ import ( type RestServer struct { codec rpc.Codec pipe definitions.Pipe - eventSubs *EventSubscriptions + eventSubs *event.EventSubscriptions running bool } // Create a new rest server. -func NewRestServer(codec rpc.Codec, pipe definitions.Pipe, eventSubs *EventSubscriptions) *RestServer { +func NewRestServer(codec rpc.Codec, pipe definitions.Pipe, + eventSubs *event.EventSubscriptions) *RestServer { return &RestServer{codec: codec, pipe: pipe, eventSubs: eventSubs} } @@ -108,10 +110,10 @@ func (this *RestServer) handleGenPrivAcc(c *gin.Context) { } func (this *RestServer) handleAccounts(c *gin.Context) { - var filters []*core_types.FilterData + var filters []*event.FilterData fs, exists := c.Get("filters") if exists { - filters = fs.([]*core_types.FilterData) + filters = fs.([]*event.FilterData) } accs, err := this.pipe.Accounts().Accounts(filters) if err != nil { @@ -200,10 +202,10 @@ func (this *RestServer) handleLatestBlock(c *gin.Context) { } func (this *RestServer) handleBlocks(c *gin.Context) { - var filters []*core_types.FilterData + var filters []*event.FilterData fs, exists := c.Get("filters") if exists { - filters = fs.([]*core_types.FilterData) + filters = fs.([]*event.FilterData) } blocks, err := this.pipe.Blockchain().Blocks(filters) @@ -252,41 +254,41 @@ func (this *RestServer) handleEventSubscribe(c *gin.Context) { if errD != nil { c.AbortWithError(500, errD) } - subId, err := this.eventSubs.add(param.EventId) + subId, err := this.eventSubs.Add(param.EventId) if err != nil { c.AbortWithError(500, err) } c.Writer.WriteHeader(200) - this.codec.Encode(&core_types.EventSub{subId}, c.Writer) + this.codec.Encode(&event.EventSub{subId}, c.Writer) } func (this *RestServer) handleEventPoll(c *gin.Context) { subId := c.MustGet("id").(string) - data, err := this.eventSubs.poll(subId) + data, err := this.eventSubs.Poll(subId) if err != nil { c.AbortWithError(500, err) } c.Writer.WriteHeader(200) - this.codec.Encode(&core_types.PollResponse{data}, c.Writer) + this.codec.Encode(&event.PollResponse{data}, c.Writer) } func (this *RestServer) handleEventUnsubscribe(c *gin.Context) { subId := c.MustGet("id").(string) - err := this.eventSubs.remove(subId) + err := this.eventSubs.Remove(subId) if err != nil { c.AbortWithError(500, err) } c.Writer.WriteHeader(200) - this.codec.Encode(&core_types.EventUnsub{true}, c.Writer) + this.codec.Encode(&event.EventUnsub{true}, c.Writer) } // ********************************* NameReg ********************************* func (this *RestServer) handleNameRegEntries(c *gin.Context) { - var filters []*core_types.FilterData + var filters []*event.FilterData fs, exists := c.Get("filters") if exists { - filters = fs.([]*core_types.FilterData) + filters = fs.([]*event.FilterData) } entries, err := this.pipe.NameReg().Entries(filters) if err != nil { @@ -564,12 +566,12 @@ func parseSearchQuery(c *gin.Context) { } } -func _parseSearchQuery(queryString string) ([]*core_types.FilterData, error) { +func _parseSearchQuery(queryString string) ([]*event.FilterData, error) { if len(queryString) == 0 { return nil, nil } filters := strings.Split(queryString, " ") - fdArr := []*core_types.FilterData{} + fdArr := []*event.FilterData{} for _, f := range filters { kv := strings.Split(f, ":") if len(kv) != 2 { @@ -592,10 +594,10 @@ func _parseSearchQuery(queryString string) ([]*core_types.FilterData, error) { } // Parse the query statement and create . Two filter data in case of a range param. -func toFilterData(field, stmt string) (*core_types.FilterData, *core_types.FilterData, error) { +func toFilterData(field, stmt string) (*event.FilterData, *event.FilterData, error) { // In case statement is empty if stmt == "" { - return &core_types.FilterData{field, "==", ""}, nil, nil + return &event.FilterData{field, "==", ""}, nil, nil } // Simple routine based on string splitting. TODO add quoted range query. if stmt[0] == '>' || stmt[0] == '<' || stmt[0] == '=' || stmt[0] == '!' { @@ -603,18 +605,18 @@ func toFilterData(field, stmt string) (*core_types.FilterData, *core_types.Filte // peek at next and check if it's a "=". if len(stmt) == 1 { - return &core_types.FilterData{field, stmt[0:1], ""}, nil, nil + return &event.FilterData{field, stmt[0:1], ""}, nil, nil } else if stmt[1] == '=' { - return &core_types.FilterData{field, stmt[:2], stmt[2:]}, nil, nil + return &event.FilterData{field, stmt[:2], stmt[2:]}, nil, nil } else { - return &core_types.FilterData{field, stmt[0:1], stmt[1:]}, nil, nil + return &event.FilterData{field, stmt[0:1], stmt[1:]}, nil, nil } } else { // Either we have a range query here or a malformed query. rng := strings.Split(stmt, "..") // This is for when there is no op, but the value is not empty. if len(rng) == 1 { - return &core_types.FilterData{field, "==", stmt}, nil, nil + return &event.FilterData{field, "==", stmt}, nil, nil } // The rest. if len(rng) != 2 || rng[0] == "" || rng[1] == "" { @@ -632,7 +634,7 @@ func toFilterData(field, stmt string) (*core_types.FilterData, *core_types.Filte } else { max = rng[1] } - return &core_types.FilterData{field, ">=", min}, &core_types.FilterData{field, "<=", max}, nil + return &event.FilterData{field, ">=", min}, &event.FilterData{field, "<=", max}, nil } return nil, nil, nil } diff --git a/core/wsService.go b/rpc/v0/wsService.go similarity index 62% rename from core/wsService.go rename to rpc/v0/wsService.go index 0937a04cc5e06bc38b38b6333be9c2e374845c82..98438280f605efe03099c4990a9bd52e13931ca2 100644 --- a/core/wsService.go +++ b/rpc/v0/wsService.go @@ -1,4 +1,4 @@ -package core +package rpc_v0 import ( "encoding/json" @@ -8,10 +8,11 @@ import ( log "github.com/eris-ltd/eris-logger" - core_types "github.com/eris-ltd/eris-db/core/types" - definitions "github.com/eris-ltd/eris-db/definitions" - rpc "github.com/eris-ltd/eris-db/rpc" - server "github.com/eris-ltd/eris-db/server" + definitions "github.com/eris-ltd/eris-db/definitions" + event "github.com/eris-ltd/eris-db/event" + rpc "github.com/eris-ltd/eris-db/rpc" + rpc_tendermint "github.com/eris-ltd/eris-db/rpc/tendermint" + server "github.com/eris-ltd/eris-db/server" ) // Used for ErisDb. Implements WebSocketService. @@ -39,18 +40,18 @@ func NewErisDbWsService(codec rpc.Codec, func (this *ErisDbWsService) Process(msg []byte, session *server.WSSession) { log.Debug("REQUEST: %s\n", string(msg)) // Create new request object and unmarshal. - req := &rpc.RPCRequest{} + req := &rpc_tendermint.RPCRequest{} errU := json.Unmarshal(msg, req) // Error when unmarshaling. if errU != nil { - this.writeError("Failed to parse request: "+errU.Error()+" . Raw: "+string(msg), "", rpc.PARSE_ERROR, session) + this.writeError("Failed to parse request: "+errU.Error()+" . Raw: "+string(msg), "", rpc_tendermint.PARSE_ERROR, session) return } // Wrong protocol version. if req.JSONRPC != "2.0" { - this.writeError("Wrong protocol version: "+req.JSONRPC, req.Id, rpc.INVALID_REQUEST, session) + this.writeError("Wrong protocol version: "+req.JSONRPC, req.Id, rpc_tendermint.INVALID_REQUEST, session) return } @@ -64,13 +65,13 @@ func (this *ErisDbWsService) Process(msg []byte, session *server.WSSession) { this.writeResponse(req.Id, resp, session) } } else { - this.writeError("Method not found: "+mName, req.Id, rpc.METHOD_NOT_FOUND, session) + this.writeError("Method not found: "+mName, req.Id, rpc_tendermint.METHOD_NOT_FOUND, session) } } // Convenience method for writing error responses. func (this *ErisDbWsService) writeError(msg, id string, code int, session *server.WSSession) { - response := rpc.NewRPCErrorResponse(id, code, msg) + response := rpc_tendermint.NewRPCErrorResponse(id, code, msg) bts, err := this.codec.EncodeBytes(response) // If there's an error here all bets are off. if err != nil { @@ -81,11 +82,11 @@ func (this *ErisDbWsService) writeError(msg, id string, code int, session *serve // Convenience method for writing responses. func (this *ErisDbWsService) writeResponse(id string, result interface{}, session *server.WSSession) error { - response := rpc.NewRPCResponse(id, result) + response := rpc_tendermint.NewRPCResponse(id, result) bts, err := this.codec.EncodeBytes(response) log.Debug("RESPONSE: %v\n", response) if err != nil { - this.writeError("Internal error: "+err.Error(), id, rpc.INTERNAL_ERROR, session) + this.writeError("Internal error: "+err.Error(), id, rpc_tendermint.INTERNAL_ERROR, session) return err } return session.Write(bts) @@ -93,20 +94,20 @@ func (this *ErisDbWsService) writeResponse(id string, result interface{}, sessio // *************************************** Events ************************************ -func (this *ErisDbWsService) EventSubscribe(request *rpc.RPCRequest, requester interface{}) (interface{}, int, error) { +func (this *ErisDbWsService) EventSubscribe(request *rpc_tendermint.RPCRequest, requester interface{}) (interface{}, int, error) { session, ok := requester.(*server.WSSession) if !ok { - return 0, rpc.INTERNAL_ERROR, fmt.Errorf("Passing wrong object to websocket events") + return 0, rpc_tendermint.INTERNAL_ERROR, fmt.Errorf("Passing wrong object to websocket events") } param := &EventIdParam{} err := this.codec.DecodeBytes(param, request.Params) if err != nil { - return nil, rpc.INVALID_PARAMS, err + return nil, rpc_tendermint.INVALID_PARAMS, err } eventId := param.EventId - subId, errSID := generateSubId() + subId, errSID := event.GenerateSubId() if errSID != nil { - return nil, rpc.INTERNAL_ERROR, errSID + return nil, rpc_tendermint.INTERNAL_ERROR, errSID } callback := func(ret events.EventData) { @@ -114,26 +115,26 @@ func (this *ErisDbWsService) EventSubscribe(request *rpc.RPCRequest, requester i } _, errC := this.pipe.Events().Subscribe(subId, eventId, callback) if errC != nil { - return nil, rpc.INTERNAL_ERROR, errC + return nil, rpc_tendermint.INTERNAL_ERROR, errC } - return &core_types.EventSub{subId}, 0, nil + return &event.EventSub{subId}, 0, nil } -func (this *ErisDbWsService) EventUnsubscribe(request *rpc.RPCRequest, requester interface{}) (interface{}, int, error) { +func (this *ErisDbWsService) EventUnsubscribe(request *rpc_tendermint.RPCRequest, requester interface{}) (interface{}, int, error) { param := &EventIdParam{} err := this.codec.DecodeBytes(param, request.Params) if err != nil { - return nil, rpc.INVALID_PARAMS, err + return nil, rpc_tendermint.INVALID_PARAMS, err } eventId := param.EventId result, errC := this.pipe.Events().Unsubscribe(eventId) if errC != nil { - return nil, rpc.INTERNAL_ERROR, errC + return nil, rpc_tendermint.INTERNAL_ERROR, errC } - return &core_types.EventUnsub{result}, 0, nil + return &event.EventUnsub{result}, 0, nil } -func (this *ErisDbWsService) EventPoll(request *rpc.RPCRequest, requester interface{}) (interface{}, int, error) { - return nil, rpc.INTERNAL_ERROR, fmt.Errorf("Cannot poll with websockets") +func (this *ErisDbWsService) EventPoll(request *rpc_tendermint.RPCRequest, requester interface{}) (interface{}, int, error) { + return nil, rpc_tendermint.INTERNAL_ERROR, fmt.Errorf("Cannot poll with websockets") } diff --git a/test/filters/filter_test.go b/test/filters/filter_test.go index e1b0edbbed47866c4f87aaff238ec7a9407dd787..98404ca9ad4f6e233090bfdb60d2a5d2e68666ee 100644 --- a/test/filters/filter_test.go +++ b/test/filters/filter_test.go @@ -6,6 +6,7 @@ import ( "testing" . "github.com/eris-ltd/eris-db/manager/eris-mint" + event "github.com/eris-ltd/eris-db/event" "github.com/stretchr/testify/suite" ) @@ -77,8 +78,8 @@ func (this *StringFilter) Match(v interface{}) bool { // Test suite type FilterSuite struct { suite.Suite - objects []FilterableObject - filterFactory *FilterFactory + objects []event.FilterableObject + filterFactory *event.FilterFactory } func (this *FilterSuite) SetupSuite() { diff --git a/test/mock/pipe.go b/test/mock/pipe.go index b8e7e580aa65a30da299fd856adfa8cf33389f74..21e946fc7e835a2bfb0519c02e829d3db1d33c85 100644 --- a/test/mock/pipe.go +++ b/test/mock/pipe.go @@ -2,7 +2,9 @@ package mock import ( "github.com/eris-ltd/eris-db/account" - core_types "github.com/eris-ltd/eris-db/core/types" + core_types "github.com/eris-ltd/eris-db/core/types" + definitions "github.com/eris-ltd/eris-db/definitions" + event "github.com/eris-ltd/eris-db/event" td "github.com/eris-ltd/eris-db/test/testdata/testdata" types "github.com/eris-ltd/eris-db/txs" @@ -12,17 +14,17 @@ import ( // Base struct. type MockPipe struct { testData *td.TestData - accounts core_types.Accounts - blockchain core_types.Blockchain - consensus core_types.Consensus - events core_types.EventEmitter - namereg core_types.NameReg - net core_types.Net - transactor core_types.Transactor + accounts definitions.Accounts + blockchain definitions.Blockchain + consensus definitions.Consensus + events event.EventEmitter + namereg definitions.NameReg + net definitions.Net + transactor definitions.Transactor } // Create a new mock tendermint pipe. -func NewMockPipe(td *td.TestData) core_types.Pipe { +func NewMockPipe(td *td.TestData) definitions.Pipe { accounts := &accounts{td} blockchain := &blockchain{td} consensus := &consensus{td} @@ -43,23 +45,23 @@ func NewMockPipe(td *td.TestData) core_types.Pipe { } // Create a mock pipe with default mock data. -func NewDefaultMockPipe() core_types.Pipe { +func NewDefaultMockPipe() definitions.Pipe { return NewMockPipe(td.LoadTestData()) } -func (this *MockPipe) Accounts() core_types.Accounts { +func (this *MockPipe) Accounts() definitions.Accounts { return this.accounts } -func (this *MockPipe) Blockchain() core_types.Blockchain { +func (this *MockPipe) Blockchain() definitions.Blockchain { return this.blockchain } -func (this *MockPipe) Consensus() core_types.Consensus { +func (this *MockPipe) Consensus() definitions.Consensus { return this.consensus } -func (this *MockPipe) Events() core_types.EventEmitter { +func (this *MockPipe) Events() event.EventEmitter { return this.events } @@ -90,7 +92,7 @@ func (this *accounts) GenPrivAccountFromKey(key []byte) (*account.PrivAccount, e return this.testData.GenPrivAccount.Output, nil } -func (this *accounts) Accounts([]*core_types.FilterData) (*core_types.AccountList, error) { +func (this *accounts) Accounts([]*event.FilterData) (*core_types.AccountList, error) { return this.testData.GetAccounts.Output, nil } @@ -131,7 +133,7 @@ func (this *blockchain) LatestBlock() (*mintTypes.Block, error) { return this.testData.GetLatestBlock.Output, nil } -func (this *blockchain) Blocks([]*core_types.FilterData) (*core_types.Blocks, error) { +func (this *blockchain) Blocks([]*event.FilterData) (*core_types.Blocks, error) { return this.testData.GetBlocks.Output, nil } @@ -174,7 +176,7 @@ func (this *namereg) Entry(key string) (*types.NameRegEntry, error) { return this.testData.GetNameRegEntry.Output, nil } -func (this *namereg) Entries(filters []*core_types.FilterData) (*core_types.ResultListNames, error) { +func (this *namereg) Entries(filters []*event.FilterData) (*core_types.ResultListNames, error) { return this.testData.GetNameRegEntries.Output, nil } diff --git a/test/testdata/filters/testdata_filters.go b/test/testdata/filters/testdata_filters.go index d65859861643d4992f7658d2d4ea64465e5873e1..fefc112eb2dc53dd94108d9e8db4cedeaca996e3 100644 --- a/test/testdata/filters/testdata_filters.go +++ b/test/testdata/filters/testdata_filters.go @@ -276,7 +276,7 @@ type ( } GetAccountData struct { - Input []*core_types.FilterData `json:"input"` + Input []*event.FilterData `json:"input"` Output *core_types.AccountList `json:"output"` } diff --git a/test/testdata/testdata/testdata.go b/test/testdata/testdata/testdata.go index 6abff9f784c63d82c632e6d6b814d0c9f5edd05e..29e906130850c2096e3cdc06341d7dab99661b30 100644 --- a/test/testdata/testdata/testdata.go +++ b/test/testdata/testdata/testdata.go @@ -626,12 +626,12 @@ type ( EventSubscribeData struct { Input *core.EventIdParam `json:"input"` - Output *core_types.EventSub `json:"output"` + Output *event.EventSub `json:"output"` } EventUnsubscribeData struct { Input *core.SubIdParam `json:"input"` - Output *core_types.EventUnsub `json:"output"` + Output *event.EventUnsub `json:"output"` } TransactNameRegData struct { @@ -652,7 +652,7 @@ type ( /* EventPollData struct { Input *core.SubIdParam `json:"input"` - Output *core_types.PollResponse `json:"output"` + Output *event.PollResponse `json:"output"` } */