contract/contract_mgr.go

(完整代码) 1KB

package contract

import (
	"github.com/xuperchain/xuperunion/pluginmgr"

	"errors"
)

const (
	// ContractPluginName is the name of contract plugin
	ContractPluginName = "contract"
)

// CreateContractInstance create contract driver from plugin manager
func CreateContractInstance(subtype string, extParams map[string]interface{}) (ContractInterface, error) {
	// load contract plugin
	pluginMgr, err := pluginmgr.GetPluginMgr()
	if err != nil {
		return nil, errors.New("CreateContractInstance: get plugin mgr failed")
	}

	pluginIns, err := pluginMgr.PluginMgr.CreatePluginInstance(ContractPluginName, subtype)
	if err != nil {
		errmsg := "CreateContractInstance: create plugin failed! name=" + subtype
		return nil, errors.New(errmsg)
	}

	switch pluginIns.(type) {
	case ContractExtInterface:
		consIns := pluginIns.(ContractExtInterface)
		err := consIns.Init(extParams)
		if err != nil {
			errmsg := "CreateContractInstance: init failed! name=" + subtype
			return nil, errors.New(errmsg)
		}
	}

	conIns := pluginIns.(ContractInterface)

	return conIns, nil
}

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。