basemodule

package
v1.2.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 24, 2021 License: Apache-2.0 Imports: 7 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type App

type App interface {
	Run(mods ...Module) error
	SetMapRoute(fn func(app App, route string) string) error
	Configure(settings conf.Config) error
	OnInit(settings conf.Config) error
	OnDestroy() error
	Options() Options
	Transport() *nats.Conn
	Registry() registry.Registry
	GetServerByID(id string) (ServerSession, error)
	GetServersByType(name string) ([]ServerSession, error)
	GetRandomServerByType(name string) (ServerSession, error)
	GetServiceList() ([]ServerSession, error)

	GetSettings() conf.Config //獲取配置信息
	RpcInvoke(module RPCModule, moduleID string, rpcInvokeResult *mqrpc.ResultInvokeST, ctxList ...context.Context) (interface{}, string)
	RpcInvokeNR(module RPCModule, moduleID string, rpcInvokeResult *mqrpc.ResultInvokeST) error

	AddRPCSerialize(name string, Interface RPCSerialize) error

	GetRPCSerialize() map[string]RPCSerialize

	GetModuleInit() func(app App, module Module)

	OnConfigLoaded(func(app App)) error
	OnModuleInit(func(app App, module Module)) error
	OnStartup(func(app App)) error

	SetProtocolMarshal(protocolMarshal func(Result interface{}, Error interface{}) (ProtocolMarshal, string)) error
	ProtocolMarshal(Result interface{}, Error interface{}) (ProtocolMarshal, string) // 與客戶端通信的協議包接口
	NewProtocolMarshal(data []byte) ProtocolMarshal
}

type ClientRPChandler

type ClientRPChandler func(app App, server registry.Service, rpcinfo rpcPB.RPCInfo, result interface{}, err string, exec_time int64)

type Module

type Module interface {
	Version() string                             //模塊版本
	GetType() string                             //模塊類型
	OnAppConfigurationLoaded(app App)            //當App初始化時調用,這個接口不管這個模塊是否在這個進程運行都會調用
	OnConfChanged(settings *conf.ModuleSettings) //為以後動態服務發現做準備
	OnInit(app App, settings *conf.ModuleSettings)
	OnDestroy()
	GetApp() App
	Run(closeSig chan bool)
}

type Option

type Option func(*Options)

func Configure

func Configure(v string) Option

func ExitSignal

func ExitSignal(ok chan bool) Option

func LogLevel

func LogLevel(v int) Option

func LogMode

func LogMode(v int) Option

func Nats

func Nats(nc *CommonNats.Conn) Option

func RegisterInterval

func RegisterInterval(t time.Duration) Option

func Registry

func Registry(r registry.Registry) Option

Registry sets the registry for the service and the underlying components

func RoutineCount

func RoutineCount(num int) Option

func SetClientRPChandler

func SetClientRPChandler(t ClientRPChandler) Option

RegisterInterval specifies the interval on which to re-register

func SetServerRPCHandler

func SetServerRPCHandler(t ServerRPCHandler) Option

func Version

func Version(v string) Option

type Options

type Options struct {
	Nats             *CommonNats.Conn
	Version          string
	ConfPath         string
	LogMode          int
	LogLevel         int
	BIDir            string
	Registry         registry.Registry
	ClientRPChandler ClientRPChandler
	ServerRPCHandler ServerRPCHandler
	RoutineCount     int
	// Register loop interval
	RegisterInterval time.Duration
	ExitSignal       chan bool
}

type ProtocolMarshal

type ProtocolMarshal interface {
	GetData() []byte
}

type RPCModule

type RPCModule interface {
	Module
	GetServerID() string //模塊類型
	RpcInvoke(moduleType string, rpcInvokeResult *mqrpc.ResultInvokeST, ctxList ...context.Context) (interface{}, string)
	RpcInvokeNR(moduleType string, rpcInvokeResult *mqrpc.ResultInvokeST) error
	GetModuleSettings() (settings *conf.ModuleSettings)
	GetStatistical() (statistical string, err error)
	GetExecuting() int64
	CheckHeartbeat(typeName string)
}

type RPCSerialize

type RPCSerialize interface {
	/**
	序列化 結構體-->[]byte
	param 需要序列化的參數值
	@return ptype 當能夠序列化這個值,並且正確解析為[]byte時 返回改值正確的類型,否則返回 ""即可
	@return p 解析成功得到的數據, 如果無法解析該類型,或者解析失敗 返回nil即可
	@return err 無法解析該類型,或者解析失敗 返回錯誤信息
	*/
	Serialize(param interface{}) (ptype string, p []byte, err error)

	/**
	反序列化 []byte-->結構體
	ptype 參數類型 與Serialize函數中ptype 對應
	b   參數的字節流
	@return param 解析成功得到的數據結構
	@return err 無法解析該類型,或者解析失敗 返回錯誤信息
	*/
	Deserialize(ptype string, b []byte) (param interface{}, err error)

	/**
	返回這個接口能夠處理的所有類型
	*/
	GetTypes() []string
}

* rpc 自定義參數序列化接口

type ServerRPCHandler

type ServerRPCHandler func(app App, module Module, callInfo mqrpc.CallInfo)

type ServerSession

type ServerSession interface {
	GetID() string
	GetName() string
	GetRpc() mqrpc.RPCClient
	GetApp() App
	GetService() *registry.Service
	SetService(s *registry.Service)
	Call(ctx context.Context, rpcInvokeResult *mqrpc.ResultInvokeST) (interface{}, string)
	CallNR(rpcInvokeResult *mqrpc.ResultInvokeST) (err error)
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL