diff --git a/cron.go b/cron.go index 4315fd3..2a30b5a 100644 --- a/cron.go +++ b/cron.go @@ -4,7 +4,7 @@ import "git.fsdpf.net/go/req" type CronService interface { Start() error - Stop() error + Shutdown() error Restart() error } diff --git a/gobridge.go b/gobridge.go new file mode 100644 index 0000000..ea75307 --- /dev/null +++ b/gobridge.go @@ -0,0 +1,22 @@ +package contracts + +type GoBridgeService interface { + Start() error + Shutdown() error + Restart() error +} + +// GoBridge 继承 Controller,可通过 gobridge.WithHandlers 绑定到 Pool, +// 所有公开方法自动暴露给 Python 通过 call_go() 调用。 +type GoBridge interface { + _gobridge_handler() + Controller +} + +// GoBridgeBase 嵌入到用户 struct 以实现 GoBridge 接口 +type GoBridgeBase struct { + Controller +} + +// _gobridge_handler 签名函数 +func (bb *GoBridgeBase) _gobridge_handler() {} diff --git a/http.go b/http.go index ec74610..d227541 100644 --- a/http.go +++ b/http.go @@ -1,6 +1,7 @@ package contracts import ( + "io" "net/http" "git.fsdpf.net/go/req" @@ -11,32 +12,57 @@ var defaultWsClientGroup WsClientGroup = "__DEFAULT__" var wsClientID WsClientID = 0 type Http interface { + // Start 启动 HTTP 服务。 Start() error - Stop() error + + // Shutdown 停止 HTTP 服务,等待当前请求处理完成后退出。 + Shutdown() error + + // Restart 重启 HTTP 服务,先停止再重新加载路由并启动。 Restart() error + + // Invoke 在进程内直接调用 HTTP 路由处理器,不通过网络。 + // + // 参数: + // - method: HTTP 方法,如 "GET"、"POST" 等。 + // - path: 请求路径,如 "/api/user/list"。 + // - body: 请求体,无请求体时传 nil。 + // - headers: 附加请求头键值对,无需额外请求头时传 nil。 + // + // 返回: + // - *http.Response: 包含状态码、响应头及响应体的结果。 + // - error: 构造请求失败时返回错误。 + Invoke(method, path string, body io.Reader, header http.Header) (*http.Response, error) } type HttpController interface { Controller - // 获取用户信息 + // User 返回当前请求的认证用户信息。 User() req.User - // 获取请求信息 + // Request 返回当前 HTTP 请求对象。 Request() *http.Request - // 请求处理 + // Execute 处理请求并返回响应数据。 Execute(req.GlobalParams) any - // 路由信息 + // Route 返回当前请求匹配到的路由信息。 Route() req.Route - // 内部调用 + // Call 在进程内以路由 code 发起内部调用,等同于向自身发送 HTTP 请求。 + // + // 参数: + // - code: 路由标识码。 + // - params: 附加请求参数。 + // - category: 可选的路由匹配选项。 + // + // 返回: + // - req.HttpResponse: 内部调用的响应结果。 + // - error: 调用失败时返回错误。 Call(code string, params map[string]any, category ...req.RouteMatchOption) (req.HttpResponse, error) - // 内部调用 - // Invoke() - // 数据库权限 + // AuthDB 返回当前控制器的数据库权限模式。 AuthDB() req.ResAuthDB } diff --git a/job.go b/job.go index 0443c02..27c77e8 100644 --- a/job.go +++ b/job.go @@ -4,7 +4,7 @@ import "git.fsdpf.net/go/req" type JobService interface { Start() error - Stop() error + Shutdown() error Restart() error Dispatch(job string, payload any, u req.User) error } diff --git a/mqtt.go b/mqtt.go index 876f75e..28b2ac1 100644 --- a/mqtt.go +++ b/mqtt.go @@ -7,7 +7,7 @@ import ( type MqttService interface { Start() error - Stop() error + Shutdown() error Restart() error // 消息推送 @@ -33,9 +33,9 @@ type MqttService interface { type Mqtt interface { Controller // 链接 - // OnConnect(g GlobalParams, topic string) error + OnConnect(g req.GlobalParams) error // 断开链接 - // OnDisconnect(g GlobalParams, topic string) error + OnDisconnect(g req.GlobalParams) error // 订阅事件 OnSubscribed(g req.GlobalParams, topic string) error // 取消订阅事件 @@ -60,6 +60,14 @@ type MqttHandle struct { Controller } +func (this *MqttHandle) OnConnect(g req.GlobalParams) error { + return ErrFuncNotImplemented +} + +func (this *MqttHandle) OnDisconnect(g req.GlobalParams) error { + return ErrFuncNotImplemented +} + func (this *MqttHandle) OnSubscribed(g req.GlobalParams, topic string) error { return ErrFuncNotImplemented } diff --git a/res_event.go b/res_event.go index 7366e6d..906707f 100644 --- a/res_event.go +++ b/res_event.go @@ -8,7 +8,7 @@ import ( type ResEventService interface { Start() error - Stop() error + Shutdown() error Restart() error }