Documentation ¶
Overview ¶
package core GOLAXY分布式服务开发框架内核,基于Actor编程模型(Actor Model),使用EC组件框架(Entity-Component)组织代码结构,可以像积木一样快速搭建服务器应用。
- 使用EC组件框架(Entity-Component)组织代码结构。
- 并发模式基于Actor编程模型,实体(Entity)就是Actor,其中组件(Component)用于实现状态(state)与行为(behavior),运行时(Runtime)中的任务处理流水线就是邮箱(mailbox), 实体的Id就是邮箱地址(mailbox address),服务上下文(Service context)提供的全局实体管理功能,可以用于投递邮件(mail)给Actor。不同于传统Actor编程模型的地方是 多个Actor可以使用同个邮箱,也就是多个实体可以加入同个运行时,在同个线程中运行。
- 一些分布式系统常用的依赖项,例如Service Registry、Message Queue、Sync Locker、Gate等,将以插件(plugin)形式提供,导入"kit.golaxy.org/plugins"包即可使用。 同时也可以参考教程和代码,自己编写插件。
- 框架对长连接、有状态、无状态和分布式特性支持比较完备,适合开发一些对实时性要求较高的APP服务器,例如游戏服务器、远程控制系统服务器。也可以接DHT网络,开发一些分布式应用,例如分布式文件存储、分布式聊天系统等等。
Index ¶
- Variables
- func Async(ctxProvider service.ContextProvider, ...) runtime.AsyncRet
- func AsyncVoid(ctxProvider service.ContextProvider, ...) runtime.AsyncRet
- func GetRuntimeComposite[T any](runtime Runtime) T
- func GetServiceComposite[T any](service Service) T
- func Go(ctx context.Context, fun generic.FuncVar1[context.Context, any, runtime.Ret], ...) runtime.AsyncRet
- func GoVoid(ctx context.Context, fun generic.ActionVar1[context.Context, any], va ...any) runtime.AsyncRet
- func ReadChan[T any](ctx context.Context, ch <-chan T) runtime.AsyncRet
- func TimeAfter(ctx context.Context, dur time.Duration) runtime.AsyncRet
- func TimeAt(ctx context.Context, at time.Time) runtime.AsyncRet
- func TimeTick(ctx context.Context, dur time.Duration) runtime.AsyncRet
- func UnsafeRuntime(runtime Runtime) _UnsafeRuntimedeprecated
- func UnsafeService(service Service) _UnsafeServicedeprecated
- type AwaitDirector
- type CustomGC
- type EntityCreator
- type EntityCreatorOptions
- type LifecycleComponentAwake
- type LifecycleComponentDispose
- type LifecycleComponentLateUpdate
- type LifecycleComponentShut
- type LifecycleComponentStart
- type LifecycleComponentUpdate
- type LifecycleEntityAwake
- type LifecycleEntityDispose
- type LifecycleEntityLateUpdate
- type LifecycleEntityShut
- type LifecycleEntityStart
- type LifecycleEntityUpdate
- type LifecycleRuntimePluginInit
- type LifecycleRuntimePluginShut
- type LifecycleServicePluginInit
- type LifecycleServicePluginShut
- type Option
- type Running
- type Runtime
- type RuntimeBehavior
- func (rt *RuntimeBehavior) GetConcurrentContext() iface.Cache
- func (rt *RuntimeBehavior) GetContext() iface.Cache
- func (rt *RuntimeBehavior) GetCurrentContext() iface.Cache
- func (rt *RuntimeBehavior) OnComponentDestroySelf(comp ec.Component)
- func (rt *RuntimeBehavior) OnEntityDestroySelf(entity ec.Entity)
- func (rt *RuntimeBehavior) OnEntityMgrAddEntity(entityMgr runtime.EntityMgr, entity ec.Entity)
- func (rt *RuntimeBehavior) OnEntityMgrEntityAddComponents(entityMgr runtime.EntityMgr, entity ec.Entity, components []ec.Component)
- func (rt *RuntimeBehavior) OnEntityMgrEntityFirstAccessComponent(entityMgr runtime.EntityMgr, entity ec.Entity, component ec.Component)
- func (rt *RuntimeBehavior) OnEntityMgrEntityRemoveComponent(entityMgr runtime.EntityMgr, entity ec.Entity, component ec.Component)
- func (rt *RuntimeBehavior) OnEntityMgrRemoveEntity(entityMgr runtime.EntityMgr, entity ec.Entity)
- func (rt *RuntimeBehavior) PushCall(fun generic.FuncVar0[any, runtime.Ret], va ...any) runtime.AsyncRet
- func (rt *RuntimeBehavior) PushCallDelegate(fun generic.DelegateFuncVar0[any, runtime.Ret], va ...any) runtime.AsyncRet
- func (rt *RuntimeBehavior) PushCallVoid(fun generic.ActionVar0[any], va ...any) runtime.AsyncRet
- func (rt *RuntimeBehavior) PushCallVoidDelegate(fun generic.DelegateActionVar0[any], va ...any) runtime.AsyncRet
- func (rt *RuntimeBehavior) Run() <-chan struct{}
- func (rt *RuntimeBehavior) Terminate()
- type RuntimeOptions
- type Service
- type ServiceBehavior
- type ServiceOptions
Constants ¶
This section is empty.
Variables ¶
var ( ErrGolaxy = exception.ErrGolaxy // GOLAXY框架错误 ErrPanicked = exception.ErrPanicked // panic错误 ErrArgs = exception.ErrArgs // 参数错误 ErrRuntime = fmt.Errorf("%w: runtime", ErrGolaxy) // 运行时错误 ErrService = fmt.Errorf("%w: service", ErrGolaxy) // 服务错误 )
var ( ErrProcessQueueClosed = fmt.Errorf("%w: process queue is closed", ErrRuntime) // 任务处理流水线关闭 ErrProcessQueueFull = fmt.Errorf("%w: process queue is full", ErrRuntime) // 任务处理流水线已满 )
var (
ErrAllFailures = fmt.Errorf("%w: all of async result failures", ErrGolaxy)
)
Functions ¶
func Async ¶
func Async(ctxProvider service.ContextProvider, fun generic.FuncVar1[runtime.Context, any, runtime.Ret], va ...any) runtime.AsyncRet
Async 异步执行代码,有返回值
func AsyncVoid ¶
func AsyncVoid(ctxProvider service.ContextProvider, fun generic.ActionVar1[runtime.Context, any], va ...any) runtime.AsyncRet
AsyncVoid 异步执行代码,无返回值
func GetRuntimeComposite ¶
GetRuntimeComposite 获取运行时的扩展者
func GetServiceComposite ¶
GetServiceComposite 获取服务的扩展者
func Go ¶
func Go(ctx context.Context, fun generic.FuncVar1[context.Context, any, runtime.Ret], va ...any) runtime.AsyncRet
Go 使用新线程执行代码,有返回值
func GoVoid ¶
func GoVoid(ctx context.Context, fun generic.ActionVar1[context.Context, any], va ...any) runtime.AsyncRet
GoVoid 使用新线程执行代码,无返回值
func UnsafeRuntime
deprecated
func UnsafeRuntime(runtime Runtime) _UnsafeRuntime
Deprecated: UnsafeRuntime 访问运行时内部方法
func UnsafeService
deprecated
func UnsafeService(service Service) _UnsafeService
Deprecated: UnsafeService 访问服务内部方法
Types ¶
type AwaitDirector ¶
type AwaitDirector struct {
// contains filtered or unexported fields
}
AwaitDirector 异步等待分发器
func Await ¶
func Await(ctx context.Context, asyncRet ...runtime.AsyncRet) AwaitDirector
Await 异步等待结果返回
func (AwaitDirector) All ¶
func (ad AwaitDirector) All(ctxProvider service.ContextProvider, fun generic.ActionVar2[runtime.Context, []runtime.Ret, any], va ...any)
All 异步等待所有结果返回
func (AwaitDirector) Any ¶
func (ad AwaitDirector) Any(ctxProvider service.ContextProvider, fun generic.ActionVar2[runtime.Context, runtime.Ret, any], va ...any)
Any 异步等待任意一个结果返回
func (AwaitDirector) AnyOK ¶
func (ad AwaitDirector) AnyOK(ctxProvider service.ContextProvider, fun generic.ActionVar2[runtime.Context, runtime.Ret, any], va ...any)
AnyOK 异步等待任意一个结果成功返回
func (AwaitDirector) Pipe ¶
func (ad AwaitDirector) Pipe(ctxProvider service.ContextProvider, fun generic.ActionVar2[runtime.Context, runtime.Ret, any], va ...any)
Pipe 异步等待管道返回
type CustomGC ¶
type CustomGC = generic.DelegateAction1[Runtime] // 自定义GC函数
type EntityCreator ¶
type EntityCreator struct { Context runtime.Context // 运行时上下文 Options EntityCreatorOptions // 实体构建器的所有选项 }
EntityCreator 实体构建器
func CreateEntity ¶
func CreateEntity(ctxProvider runtime.CurrentContextProvider, settings ...option.Setting[EntityCreatorOptions]) EntityCreator
CreateEntity 创建实体
func (EntityCreator) Spawn ¶
func (creator EntityCreator) Spawn(settings ...option.Setting[EntityCreatorOptions]) (ec.Entity, error)
Spawn 创建实体
type EntityCreatorOptions ¶
type EntityCreatorOptions struct { pt.ConstructEntityOptions ParentID uid.Id // 父实体Id }
EntityCreatorOptions 实体构建器的所有选项
type LifecycleComponentAwake ¶
type LifecycleComponentAwake interface {
Awake()
}
LifecycleComponentAwake 组件的生命周期进入唤醒(awake)时的回调,组件实现此接口即可使用
type LifecycleComponentDispose ¶
type LifecycleComponentDispose interface {
Dispose()
}
LifecycleComponentDispose 组件的生命周期进入死亡(death)时的回调,组件实现此接口即可使用
type LifecycleComponentLateUpdate ¶
type LifecycleComponentLateUpdate = eventLateUpdate
LifecycleComponentLateUpdate 如果开启运行时的帧更新特性,那么组件状态为活跃(living)时,将会收到这个帧迟滞更新(late update)回调,组件实现此接口即可使用
type LifecycleComponentShut ¶
type LifecycleComponentShut interface {
Shut()
}
LifecycleComponentShut 组件的生命周期进入结束(shut)时的回调,组件实现此接口即可使用
type LifecycleComponentStart ¶
type LifecycleComponentStart interface {
Start()
}
LifecycleComponentStart 组件的生命周期进入开始(start)时的回调,组件实现此接口即可使用
type LifecycleComponentUpdate ¶
type LifecycleComponentUpdate = eventUpdate
LifecycleComponentUpdate 如果开启运行时的帧更新特性,那么组件状态为活跃(living)时,将会收到这个帧更新(update)回调,组件实现此接口即可使用
type LifecycleEntityAwake ¶
type LifecycleEntityAwake interface {
Awake()
}
LifecycleEntityAwake 实体的生命周期进入唤醒(awake)时的回调,实体实现此接口即可使用
type LifecycleEntityDispose ¶
type LifecycleEntityDispose interface {
Dispose()
}
LifecycleEntityDispose 实体的生命周期进入死亡(death)时的回调,实体实现此接口即可使用
type LifecycleEntityLateUpdate ¶
type LifecycleEntityLateUpdate = eventLateUpdate
LifecycleEntityLateUpdate 如果开启运行时的帧更新特性,那么实体状态为活跃(living)时,将会收到这个帧迟滞更新(late update)回调,实体实现此接口即可使用
type LifecycleEntityShut ¶
type LifecycleEntityShut interface {
Shut()
}
LifecycleEntityShut 实体的生命周期进入结束(shut)时的回调,实体实现此接口即可使用
type LifecycleEntityStart ¶
type LifecycleEntityStart interface {
Start()
}
LifecycleEntityStart 实体的生命周期进入开始(start)时的回调,实体实现此接口即可使用
type LifecycleEntityUpdate ¶
type LifecycleEntityUpdate = eventUpdate
LifecycleEntityUpdate 如果开启运行时的帧更新特性,那么实体状态为活跃(living)时,将会收到这个帧更新(update)回调,实体实现此接口即可使用
type LifecycleRuntimePluginInit ¶
LifecycleRuntimePluginInit 运行时上的插件初始化回调,插件实现此接口即可使用
type LifecycleRuntimePluginShut ¶
LifecycleRuntimePluginShut 运行时上的插件结束回调,插件实现此接口即可使用
type LifecycleServicePluginInit ¶
LifecycleServicePluginInit 服务上的插件初始化回调,插件实现此接口即可使用
type LifecycleServicePluginShut ¶
LifecycleServicePluginShut 服务上的插件结束回调,插件实现此接口即可使用
type Option ¶
type Option struct { EntityCreator _EntityCreatorOption // 实体构建器的选项 Runtime _RuntimeOption // 运行时的选项 Service _ServiceOption // 服务的选项 }
Option 所有选项设置器
type Running ¶
type Running interface { // Run 运行,返回的channel用于线程同步,可以阻塞等待至运行结束 Run() <-chan struct{} // Terminate 停止 Terminate() }
Running 运行接口
type Runtime ¶
type Runtime interface { concurrent.CurrentContextProvider concurrent.ConcurrentContextProvider concurrent.Callee Running // contains filtered or unexported methods }
Runtime 运行时接口
func NewRuntime ¶
NewRuntime 创建运行时
func UnsafeNewRuntime
deprecated
func UnsafeNewRuntime(ctx runtime.Context, options RuntimeOptions) Runtime
Deprecated: UnsafeNewRuntime 内部创建运行时
type RuntimeBehavior ¶
type RuntimeBehavior struct {
// contains filtered or unexported fields
}
RuntimeBehavior 运行时行为,在需要扩展运行时能力时,匿名嵌入至运行时结构体中
func (*RuntimeBehavior) GetConcurrentContext ¶
func (rt *RuntimeBehavior) GetConcurrentContext() iface.Cache
GetConcurrentContext 获取多线程安全的上下文
func (*RuntimeBehavior) GetContext ¶
func (rt *RuntimeBehavior) GetContext() iface.Cache
GetContext 获取上下文
func (*RuntimeBehavior) GetCurrentContext ¶
func (rt *RuntimeBehavior) GetCurrentContext() iface.Cache
GetCurrentContext 获取当前上下文
func (*RuntimeBehavior) OnComponentDestroySelf ¶
func (rt *RuntimeBehavior) OnComponentDestroySelf(comp ec.Component)
OnComponentDestroySelf 事件处理器:组件销毁自身
func (*RuntimeBehavior) OnEntityDestroySelf ¶
func (rt *RuntimeBehavior) OnEntityDestroySelf(entity ec.Entity)
OnEntityDestroySelf 事件处理器:实体销毁自身
func (*RuntimeBehavior) OnEntityMgrAddEntity ¶
func (rt *RuntimeBehavior) OnEntityMgrAddEntity(entityMgr runtime.EntityMgr, entity ec.Entity)
OnEntityMgrAddEntity 事件处理器:实体管理器添加实体
func (*RuntimeBehavior) OnEntityMgrEntityAddComponents ¶
func (rt *RuntimeBehavior) OnEntityMgrEntityAddComponents(entityMgr runtime.EntityMgr, entity ec.Entity, components []ec.Component)
OnEntityMgrEntityAddComponents 事件处理器:实体管理器中的实体添加组件
func (*RuntimeBehavior) OnEntityMgrEntityFirstAccessComponent ¶
func (rt *RuntimeBehavior) OnEntityMgrEntityFirstAccessComponent(entityMgr runtime.EntityMgr, entity ec.Entity, component ec.Component)
OnEntityMgrEntityFirstAccessComponent 事件处理器:实体管理器中的实体首次访问组件
func (*RuntimeBehavior) OnEntityMgrEntityRemoveComponent ¶
func (rt *RuntimeBehavior) OnEntityMgrEntityRemoveComponent(entityMgr runtime.EntityMgr, entity ec.Entity, component ec.Component)
OnEntityMgrEntityRemoveComponent 事件处理器:实体管理器中的实体删除组件
func (*RuntimeBehavior) OnEntityMgrRemoveEntity ¶
func (rt *RuntimeBehavior) OnEntityMgrRemoveEntity(entityMgr runtime.EntityMgr, entity ec.Entity)
OnEntityMgrRemoveEntity 事件处理器:实体管理器删除实体
func (*RuntimeBehavior) PushCall ¶
func (rt *RuntimeBehavior) PushCall(fun generic.FuncVar0[any, runtime.Ret], va ...any) runtime.AsyncRet
PushCall 将调用函数压入接受者的任务处理流水线,返回AsyncRet。
func (*RuntimeBehavior) PushCallDelegate ¶
func (rt *RuntimeBehavior) PushCallDelegate(fun generic.DelegateFuncVar0[any, runtime.Ret], va ...any) runtime.AsyncRet
PushCallDelegate 将调用函数压入接受者的任务处理流水线,返回AsyncRet。
func (*RuntimeBehavior) PushCallVoid ¶
func (rt *RuntimeBehavior) PushCallVoid(fun generic.ActionVar0[any], va ...any) runtime.AsyncRet
PushCallVoid 将调用函数压入接受者的任务处理流水线,返回AsyncRet。
func (*RuntimeBehavior) PushCallVoidDelegate ¶
func (rt *RuntimeBehavior) PushCallVoidDelegate(fun generic.DelegateActionVar0[any], va ...any) runtime.AsyncRet
PushCallVoidDelegate 将调用函数压入接受者的任务处理流水线,返回AsyncRet。
func (*RuntimeBehavior) Run ¶
func (rt *RuntimeBehavior) Run() <-chan struct{}
Run 运行,返回的channel用于线程同步,可以阻塞等待至运行结束
type RuntimeOptions ¶
type RuntimeOptions struct { CompositeFace iface.Face[Runtime] // 扩展者,需要扩展运行时自身功能时需要使用 AutoRun bool // 是否开启自动运行 ProcessQueueCapacity int // 任务处理流水线大小 Frame runtime.Frame // 帧,设置为nil表示不使用帧更新特性 GCInterval time.Duration // GC间隔时长 CustomGC CustomGC // 自定义GC }
RuntimeOptions 创建运行时的所有选项
type Service ¶
type Service interface { Running // GetContext 获取服务上下文 GetContext() service.Context // contains filtered or unexported methods }
Service 服务
func NewService ¶
NewService 创建服务
func UnsafeNewService
deprecated
func UnsafeNewService(ctx service.Context, options ServiceOptions) Service
Deprecated: UnsafeNewService 内部创建服务
type ServiceBehavior ¶
type ServiceBehavior struct {
// contains filtered or unexported fields
}
func (*ServiceBehavior) GetContext ¶
func (serv *ServiceBehavior) GetContext() service.Context
GetContext 获取服务上下文
func (*ServiceBehavior) Run ¶
func (serv *ServiceBehavior) Run() <-chan struct{}
Run 运行,返回的channel用于线程同步,可以阻塞等待至运行结束
type ServiceOptions ¶
ServiceOptions 创建服务的所有选项
Source Files ¶
- async.go
- await.go
- doc.go
- entitycreator.go
- entitycreator_options.go
- errors.go
- lifecycle_component.go
- lifecycle_entity.go
- lifecycle_plugin.go
- options.go
- running.go
- runtime.go
- runtime_callee.go
- runtime_conversions.go
- runtime_event.go
- runtime_event_code.go
- runtime_gc.go
- runtime_looping_blinkframe.go
- runtime_looping_frame.go
- runtime_looping_noframe.go
- runtime_options.go
- runtime_running.go
- runtime_task.go
- service.go
- service_conversions.go
- service_options.go
- service_running.go
- unsafe_runtime.go
- unsafe_service.go
Directories ¶
Path | Synopsis |
---|---|
Package define 利用泛型特性,简化代码编写。
|
Package define 利用泛型特性,简化代码编写。 |
Package ec 提供了一个EC(Entity-Component)组件框架,用于帮助开发者组织代码架构。
|
Package ec 提供了一个EC(Entity-Component)组件框架,用于帮助开发者组织代码架构。 |
Package event 高效的本地事件系统,适用于单线程环境,需要使用go:generate功能来生成代码。
|
Package event 高效的本地事件系统,适用于单线程环境,需要使用go:generate功能来生成代码。 |
eventcode
Package eventcode 使用go:generate功能,在编译前自动化生成代码
|
Package eventcode 使用go:generate功能,在编译前自动化生成代码 |
internal
|
|
Package plugin 插件,用于开发一些需要使用单例模式设计的功能,例如服务发现、消息队列与日志系统等。
|
Package plugin 插件,用于开发一些需要使用单例模式设计的功能,例如服务发现、消息队列与日志系统等。 |
Package pt 实体与组件原型,用于创建实例。
|
Package pt 实体与组件原型,用于创建实例。 |
Package runtime 运行时环境提供的一些接口与函数。
|
Package runtime 运行时环境提供的一些接口与函数。 |
Package service 运行时环境提供的一些接口与函数。
|
Package service 运行时环境提供的一些接口与函数。 |
Package util 一些工具类与函数。
|
Package util 一些工具类与函数。 |
container
Package container 实现了一种特殊的链表,可以在遍历时在任意位置添加或删除元素,递归添加或删除元素时仍然能正常工作,但是需要GC支持,主要用于ec包内部。
|
Package container 实现了一种特殊的链表,可以在遍历时在任意位置添加或删除元素,递归添加或删除元素时仍然能正常工作,但是需要GC支持,主要用于ec包内部。 |