idlrpc

package
v0.5.4 Latest Latest
Warning

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

Go to latest
Published: Jun 30, 2023 License: MIT Imports: 14 Imported by: 5

Documentation

Overview

Package idlrpc rpc-backend-go framework interface

Index

Constants

View Source
const (
	RpcNotInit = iota
	RpcRunning
	RpcClosed
)
View Source
const (
	ProxyConnected = iota
	ProxyDisconnected
)
View Source
const (
	InvalidGlobalIndex = 0
)

Variables

This section is empty.

Functions

This section is empty.

Types

type CallInfo added in v0.5.4

type CallInfo struct {
	// contains filtered or unexported fields
}

CallInfo remote call data

func (*CallInfo) CallID added in v0.5.4

func (sc *CallInfo) CallID() uint32

CallID rpc remote proxyCall call id

func (*CallInfo) GetBody added in v0.5.4

func (sc *CallInfo) GetBody() []byte

func (*CallInfo) GetServiceUUID added in v0.5.4

func (sc *CallInfo) GetServiceUUID() uint64

func (*CallInfo) GetUUID added in v0.5.4

func (sc *CallInfo) GetUUID() CallUuid

GetUUID stub call uuid

func (*CallInfo) GlobalIndex added in v0.5.4

func (sc *CallInfo) GlobalIndex() protocol.GlobalIndexType

func (*CallInfo) MethodID added in v0.5.4

func (sc *CallInfo) MethodID() uint32

MethodID rpc method call id

type CallUuid added in v0.3.2

type CallUuid uint32

CallUuid stub call uuid generate by manager

type ContextIterator added in v0.5.4

type ContextIterator func(string, string)

type ContextKV added in v0.5.4

type ContextKV map[string]string

type EventCallBack added in v0.5.0

type EventCallBack func(string, []byte)

EventCallBack will be called while subscriber receive sub event

type IMessageHandler added in v0.5.3

type IMessageHandler interface {
	OnLoggedOut(index protocol.GlobalIndexType)
	OnIdentityNotify(transport transport.ITransport, identityID string, identityTag string)
}

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

	//GetIdentityID will return the identity of the underlying connection.
	GetIdentityID() string

	// SetGlobalIndex
	// set proxy global index
	SetGlobalIndex(indexType protocol.GlobalIndexType)

	//NotifyEvent will transport sub event data
	NotifyEvent(string, []byte)

	// 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.ITransport)

	//SetSubscriber set subscriber to proxy
	SetSubscriber(ISubscriber)

	//Subscribe will subscribe the event of target service
	Subscribe(string, []byte, EventCallBack) error

	//Cancel will cancel subscribe of target event
	Cancel(string) error

	// 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
	// contains filtered or unexported methods
}

IProxy user's idl proxy interface, using as client to call remote function; rpc framework set transport to it

type IProxyHandler added in v0.3.4

type IProxyHandler interface {
	OnRelay(trans transport.ITransport, header *protocol.RpcMsgHeader) error
}

type IPublisher added in v0.5.0

type IPublisher interface {
	//Publish will broadcast event to all subscriber
	Publish(string, []byte) error
	//AddSub will add subscriber to Service
	AddSub(string, string, []byte, ProxyId, transport.ITransport) error
	//CancelSub will remove subscriber by sub_id
	CancelSub(string) error
}

type IRpc added in v0.3.3

type IRpc interface {
	Init(...Option) error
	// Start rpc framework,init data and start some goroutine
	Start() error
	// Tick Calls the main loop in the user master coroutine。
	Tick() error
	// ShutDown close rpc framework close
	ShutDown() error
	// Options options get rpc options
	Options() *Options
	// OnMessage deal network message
	OnMessage(ctx IServiceContext) 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)
	//Publish will notify all subscriber with event's data
	Publish(uuid SvcUuid, serviceID int32, event string, data []byte) error
	// GetProxyFromPeer get proxy by stub call
	GetProxyFromPeer(ctx IServiceContext, uuid uint64) (IProxy, error)
	// GetServiceProxy get service proxy
	GetServiceProxy(uuid uint64, trans transport.ITransport) (IProxy, error)
	// GetExtraProxy get extra service proxy
	GetExtraProxy(uuid uint64, globalIndex protocol.GlobalIndexType, 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 ISDK added in v0.3.4

type ISDK interface {
	GetUuid() uint64
	GetNickName() string
	IsProxy() bool
	Register(IRpc) error
}

ISDK sdk interface

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 IServiceContext) bool

	// OnTick tick your service the same goroutine
	OnTick() bool

	//OnSubscribe will be triggered when a subscriber subscribes to an event
	OnSubscribe(string, string, []byte) error

	// OnCancel e triggered when a subscriber cancel
	OnCancel(string, string) error

	// OnBeforeDestroy before service unload, you can clean your own data in this func
	OnBeforeDestroy() bool
}

IService user custom service framework interface

type IServiceContext added in v0.5.4

type IServiceContext interface {
	GetTransport() transport.ITransport
	// GetGlobalIndex get external connection id
	GetGlobalIndex() protocol.GlobalIndexType
	// GetIdentityID will return the identity id of the source of the RPC call
	GetIdentityID() string
	// GetIdentityTag will return the identity tag of the source of the RPC call
	GetIdentityTag() string
	// GetProxyFromPeer Gets the proxy utility function of the peer service
	GetProxyFromPeer(uuid uint64) IProxy
	// GetProxy get the Proxy for the service
	GetProxy(uuid uint64) IProxy
	// GetProxyWithNickname get the Proxy for the service by nickname
	GetProxyWithNickname(uuid uint64, name string) IProxy
	// GetValue returns the value for the given key, ie: (value, true).
	// If the value does not exist it returns (nil, false)
	GetValue(string) (string, bool)
	// GetRequestContext will return the request context kv map
	GetRequestContext() ContextKV
	// GetResponseValue returns the value for the given key in the response context
	GetResponseValue(string) (string, bool)
	// GetResponseContext will return the response context kv map
	GetResponseContext() ContextKV
	// GetUserContext will return the user context kv map
	GetUserContext() ContextKV
	// SetContext will set the context of the RPC request
	SetContext(string, string)
	// SetUserContext Set the user context to be passed on the next RPC call. Null character will delete the Key.
	SetUserContext(string, string)
	// SetResponseContext Set the response context to be passed on the RPC response.
	SetResponseContext(string, string)
	// Info Tool function, automatically append call information, print INFO level logs
	Info(string, ...interface{})
	// Warning Tool function, automatically append call information, print WARNING level logs
	Warning(string, ...interface{})
	// Error Tool function, automatically append call information, print ERROR level logs
	Error(string, ...interface{})
	// contains filtered or unexported methods
}

IServiceContext The context information needed to communicate between services

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
	//GetMultipleNum service goroutine num, read from idl keyword multiple
	GetMultipleNum() 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(IServiceContext, uint32, []byte) ([]byte, error)
	//OnAfterFork invoke by framework after spawned
	//init service data or load db data in this function
	OnAfterFork(ctx IServiceContext) 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)
	//OnSub will notify service sub info
	OnSub(string, string, []byte) error
	//OnCancel will notify subscriber remove sub
	OnCancel(string, string) error
}

IStub rpc stub of service's side

type ISubscriber added in v0.5.0

type ISubscriber interface {
	//Subscribe will send sub request to target service
	Subscribe(uint32, string, []byte, EventCallBack) error
	//OnNotify will be called while publisher pub event
	OnNotify(string, []byte) error
	//Cancel will remove sub info from publisher
	Cancel(uint32, string) error
	//CancelAll will remove all sub info from publisher
	CancelAll(uint32) error
}

ISubscriber is the manager of sub request which been mount to proxy instance

type IUuidFactory added in v0.5.0

type IUuidFactory interface {
	//NewUuid will generate string uuid with 32 characters
	NewUuid() string
}

type Option added in v0.3.4

type Option func(*Options)

func WithCallTrace added in v0.4.16

func WithCallTrace(open bool) Option

func WithLogger added in v0.3.4

func WithLogger(logger log.ILogger) Option

func WithMessageHandler added in v0.5.3

func WithMessageHandler(handler IMessageHandler) Option

func WithServiceContext added in v0.5.4

func WithServiceContext(ctx IServiceContext) Option

func WithStackTrace added in v0.3.4

func WithStackTrace(open bool) Option

func WithUuidFactory added in v0.5.0

func WithUuidFactory(uid IUuidFactory) Option

type Options added in v0.3.4

type Options struct {
	// contains filtered or unexported fields
}

func (*Options) CallTrace added in v0.4.16

func (o *Options) CallTrace() bool

func (*Options) StackTrace added in v0.4.16

func (o *Options) StackTrace() bool

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) Cancel added in v0.5.0

func (base *ProxyBase) Cancel(event string) error

func (*ProxyBase) GetGlobalIndex added in v0.3.4

func (base *ProxyBase) GetGlobalIndex() protocol.GlobalIndexType

func (*ProxyBase) GetID added in v0.3.2

func (base *ProxyBase) GetID() ProxyId

func (*ProxyBase) GetIdentityID added in v0.5.3

func (base *ProxyBase) GetIdentityID() string

func (*ProxyBase) GetRpc added in v0.3.2

func (base *ProxyBase) GetRpc() IRpc

func (*ProxyBase) GetTargetID added in v0.3.2

func (base *ProxyBase) GetTargetID() uint32

func (*ProxyBase) GetTransport added in v0.3.2

func (base *ProxyBase) GetTransport() transport.ITransport

func (*ProxyBase) IsConnected added in v0.3.2

func (base *ProxyBase) IsConnected() bool

func (*ProxyBase) NotifyEvent added in v0.5.0

func (base *ProxyBase) NotifyEvent(subId string, data []byte)

func (*ProxyBase) SetGlobalIndex added in v0.3.4

func (base *ProxyBase) SetGlobalIndex(index protocol.GlobalIndexType)

func (*ProxyBase) SetID added in v0.3.2

func (base *ProxyBase) SetID(id ProxyId)

func (*ProxyBase) SetRpc added in v0.3.2

func (base *ProxyBase) SetRpc(r IRpc)

func (*ProxyBase) SetSubscriber added in v0.5.0

func (base *ProxyBase) SetSubscriber(s ISubscriber)

func (*ProxyBase) SetTargetID added in v0.3.2

func (base *ProxyBase) SetTargetID(id uint32)

func (*ProxyBase) SetTransport added in v0.3.2

func (base *ProxyBase) SetTransport(trans transport.ITransport)

SetTransport set network message transport called by creator

func (*ProxyBase) Subscribe added in v0.5.0

func (base *ProxyBase) Subscribe(event string, data []byte, callback EventCallBack) error

Subscribe will add a subscription event to the specified service

type ProxyCreator added in v0.3.2

type ProxyCreator func(transport.ITransport) IProxy

ProxyCreator proxy creator, one client may connect to differently service

type ProxyId added in v0.3.2

type ProxyId proxy.ProxyUuid

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 transport 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

func (*ProxyManager) Get added in v0.3.2

func (p *ProxyManager) Get(proxyId ProxyId) (IProxy, error)

type ProxyMap added in v0.3.2

type ProxyMap map[ProxyId]IProxy //key, proxyid, value proxy interface

type RpcContext added in v0.5.4

type RpcContext struct {
	// contains filtered or unexported fields
}

func (*RpcContext) GetGlobalIndex added in v0.5.4

func (c *RpcContext) GetGlobalIndex() protocol.GlobalIndexType

func (*RpcContext) GetRequestContext added in v0.5.4

func (c *RpcContext) GetRequestContext() ContextKV

func (*RpcContext) GetResponseContext added in v0.5.4

func (c *RpcContext) GetResponseContext() ContextKV

func (*RpcContext) GetResponseValue added in v0.5.4

func (c *RpcContext) GetResponseValue(key string) (string, bool)

func (*RpcContext) GetUserContext added in v0.5.4

func (c *RpcContext) GetUserContext() ContextKV

func (*RpcContext) GetValue added in v0.5.4

func (c *RpcContext) GetValue(key string) (string, bool)

func (*RpcContext) SetContext added in v0.5.4

func (c *RpcContext) SetContext(key string, value string)

func (*RpcContext) SetResponseContext added in v0.5.4

func (c *RpcContext) SetResponseContext(key string, value string)

func (*RpcContext) SetUserContext added in v0.5.4

func (c *RpcContext) SetUserContext(key string, value string)

type SdkCreateHandle added in v0.3.4

type SdkCreateHandle func(...string) (ISDK, error)

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 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 IServiceContext, impl IStub) (err error)

func (*StubManager) AddSubInfo added in v0.5.0

func (m *StubManager) AddSubInfo(subId string, sUid SvcUuid) 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) GetSubService added in v0.5.0

func (m *StubManager) GetSubService(subId string) *stubWrapper

func (*StubManager) Init added in v0.3.2

func (m *StubManager) Init(logger log.ILogger)

func (*StubManager) RemoveSubInfo added in v0.5.0

func (m *StubManager) RemoveSubInfo(subId string)

func (*StubManager) Tick added in v0.3.2

func (m *StubManager) Tick()

func (*StubManager) UnInit added in v0.3.4

func (m *StubManager) UnInit()

type SubStubMap added in v0.5.0

type SubStubMap map[string]SvcUuid

type SvcUuid added in v0.3.2

type SvcUuid uint64

SvcUuid service uuid type

type Trans2Proxy added in v0.3.2

type Trans2Proxy map[uint64]IProxy //service uuid, proxy interface

Directories

Path Synopsis
Generated by the go idl tools.
Generated by the go idl tools.
goidltool module
text 语法模板定义
text 语法模板定义
internal
pkg
log

Jump to

Keyboard shortcuts

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