Plugin support for SetOption, Query, and Commit

This commit is contained in:
Jae Kwon
2016-03-24 14:10:17 -07:00
parent 964a4cfd50
commit 601a654b7d
5 changed files with 124 additions and 40 deletions
+2 -2
View File
@@ -93,9 +93,9 @@ func ExecTx(state *State, tx types.Tx, isCheckTx bool, evc events.Fireable) tmsp
}
// Validate call address
plugin := state.GetPlugin(tx.Address)
plugin := state.GetPlugin(string(tx.Address))
if plugin != nil {
return tmsp.ErrBaseUnknownAddress.AppendLog(Fmt("Unrecognized address %X", tx.Address))
return tmsp.ErrBaseUnknownAddress.AppendLog(Fmt("Unrecognized address %X (%v)", tx.Address, string(tx.Address)))
}
// Good!
+18 -8
View File
@@ -8,10 +8,11 @@ import (
)
type State struct {
chainID string
eyesCli *eyes.Client
checkCache map[string]checkAccount
plugins map[string]types.Plugin
chainID string
eyesCli *eyes.Client
checkCache map[string]checkAccount
plugins map[string]types.Plugin
pluginsList []types.NamedPlugin
LastBlockHeight uint64
LastBlockHash []byte
@@ -23,6 +24,7 @@ func NewState(eyesCli *eyes.Client) *State {
chainID: "",
eyesCli: eyesCli,
checkCache: make(map[string]checkAccount),
plugins: make(map[string]types.Plugin),
}
return s
}
@@ -38,12 +40,20 @@ func (s *State) GetChainID() string {
return s.chainID
}
func (s *State) RegisterPlugin(addr []byte, plugin types.Plugin) {
s.plugins[string(addr)] = plugin
func (s *State) RegisterPlugin(name string, plugin types.Plugin) {
s.plugins[name] = plugin
s.pluginsList = append(s.pluginsList, types.NamedPlugin{
Name: name,
Plugin: plugin,
})
}
func (s *State) GetPlugin(addr []byte) types.Plugin {
return s.plugins[string(addr)]
func (s *State) GetPlugin(name string) types.Plugin {
return s.plugins[name]
}
func (s *State) GetPlugins() []types.NamedPlugin {
return s.pluginsList
}
//----------------------------------------