2023-03-03 17:08:06 +08:00
|
|
|
//----------------------------------------
|
|
|
|
//
|
|
|
|
// Copyright © yanghy. All Rights Reserved.
|
|
|
|
//
|
|
|
|
// Licensed under Apache License Version 2.0, January 2004
|
|
|
|
//
|
|
|
|
// https://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
//
|
|
|
|
//----------------------------------------
|
|
|
|
|
2023-05-31 17:41:14 +08:00
|
|
|
// IPC
|
2023-03-13 11:29:51 +08:00
|
|
|
//
|
2023-05-31 17:41:14 +08:00
|
|
|
// event listeners
|
|
|
|
// event triggered
|
|
|
|
|
2023-03-03 17:08:06 +08:00
|
|
|
package ipc
|
|
|
|
|
2023-03-03 21:53:18 +08:00
|
|
|
import (
|
2023-05-31 18:00:34 +08:00
|
|
|
"github.com/energye/energy/v2/cef/internal/ipc"
|
|
|
|
"github.com/energye/energy/v2/cef/ipc/target"
|
|
|
|
"github.com/energye/energy/v2/cef/ipc/types"
|
2023-03-03 21:53:18 +08:00
|
|
|
)
|
2023-03-03 17:08:06 +08:00
|
|
|
|
2023-12-13 18:15:34 +08:00
|
|
|
// On
|
|
|
|
//
|
|
|
|
// IPC GO 监听事件
|
|
|
|
//
|
2023-03-21 22:35:40 +08:00
|
|
|
// 参数
|
2023-12-13 18:15:34 +08:00
|
|
|
//
|
2024-04-27 22:34:30 +08:00
|
|
|
// 支持 JavaScript 对应 Go 的基本类型和复合类型
|
|
|
|
// name: 事件名称
|
|
|
|
// fn : 事件回调函数 EmitContextCallback 或 func(...) [result...] {}
|
|
|
|
// options: 监听选项, 配置监听规则, 异步或同步规则
|
2023-03-15 14:29:45 +08:00
|
|
|
//
|
2023-05-31 17:41:14 +08:00
|
|
|
// 入参
|
2023-12-13 18:15:34 +08:00
|
|
|
//
|
2024-04-27 22:34:30 +08:00
|
|
|
// 基本类型: int(int8 ~ uint64), bool, float(float32、float64), string
|
|
|
|
// 复合类型: slice, map, struct
|
|
|
|
// slice: 根据js实际类型定义, []interface{} | []interface{} | [][data type]
|
|
|
|
// map: key 只能 string 类型, value 基本类型+复合类型
|
|
|
|
// struct: 首字母大写, 字段类型匹配
|
2023-12-13 18:15:34 +08:00
|
|
|
// type ArgsStructDemo struct {
|
|
|
|
// Key1 string
|
|
|
|
// Key2 string
|
|
|
|
// Key3 string
|
|
|
|
// Key4 int
|
|
|
|
// Key5 float64
|
|
|
|
// Key6 bool
|
|
|
|
// Sub1 SubStructXXX
|
|
|
|
// Sub2 *SubStructXXX
|
|
|
|
// }
|
2023-03-11 00:02:03 +08:00
|
|
|
//
|
|
|
|
// 出参
|
2023-12-13 18:15:34 +08:00
|
|
|
//
|
|
|
|
// fn 回调函数的出参与入参使用方式相同
|
2023-12-30 23:12:20 +08:00
|
|
|
func On(name string, fn interface{}, options ...types.OnOptions) {
|
2023-05-31 17:41:14 +08:00
|
|
|
ipc.On(name, fn, options...)
|
2023-03-03 21:53:18 +08:00
|
|
|
}
|
|
|
|
|
2023-12-13 18:15:34 +08:00
|
|
|
// RemoveOn
|
2023-03-03 21:53:18 +08:00
|
|
|
// IPC GO 移除监听事件
|
|
|
|
func RemoveOn(name string) {
|
2023-05-31 17:41:14 +08:00
|
|
|
ipc.RemoveOn(name)
|
2023-03-03 21:53:18 +08:00
|
|
|
}
|
|
|
|
|
2023-12-13 18:15:34 +08:00
|
|
|
// Emit
|
|
|
|
// IPC GO 中触发 Go | JS 监听的事件, 主窗口
|
2023-03-15 14:29:45 +08:00
|
|
|
//
|
|
|
|
// 参数
|
2023-12-13 18:15:34 +08:00
|
|
|
//
|
|
|
|
// name: 监听的事件名
|
|
|
|
// []argument: 入参
|
|
|
|
// 基本类型: int(int8 ~ uint64), bool, float(float32、float64), string
|
|
|
|
// 复合类型: slice, map, struct
|
2023-12-30 23:12:20 +08:00
|
|
|
func Emit(name string, argument ...interface{}) bool {
|
2023-12-13 18:15:34 +08:00
|
|
|
return ipc.Emit(name, argument...)
|
2023-03-14 17:07:15 +08:00
|
|
|
}
|
2023-03-03 17:08:06 +08:00
|
|
|
|
2023-12-13 18:15:34 +08:00
|
|
|
// EmitAndCallback
|
|
|
|
// IPC GO 中触发 Go | JS 监听的事件, 主窗口
|
2023-03-15 14:29:45 +08:00
|
|
|
//
|
|
|
|
// 参数
|
2023-12-13 18:15:34 +08:00
|
|
|
//
|
|
|
|
// name: 监听的事件名
|
|
|
|
// []argument: 入参
|
|
|
|
// 基本类型: int(int8 ~ uint64), bool, float(float32、float64), string
|
|
|
|
// 复合类型: slice, map, struct
|
|
|
|
// callback: 回调函数, 接收返回值. 函数类型 EmitContextCallback 或 func(...) [result...] {}
|
2023-12-30 23:12:20 +08:00
|
|
|
func EmitAndCallback(name string, argument []interface{}, callback interface{}) bool {
|
2023-12-13 18:15:34 +08:00
|
|
|
return ipc.EmitAndCallback(name, argument, callback)
|
2023-03-03 17:08:06 +08:00
|
|
|
}
|
|
|
|
|
2023-12-13 18:15:34 +08:00
|
|
|
// EmitTarget
|
2023-05-31 17:41:14 +08:00
|
|
|
// IPC GO 中触发指定目标 Go | JS 监听的事件
|
2023-03-15 14:29:45 +08:00
|
|
|
//
|
|
|
|
// 参数
|
2023-12-13 18:15:34 +08:00
|
|
|
//
|
|
|
|
// name: 监听的事件名
|
|
|
|
// target: 接收事件的目标
|
|
|
|
// []argument: 入参
|
|
|
|
// 基本类型: int(int8 ~ uint64), bool, float(float32、float64), string
|
|
|
|
// 复合类型: slice, map, struct
|
2023-12-30 23:12:20 +08:00
|
|
|
func EmitTarget(name string, target target.ITarget, argument ...interface{}) bool {
|
2023-12-13 18:15:34 +08:00
|
|
|
return ipc.EmitTarget(name, target, argument...)
|
2023-03-14 17:07:15 +08:00
|
|
|
}
|
|
|
|
|
2023-12-13 18:15:34 +08:00
|
|
|
// EmitTargetAndCallback
|
2023-05-31 17:41:14 +08:00
|
|
|
// IPC GO 中触发指定目标 Go | JS 监听的事件
|
2023-03-15 14:29:45 +08:00
|
|
|
//
|
|
|
|
// 参数
|
2023-12-13 18:15:34 +08:00
|
|
|
//
|
|
|
|
// name: 监听的事件名
|
|
|
|
// target: 接收事件的目标
|
|
|
|
// []argument: 入参
|
|
|
|
// 基本类型: int(int8 ~ uint64), bool, float(float32、float64), string
|
|
|
|
// 复合类型: slice, map, struct
|
|
|
|
// callback: 回调函数, 接收返回值. 函数类型 EmitContextCallback 或 func(...) [result...] {}
|
2023-12-30 23:12:20 +08:00
|
|
|
func EmitTargetAndCallback(name string, target target.ITarget, argument []interface{}, callback interface{}) bool {
|
2023-12-13 18:15:34 +08:00
|
|
|
return ipc.EmitTargetAndCallback(name, target, argument, callback)
|
2023-03-03 17:08:06 +08:00
|
|
|
}
|