Documentation ¶
Overview ¶
Package idlrpc rpc-backend-go framework interface
Index ¶
- Constants
- type CallUuid
- type IProxy
- type IProxyHandler
- type IRpc
- type ISDK
- type IService
- type IStub
- type Option
- type Options
- type PackageInfo
- type ProxyBase
- func (base *ProxyBase) GetGlobalIndex() protocol.GlobalIndexType
- func (base *ProxyBase) GetID() ProxyId
- func (base *ProxyBase) GetRpc() IRpc
- func (base *ProxyBase) GetTargetID() uint32
- func (base *ProxyBase) GetTransport() transport.ITransport
- func (base *ProxyBase) IsConnected() bool
- func (base *ProxyBase) SetGlobalIndex(index protocol.GlobalIndexType)
- func (base *ProxyBase) SetID(id ProxyId)
- func (base *ProxyBase) SetRpc(r IRpc)
- func (base *ProxyBase) SetTargetID(id uint32)
- func (base *ProxyBase) SetTransport(trans transport.ITransport)
- type ProxyCreator
- type ProxyId
- type ProxyManager
- type ProxyMap
- type SdkCreateHandle
- type ServiceCache
- type ServiceCreator
- type ServiceStatus
- type StubCall
- type StubCreator
- type StubManager
- type SvcUuid
- type Trans2Proxy
Constants ¶
const ( RpcNotInit = iota RpcRunning RpcClosed )
const (
InvalidGlobalIndex = 0
)
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type IProxy ¶ added in v0.3.2
type IProxy interface { // GetUUID service uuid // @detail get service uuid id which generated by rpc-repo GetUUID() uint64 // GetSignature // get method human-readable name GetSignature(uint32) string // GetID //get proxy instance ID, priority delivery service instance GetID() ProxyId // SetID // set proxy instance ID SetID(ProxyId) // SetTargetID // last return service id, maybe some service box need SetTargetID(uint32) // GetTargetID // return last return service id GetTargetID() uint32 // GetGlobalIndex // return proxy global index GetGlobalIndex() protocol.GlobalIndexType // SetGlobalIndex // set proxy global index SetGlobalIndex(indexType protocol.GlobalIndexType) // IsOneWay oneway //@detail is one way function which not wait for return //@param method id IsOneWay(uint32) bool // GetSrvName //@detail get proxy name GetSrvName() string // SetTransport // @detail set transport SetTransport(transport transport.ITransport) // GetTransport // return transport GetTransport() transport.ITransport // IsConnected // check transport valid state IsConnected() bool // SetRpc set rpc instance to proxy SetRpc(IRpc) // GetRpc get rpc instance from proxy GetRpc() IRpc }
IProxy IProxy, user's idl proxy interface, using as client to call remote function; rpc framewrok set transport to it
type IProxyHandler ¶ added in v0.3.4
type IProxyHandler interface {
OnRelay(trans transport.ITransport, header *protocol.RpcMsgHeader) error
}
type IRpc ¶ added in v0.3.3
type IRpc interface { Init(...Option) error // Start start rpc framework,init data and start some goroutine Start() error //Tick main loop, called by rpc's owner in user's goroutine Tick() error //ShutDown close rpc framework close ShutDown() error //OnMessage deal network message OnMessage(trans transport.ITransport, ctx context.Context) error //OnProxyMessage trans proxy message to inside service OnProxyMessage(tran transport.ITransport, ph IProxyHandler) error //RegisterService register user impl service struct to framework RegisterService(service IService) error //Call service proxy call remote sync //Return resp unmarshalled proto buffer and exec result Call(proxyId IProxy, methodId, timeout uint32, retry int32, message proto.Message) ([]byte, error) //GetProxyFromPeer get proxy by stub call GetProxyFromPeer(ctx context.Context, uuid uint64) (IProxy, error) //GetServiceProxy get service proxy GetServiceProxy(uuid uint64, trans transport.ITransport) (IProxy, error) // AddProxyCreator add proxy creator AddProxyCreator(uuid uint64, pc ProxyCreator) error //AddStubCreator add stub creator AddStubCreator(uuid uint64, bc StubCreator) error }
func CreateRpcFramework ¶ added in v0.3.3
func CreateRpcFramework() IRpc
type IService ¶ added in v0.3.1
type IService interface { // GetUUID service uuid, generated by rpc-repo GetUUID() uint64 // GetNickName return custom service nickname ! GetNickName() string // OnAfterFork init service by framework, user can init some custom data in this function OnAfterFork(ctx context.Context) bool // OnTick tick your service the same goroutine OnTick() bool // OnBeforeDestroy before service unload, you can clean your own data in this func OnBeforeDestroy() bool }
IService user custom service framework interface
type IStub ¶ added in v0.3.2
type IStub interface { //GetUUID service uuid, generate by rpc-repo GetUUID() SvcUuid //GetServiceName service name GetServiceName() string //GetSignature method human-readable name GetSignature(methodId uint32) string //GetMutipleNum service goroutine num, read from idl keyword multiple GetMutipleNum() uint32 //IsOneWay one way function, not send response IsOneWay(methodId uint32) bool // Call will trigger service's method // return encode response buffer data and errors Call(context.Context, uint32, []byte) ([]byte, error) //OnAfterFork invoke by framework after spawned //init service data or load db data in this function OnAfterFork(ctx context.Context) bool //OnBeforeDestroy invoke by framework before uninitialized //clean service data in this function OnBeforeDestroy() bool //OnTick tick by service manager in logic tick OnTick() bool //GetStatus get service status //TODO: for hot update GetStatus() ServiceStatus //SetStatus set service status SetStatus(status ServiceStatus) }
IStub rpc stub of service's side
type Option ¶ added in v0.3.4
type Option func(*Options)
func WithLogger ¶ added in v0.3.4
func WithStackTrace ¶ added in v0.3.4
func WithUserData ¶ added in v0.3.4
func WithUserData(key, val interface{}) Option
type PackageInfo ¶ added in v0.3.4
type PackageInfo struct { ServiceUUID uint64 //service uuid Creator SdkCreateHandle //Sdk Creator handle }
PackageInfo service package information
type ProxyBase ¶ added in v0.3.2
type ProxyBase struct {
// contains filtered or unexported fields
}
ProxyBase proxy common struct impl
func (*ProxyBase) GetGlobalIndex ¶ added in v0.3.4
func (base *ProxyBase) GetGlobalIndex() protocol.GlobalIndexType
func (*ProxyBase) GetTargetID ¶ added in v0.3.2
func (*ProxyBase) GetTransport ¶ added in v0.3.2
func (base *ProxyBase) GetTransport() transport.ITransport
func (*ProxyBase) IsConnected ¶ added in v0.3.2
func (*ProxyBase) SetGlobalIndex ¶ added in v0.3.4
func (base *ProxyBase) SetGlobalIndex(index protocol.GlobalIndexType)
func (*ProxyBase) SetTargetID ¶ added in v0.3.2
func (*ProxyBase) SetTransport ¶ added in v0.3.2
func (base *ProxyBase) SetTransport(trans transport.ITransport)
SetTransport set network message transport called by creator
type ProxyCreator ¶ added in v0.3.2
type ProxyCreator func(transport.ITransport) IProxy
ProxyCreator proxy creator, one client may connect to differently service
type ProxyManager ¶ added in v0.3.2
type ProxyManager struct {
// contains filtered or unexported fields
}
ProxyManager manager connect proxy for rpc framework, multiple may be read & write TODO add tranport id 2 service uid cache
func (*ProxyManager) Add ¶ added in v0.3.2
func (p *ProxyManager) Add(proxy IProxy) error
func (*ProxyManager) Destroy ¶ added in v0.3.2
func (p *ProxyManager) Destroy(proxyId ProxyId) error
func (*ProxyManager) GeneProxyId ¶ added in v0.3.2
func (p *ProxyManager) GeneProxyId() ProxyId
type SdkCreateHandle ¶ added in v0.3.4
SdkCreateHandle rpc sdk creator, return sdk instance
type ServiceCache ¶ added in v0.3.2
type ServiceCache map[SvcUuid]*stubWrapper
ServiceCache service storage struct
type ServiceCreator ¶ added in v0.3.1
type ServiceCreator func(interface{}) IService
ServiceCreator service creator
type ServiceStatus ¶ added in v0.3.2
type ServiceStatus uint32
const ( SERVICE_RESOLVED ServiceStatus = iota + 1 //ready for servicing SERVICE_UPDATING //stop receive message, wait for update )
type StubCall ¶ added in v0.3.2
type StubCall struct {
// contains filtered or unexported fields
}
StubCall remote call data
func (*StubCall) GetServiceUUID ¶ added in v0.3.2
func (*StubCall) GlobalIndex ¶ added in v0.3.4
func (sc *StubCall) GlobalIndex() protocol.GlobalIndexType
type StubCreator ¶ added in v0.3.2
type StubCreator func(v interface{}) IStub
StubCreator stub factory
type StubManager ¶ added in v0.3.2
type StubManager struct {
// contains filtered or unexported fields
}
StubManager stub manager, manager registered service
func (*StubManager) Add ¶ added in v0.3.2
func (m *StubManager) Add(ctx context.Context, impl IStub) (err error)
func (*StubManager) GeneUuid ¶ added in v0.3.2
func (m *StubManager) GeneUuid() CallUuid
func (*StubManager) Get ¶ added in v0.3.2
func (m *StubManager) Get(uuid SvcUuid) *stubWrapper
func (*StubManager) Init ¶ added in v0.3.2
func (m *StubManager) Init(logger log.ILogger)
func (*StubManager) Tick ¶ added in v0.3.2
func (m *StubManager) Tick()
func (*StubManager) UnInit ¶ added in v0.3.4
func (m *StubManager) UnInit()