service

package
v0.3.67 Latest Latest
Warning

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

Go to latest
Published: Dec 21, 2024 License: LGPL-2.1 Imports: 17 Imported by: 52

Documentation

Overview

Package service 为服务环境提供的一些接口与函数。

  • 服务上下文(context)
  • 并发实体管理器(EntityManager)

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrContext       = fmt.Errorf("%w: service-context", exception.ErrCore) // 服务上下文错误
	ErrEntityManager = fmt.Errorf("%w: entity-manager", ErrContext)         // 实体管理器错误
)
View Source
var With _Option

Functions

func UnsafeContext deprecated

func UnsafeContext(ctx Context) _UnsafeContext

Deprecated: UnsafeContext 访问服务上下文内部方法

Types

type Caller

type Caller interface {
	// Call 查找实体并异步调用函数,有返回值。不会阻塞当前线程,会返回AsyncRet。
	//
	//	注意:
	//	- 代码片段中的线程安全问题,如临界区访问、线程死锁等。
	//  - 调用过程中的panic信息,均会转换为error返回。
	Call(entityId uid.Id, fun generic.FuncVar1[ec.Entity, any, async.Ret], args ...any) async.AsyncRet

	// CallDelegate 查找实体并异步调用委托,有返回值。不会阻塞当前线程,会返回AsyncRet。
	//
	//	注意:
	//	- 代码片段中的线程安全问题,如临界区访问、线程死锁等。
	//  - 调用过程中的panic信息,均会转换为error返回。
	CallDelegate(entityId uid.Id, fun generic.DelegateVar1[ec.Entity, any, async.Ret], args ...any) async.AsyncRet

	// CallVoid 查找实体并异步调用函数,无返回值。在运行时中。不会阻塞当前线程,会返回AsyncRet。
	//
	//	注意:
	//	- 代码片段中的线程安全问题,如临界区访问、线程死锁等。
	//  - 调用过程中的panic信息,均会转换为error返回。
	CallVoid(entityId uid.Id, fun generic.ActionVar1[ec.Entity, any], args ...any) async.AsyncRet

	// CallDelegateVoid 查找实体并异步调用委托,无返回值。在运行时中。不会阻塞当前线程,会返回AsyncRet。
	//
	//	注意:
	//	- 代码片段中的线程安全问题,如临界区访问、线程死锁等。
	//  - 调用过程中的panic信息,均会转换为error返回。
	CallDelegateVoid(entityId uid.Id, fun generic.DelegateVoidVar1[ec.Entity, any], args ...any) async.AsyncRet
}

Caller 异步调用发起者

type Context

type Context interface {
	ictx.Context
	reinterpret.InstanceProvider
	extension.AddInProvider
	pt.EntityPTProvider
	Caller
	fmt.Stringer

	// GetName 获取名称
	GetName() string
	// GetId 获取服务Id
	GetId() uid.Id
	// GetReflected 获取反射值
	GetReflected() reflect.Value
	// GetEntityManager 获取实体管理器
	GetEntityManager() EntityManager
	// contains filtered or unexported methods
}

Context 服务上下文

func Current

func Current(provider ictx.ConcurrentContextProvider) Context

Current 获取服务上下文

func NewContext

func NewContext(settings ...option.Setting[ContextOptions]) Context

NewContext 创建服务上下文

func UnsafeNewContext deprecated

func UnsafeNewContext(options ContextOptions) Context

Deprecated: UnsafeNewContext 内部创建服务上下文

type ContextBehavior

type ContextBehavior struct {
	ictx.ContextBehavior
	// contains filtered or unexported fields
}

ContextBehavior 服务上下文行为,在扩展服务上下文能力时,匿名嵌入至服务上下文结构体中

func (*ContextBehavior) Call

func (ctx *ContextBehavior) Call(entityId uid.Id, fun generic.FuncVar1[ec.Entity, any, async.Ret], args ...any) async.AsyncRet

Call 查找实体并异步调用函数,有返回值。不会阻塞当前线程,会返回AsyncRet。

	注意:
	- 代码片段中的线程安全问题,如临界区访问、线程死锁等。
 - 调用过程中的panic信息,均会转换为error返回。

func (*ContextBehavior) CallDelegate

func (ctx *ContextBehavior) CallDelegate(entityId uid.Id, fun generic.DelegateVar1[ec.Entity, any, async.Ret], args ...any) async.AsyncRet

CallDelegate 查找实体并异步调用委托,有返回值。不会阻塞当前线程,会返回AsyncRet。

	注意:
	- 代码片段中的线程安全问题,如临界区访问、线程死锁等。
 - 调用过程中的panic信息,均会转换为error返回。

func (*ContextBehavior) CallDelegateVoid added in v0.3.66

func (ctx *ContextBehavior) CallDelegateVoid(entityId uid.Id, fun generic.DelegateVoidVar1[ec.Entity, any], args ...any) async.AsyncRet

CallDelegateVoid 查找实体并异步调用委托,无返回值。在运行时中。不会阻塞当前线程,会返回AsyncRet。

	注意:
	- 代码片段中的线程安全问题,如临界区访问、线程死锁等。
 - 调用过程中的panic信息,均会转换为error返回。

func (*ContextBehavior) CallVoid

func (ctx *ContextBehavior) CallVoid(entityId uid.Id, fun generic.ActionVar1[ec.Entity, any], args ...any) async.AsyncRet

CallVoid 查找实体并异步调用函数,无返回值。在运行时中。不会阻塞当前线程,会返回AsyncRet。

	注意:
	- 代码片段中的线程安全问题,如临界区访问、线程死锁等。
 - 调用过程中的panic信息,均会转换为error返回。

func (*ContextBehavior) GetAddInManager added in v0.3.66

func (ctx *ContextBehavior) GetAddInManager() extension.AddInManager

GetAddInManager 获取插件管理器

func (*ContextBehavior) GetEntityLib

func (ctx *ContextBehavior) GetEntityLib() pt.EntityLib

GetEntityLib 获取实体原型库

func (*ContextBehavior) GetEntityManager added in v0.3.66

func (ctx *ContextBehavior) GetEntityManager() EntityManager

GetEntityManager 获取实体管理器

func (*ContextBehavior) GetId

func (ctx *ContextBehavior) GetId() uid.Id

GetId 获取服务Id

func (*ContextBehavior) GetInstanceFaceCache added in v0.3.34

func (ctx *ContextBehavior) GetInstanceFaceCache() iface.Cache

GetInstanceFaceCache 支持重新解释类型

func (*ContextBehavior) GetName

func (ctx *ContextBehavior) GetName() string

GetName 获取名称

func (*ContextBehavior) GetReflected added in v0.2.58

func (ctx *ContextBehavior) GetReflected() reflect.Value

GetReflected 获取反射值

func (*ContextBehavior) String

func (ctx *ContextBehavior) String() string

String implements fmt.Stringer

type ContextOptions

type ContextOptions struct {
	InstanceFace   iface.Face[Context]    // 实例,用于扩展服务上下文能力
	Context        context.Context        // 父Context
	AutoRecover    bool                   // 是否开启panic时自动恢复
	ReportError    chan error             // panic时错误写入的error channel
	Name           string                 // 服务名称
	PersistId      uid.Id                 // 服务持久化Id
	EntityLib      pt.EntityLib           // 实体原型库
	AddInManager   extension.AddInManager // 插件管理器
	RunningHandler RunningHandler         // 运行状态变化处理器
}

ContextOptions 创建服务上下文的所有选项

type EntityManager added in v0.3.66

type EntityManager interface {
	// GetContext 获取服务上下文
	GetContext() Context
	// GetEntity 查询实体
	GetEntity(id uid.Id) (ec.ConcurrentEntity, bool)
	// GetOrAddEntity 查询或添加实体
	GetOrAddEntity(entity ec.ConcurrentEntity) (ec.ConcurrentEntity, bool, error)
	// AddEntity 添加实体
	AddEntity(entity ec.ConcurrentEntity) error
	// GetAndRemoveEntity 查询并删除实体
	GetAndRemoveEntity(id uid.Id) (ec.ConcurrentEntity, bool)
	// RemoveEntity 删除实体
	RemoveEntity(id uid.Id)
}

EntityManager 实体管理器接口

type RunningHandler

type RunningHandler = generic.DelegateVoidVar2[Context, RunningState, any] // 运行状态变化处理器

type RunningState

type RunningState int32

RunningState 运行状态

const (
	RunningState_Birth             RunningState = iota // 出生
	RunningState_Starting                              // 开始启动
	RunningState_Started                               // 已启动
	RunningState_Terminating                           // 开始停止
	RunningState_Terminated                            // 已停止
	RunningState_AddInActivating                       // 开始激活插件
	RunningState_AddInActivated                        // 插件已激活
	RunningState_AddInDeactivating                     // 开始去激活插件
	RunningState_AddInDeactivated                      // 插件已去激活
)

func (RunningState) String

func (i RunningState) String() string

Jump to

Keyboard shortcuts

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