Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
energye
energy
提交
e5ea72c7
energy
项目概览
energye
/
energy
通知
13
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
energy
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
e5ea72c7
编写于
3月 21, 2023
作者:
yanghye
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
upgrade-dev v2.3.19
上级
3118b91d
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
91 addition
and
80 deletion
+91
-80
example/dev-test/ipc-event/ipc-event.go
example/dev-test/ipc-event/ipc-event.go
+2
-2
ipc/ipc-invoke.go
ipc/ipc-invoke.go
+89
-78
未找到文件。
example/dev-test/ipc-event/ipc-event.go
浏览文件 @
e5ea72c7
...
...
@@ -157,8 +157,8 @@ func main() {
// i++
// time.Sleep(time.Second / 1000)
// //ipc.Emit("onTestName1", r0, i, r2, r3, r4, r5, r6, r7, r8, r9, r10)
// ipc.EmitAndCallback("onTestName2", []
any{r0, i, r2, r3, r4, r5, r6, r7, r8, r9, r10}, func(r1 string
) {
// fmt.Println("onTestName
2 r1: ", r1
)
// ipc.EmitAndCallback("onTestName2", []
interface{}{r0, testGoEmit, r2, r3, r4, r5, r6, r7, r8, r9, r10}, func(r1 string, r2 int, r3 float64, r4 bool
) {
// fmt.Println("onTestName
1 callback", r1, r2, r3, r4
)
// })
// }
//}()
...
...
ipc/ipc-invoke.go
浏览文件 @
e5ea72c7
...
...
@@ -82,102 +82,113 @@ func (m *argumentCallback) Invoke(context IContext) {
argsList
=
context
.
ArgumentList
()
if
argsList
!=
nil
{
argsSize
=
argsList
.
Size
()
rt
:=
m
.
callback
.
Type
()
inArgsCount
:=
rt
.
NumIn
()
inArgsValues
=
make
([]
reflect
.
Value
,
inArgsCount
)
for
i
:=
0
;
i
<
inArgsCount
;
i
++
{
inType
:=
rt
.
In
(
i
)
if
i
<
argsSize
{
argsValue
:=
argsList
.
GetByIndex
(
i
)
if
argsValue
==
nil
{
}
rt
:=
m
.
callback
.
Type
()
inArgsCount
:=
rt
.
NumIn
()
inArgsValues
=
make
([]
reflect
.
Value
,
inArgsCount
)
for
i
:=
0
;
i
<
inArgsCount
;
i
++
{
inType
:=
rt
.
In
(
i
)
if
i
<
argsSize
{
argsValue
:=
argsList
.
GetByIndex
(
i
)
if
argsValue
==
nil
{
inArgsValues
[
i
]
=
reflect
.
New
(
inType
)
.
Elem
()
continue
}
switch
inType
.
Kind
()
{
case
reflect
.
String
:
inArgsValues
[
i
]
=
reflect
.
ValueOf
(
argsValue
.
String
())
case
reflect
.
Int
:
inArgsValues
[
i
]
=
reflect
.
ValueOf
(
argsValue
.
Int
())
case
reflect
.
Int8
:
inArgsValues
[
i
]
=
reflect
.
ValueOf
(
int8
(
argsValue
.
Int
()))
case
reflect
.
Int16
:
inArgsValues
[
i
]
=
reflect
.
ValueOf
(
int16
(
argsValue
.
Int
()))
case
reflect
.
Int32
:
inArgsValues
[
i
]
=
reflect
.
ValueOf
(
int32
(
argsValue
.
Int
()))
case
reflect
.
Int64
:
inArgsValues
[
i
]
=
reflect
.
ValueOf
(
int64
(
argsValue
.
Int
()))
case
reflect
.
Uint
:
inArgsValues
[
i
]
=
reflect
.
ValueOf
(
uint
(
argsValue
.
Int
()))
case
reflect
.
Uint8
:
inArgsValues
[
i
]
=
reflect
.
ValueOf
(
uint8
(
argsValue
.
Int
()))
case
reflect
.
Uint16
:
inArgsValues
[
i
]
=
reflect
.
ValueOf
(
uint16
(
argsValue
.
Int
()))
case
reflect
.
Uint32
:
inArgsValues
[
i
]
=
reflect
.
ValueOf
(
uint32
(
argsValue
.
Int
()))
case
reflect
.
Uint64
:
inArgsValues
[
i
]
=
reflect
.
ValueOf
(
uint64
(
argsValue
.
Int
()))
case
reflect
.
Uintptr
:
inArgsValues
[
i
]
=
reflect
.
ValueOf
(
uintptr
(
argsValue
.
Int
()))
case
reflect
.
Float32
:
inArgsValues
[
i
]
=
reflect
.
ValueOf
(
float32
(
argsValue
.
Float
()))
case
reflect
.
Float64
:
inArgsValues
[
i
]
=
reflect
.
ValueOf
(
argsValue
.
Float
())
case
reflect
.
Bool
:
inArgsValues
[
i
]
=
reflect
.
ValueOf
(
argsValue
.
Bool
())
case
reflect
.
Struct
:
if
argsValue
.
IsObject
()
{
// struct
if
jsonBytes
:=
argsValue
.
Bytes
();
jsonBytes
!=
nil
{
v
:=
reflect
.
New
(
inType
)
if
err
:=
jsoniter
.
Unmarshal
(
jsonBytes
,
v
.
Interface
());
err
==
nil
{
inArgsValues
[
i
]
=
v
.
Elem
()
continue
}
else
{
inArgsValues
[
i
]
=
reflect
.
New
(
inType
)
.
Elem
()
}
}
else
{
inArgsValues
[
i
]
=
reflect
.
New
(
inType
)
.
Elem
()
}
}
else
{
inArgsValues
[
i
]
=
reflect
.
New
(
inType
)
.
Elem
()
continue
}
switch
inType
.
Kind
()
{
case
reflect
.
String
:
inArgsValues
[
i
]
=
reflect
.
ValueOf
(
argsValue
.
String
())
case
reflect
.
Int
:
inArgsValues
[
i
]
=
reflect
.
ValueOf
(
argsValue
.
Int
())
case
reflect
.
Int8
:
inArgsValues
[
i
]
=
reflect
.
ValueOf
(
int8
(
argsValue
.
Int
()))
case
reflect
.
Int16
:
inArgsValues
[
i
]
=
reflect
.
ValueOf
(
int16
(
argsValue
.
Int
()))
case
reflect
.
Int32
:
inArgsValues
[
i
]
=
reflect
.
ValueOf
(
int32
(
argsValue
.
Int
()))
case
reflect
.
Int64
:
inArgsValues
[
i
]
=
reflect
.
ValueOf
(
int64
(
argsValue
.
Int
()))
case
reflect
.
Uint
:
inArgsValues
[
i
]
=
reflect
.
ValueOf
(
uint
(
argsValue
.
Int
()))
case
reflect
.
Uint8
:
inArgsValues
[
i
]
=
reflect
.
ValueOf
(
uint8
(
argsValue
.
Int
()))
case
reflect
.
Uint16
:
inArgsValues
[
i
]
=
reflect
.
ValueOf
(
uint16
(
argsValue
.
Int
()))
case
reflect
.
Uint32
:
inArgsValues
[
i
]
=
reflect
.
ValueOf
(
uint32
(
argsValue
.
Int
()))
case
reflect
.
Uint64
:
inArgsValues
[
i
]
=
reflect
.
ValueOf
(
uint64
(
argsValue
.
Int
()))
case
reflect
.
Uintptr
:
inArgsValues
[
i
]
=
reflect
.
ValueOf
(
uintptr
(
argsValue
.
Int
()))
case
reflect
.
Float32
:
inArgsValues
[
i
]
=
reflect
.
ValueOf
(
float32
(
argsValue
.
Float
()))
case
reflect
.
Float64
:
inArgsValues
[
i
]
=
reflect
.
ValueOf
(
argsValue
.
Float
())
case
reflect
.
Bool
:
inArgsValues
[
i
]
=
reflect
.
ValueOf
(
argsValue
.
Bool
())
case
reflect
.
Struct
:
if
argsValue
.
IsObject
()
{
// struct
case
reflect
.
Map
:
if
argsValue
.
IsObject
()
{
// map key=string : value != interface
if
inType
.
Elem
()
.
Kind
()
!=
reflect
.
Interface
{
if
jsonBytes
:=
argsValue
.
Bytes
();
jsonBytes
!=
nil
{
v
:=
reflect
.
New
(
inType
)
if
err
:=
jsoniter
.
Unmarshal
(
jsonBytes
,
v
.
Interface
());
err
==
nil
{
inArgsValues
[
i
]
=
v
.
Elem
()
v
v
:=
reflect
.
New
(
inType
)
if
err
:=
jsoniter
.
Unmarshal
(
jsonBytes
,
v
v
.
Interface
());
err
==
nil
{
inArgsValues
[
i
]
=
v
v
.
Elem
()
continue
}
else
{
inArgsValues
[
i
]
=
reflect
.
New
(
inType
)
.
Elem
()
}
}
}
inArgsValues
[
i
]
=
reflect
.
New
(
inType
)
.
Elem
()
case
reflect
.
Map
:
if
argsValue
.
IsObject
()
{
// map key=string : value != interface
if
inType
.
Elem
()
.
Kind
()
!=
reflect
.
Interface
{
if
jsonBytes
:=
argsValue
.
Bytes
();
jsonBytes
!=
nil
{
vv
:=
reflect
.
New
(
inType
)
if
err
:=
jsoniter
.
Unmarshal
(
jsonBytes
,
vv
.
Interface
());
err
==
nil
{
inArgsValues
[
i
]
=
vv
.
Elem
()
continue
}
}
inArgsValues
[
i
]
=
reflect
.
New
(
inType
)
.
Elem
()
}
else
{
inArgsValues
[
i
]
=
reflect
.
ValueOf
(
argsValue
.
Data
()
)
inArgsValues
[
i
]
=
reflect
.
New
(
inType
)
.
Elem
(
)
}
}
else
{
inArgsValues
[
i
]
=
reflect
.
New
(
inType
)
.
Elem
(
)
inArgsValues
[
i
]
=
reflect
.
ValueOf
(
argsValue
.
Data
()
)
}
case
reflect
.
Slice
:
if
argsValue
.
IsArray
()
{
// slick value != interface
if
inType
.
Elem
()
.
Kind
()
!=
reflect
.
Interface
{
if
jsonBytes
:=
argsValue
.
Bytes
();
jsonBytes
!=
nil
{
vv
:=
reflect
.
New
(
inType
)
if
err
:=
jsoniter
.
Unmarshal
(
jsonBytes
,
vv
.
Interface
());
err
==
nil
{
inArgsValues
[
i
]
=
vv
.
Elem
()
continue
}
}
else
{
inArgsValues
[
i
]
=
reflect
.
New
(
inType
)
.
Elem
()
}
case
reflect
.
Slice
:
if
argsValue
.
IsArray
()
{
// slick value != interface
if
inType
.
Elem
()
.
Kind
()
!=
reflect
.
Interface
{
if
jsonBytes
:=
argsValue
.
Bytes
();
jsonBytes
!=
nil
{
vv
:=
reflect
.
New
(
inType
)
if
err
:=
jsoniter
.
Unmarshal
(
jsonBytes
,
vv
.
Interface
());
err
==
nil
{
inArgsValues
[
i
]
=
vv
.
Elem
()
continue
}
else
{
inArgsValues
[
i
]
=
reflect
.
New
(
inType
)
.
Elem
()
}
inArgsValues
[
i
]
=
reflect
.
New
(
inType
)
.
Elem
()
}
else
{
inArgsValues
[
i
]
=
reflect
.
ValueOf
(
argsValue
.
Data
()
)
inArgsValues
[
i
]
=
reflect
.
New
(
inType
)
.
Elem
(
)
}
}
else
{
inArgsValues
[
i
]
=
reflect
.
New
(
inType
)
.
Elem
(
)
inArgsValues
[
i
]
=
reflect
.
ValueOf
(
argsValue
.
Data
()
)
}
default
:
}
else
{
inArgsValues
[
i
]
=
reflect
.
New
(
inType
)
.
Elem
()
}
}
else
{
default
:
inArgsValues
[
i
]
=
reflect
.
New
(
inType
)
.
Elem
()
}
}
else
{
inArgsValues
[
i
]
=
reflect
.
New
(
inType
)
.
Elem
()
}
}
// call
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录