Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
892858e2
D
Docs
项目概览
OpenHarmony
/
Docs
大约 2 年 前同步成功
通知
161
Star
293
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
892858e2
编写于
4月 03, 2023
作者:
O
openharmony_ci
提交者:
Gitee
4月 03, 2023
浏览文件
操作
浏览文件
下载
差异文件
!16795 idl示例代码新增map类型和array类型挑单release
Merge pull request !16795 from chenyuyan/OpenHarmony-3.2-Release
上级
9b1e1d7e
cd14c199
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
61 addition
and
3 deletion
+61
-3
zh-cn/application-dev/IDL/idl-guidelines.md
zh-cn/application-dev/IDL/idl-guidelines.md
+61
-3
未找到文件。
zh-cn/application-dev/IDL/idl-guidelines.md
浏览文件 @
892858e2
...
@@ -176,6 +176,8 @@ OpenHarmony IDL容器数据类型与Ts数据类型、C++数据类型的对应关
...
@@ -176,6 +176,8 @@ OpenHarmony IDL容器数据类型与Ts数据类型、C++数据类型的对应关
interface
OHOS
.
IIdlTestService
{
interface
OHOS
.
IIdlTestService
{
int
TestIntTransaction
([
in
]
int
data
);
int
TestIntTransaction
([
in
]
int
data
);
void
TestStringTransaction
([
in
]
String
data
);
void
TestStringTransaction
([
in
]
String
data
);
void
TestMapTransaction
([
in
]
Map
<
int
,
int
>
data
);
int
TestArrayTransaction
([
in
]
String
[]
data
);
}
}
```
```
...
@@ -203,6 +205,8 @@ OpenHarmony IDL工具生成的Stub类是接口类的抽象实现,并且会声
...
@@ -203,6 +205,8 @@ OpenHarmony IDL工具生成的Stub类是接口类的抽象实现,并且会声
```
ts
```
ts
import
{
testIntTransactionCallback
}
from
"
./i_idl_test_service
"
;
import
{
testIntTransactionCallback
}
from
"
./i_idl_test_service
"
;
import
{
testStringTransactionCallback
}
from
"
./i_idl_test_service
"
;
import
{
testStringTransactionCallback
}
from
"
./i_idl_test_service
"
;
import
{
testMapTransactionCallback
}
from
"
./i_idl_test_service
"
;
import
{
testArrayTransactionCallback
}
from
"
./i_idl_test_service
"
;
import
IIdlTestService
from
"
./i_idl_test_service
"
;
import
IIdlTestService
from
"
./i_idl_test_service
"
;
import
rpc
from
"
@ohos.rpc
"
;
import
rpc
from
"
@ohos.rpc
"
;
...
@@ -211,8 +215,8 @@ export default class IdlTestServiceStub extends rpc.RemoteObject implements IIdl
...
@@ -211,8 +215,8 @@ export default class IdlTestServiceStub extends rpc.RemoteObject implements IIdl
super
(
des
);
super
(
des
);
}
}
async
onRemote
RequestEx
(
code
:
number
,
data
,
reply
,
option
):
Promise
<
boolean
>
{
async
onRemote
MessageRequest
(
code
:
number
,
data
,
reply
,
option
):
Promise
<
boolean
>
{
console
.
log
(
"
onRemote
RequestEx
called, code =
"
+
code
);
console
.
log
(
"
onRemote
MessageRequest
called, code =
"
+
code
);
switch
(
code
)
{
switch
(
code
)
{
case
IdlTestServiceStub
.
COMMAND_TEST_INT_TRANSACTION
:
{
case
IdlTestServiceStub
.
COMMAND_TEST_INT_TRANSACTION
:
{
let
_data
=
data
.
readInt
();
let
_data
=
data
.
readInt
();
...
@@ -231,6 +235,29 @@ export default class IdlTestServiceStub extends rpc.RemoteObject implements IIdl
...
@@ -231,6 +235,29 @@ export default class IdlTestServiceStub extends rpc.RemoteObject implements IIdl
});
});
return
true
;
return
true
;
}
}
case
IdlTestServiceStub
.
COMMAND_TEST_MAP_TRANSACTION
:
{
let
_data
=
new
Map
();
let
_dataSize
=
data
.
readInt
();
for
(
let
i
=
0
;
i
<
_dataSize
;
++
i
)
{
let
key
=
data
.
readInt
();
let
value
=
data
.
readInt
();
_data
.
set
(
key
,
value
);
}
this
.
testMapTransaction
(
_data
,
(
errCode
)
=>
{
reply
.
writeInt
(
errCode
);
});
return
true
;
}
case
IdlTestServiceStub
.
COMMAND_TEST_ARRAY_TRANSACTION
:
{
let
_data
=
data
.
readStringArray
();
this
.
testArrayTransaction
(
_data
,
(
errCode
,
returnValue
)
=>
{
reply
.
writeInt
(
errCode
);
if
(
errCode
==
0
)
{
reply
.
writeInt
(
returnValue
);
}
});
return
true
;
}
default
:
{
default
:
{
console
.
log
(
"
invalid request code
"
+
code
);
console
.
log
(
"
invalid request code
"
+
code
);
break
;
break
;
...
@@ -241,17 +268,23 @@ export default class IdlTestServiceStub extends rpc.RemoteObject implements IIdl
...
@@ -241,17 +268,23 @@ export default class IdlTestServiceStub extends rpc.RemoteObject implements IIdl
testIntTransaction
(
data
:
number
,
callback
:
testIntTransactionCallback
):
void
{}
testIntTransaction
(
data
:
number
,
callback
:
testIntTransactionCallback
):
void
{}
testStringTransaction
(
data
:
string
,
callback
:
testStringTransactionCallback
):
void
{}
testStringTransaction
(
data
:
string
,
callback
:
testStringTransactionCallback
):
void
{}
testMapTransaction
(
data
:
Map
<
number
,
number
>
,
callback
:
testMapTransactionCallback
):
void
{}
testArrayTransaction
(
data
:
string
[],
callback
:
testArrayTransactionCallback
):
void
{}
static
readonly
COMMAND_TEST_INT_TRANSACTION
=
1
;
static
readonly
COMMAND_TEST_INT_TRANSACTION
=
1
;
static
readonly
COMMAND_TEST_STRING_TRANSACTION
=
2
;
static
readonly
COMMAND_TEST_STRING_TRANSACTION
=
2
;
static
readonly
COMMAND_TEST_MAP_TRANSACTION
=
3
;
static
readonly
COMMAND_TEST_ARRAY_TRANSACTION
=
4
;
}
}
```
```
开发者需要继承.idl文件中定义的接口类并实现其中的方法。在本示例中,我们继承了IdlTestServiceStub接口类并实现了其中的testIntTransaction
和testString
Transaction方法。具体的示例代码如下:
开发者需要继承.idl文件中定义的接口类并实现其中的方法。在本示例中,我们继承了IdlTestServiceStub接口类并实现了其中的testIntTransaction
、testStringTransaction、testMapTransaction和testArray
Transaction方法。具体的示例代码如下:
```
ts
```
ts
import
{
testIntTransactionCallback
}
from
"
./i_idl_test_service
"
import
{
testIntTransactionCallback
}
from
"
./i_idl_test_service
"
import
{
testStringTransactionCallback
}
from
"
./i_idl_test_service
"
import
{
testStringTransactionCallback
}
from
"
./i_idl_test_service
"
import
{
testMapTransactionCallback
}
from
"
./i_idl_test_service
"
;
import
{
testArrayTransactionCallback
}
from
"
./i_idl_test_service
"
;
import
IdlTestServiceStub
from
"
./idl_test_service_stub
"
import
IdlTestServiceStub
from
"
./idl_test_service_stub
"
...
@@ -265,6 +298,14 @@ class IdlTestImp extends IdlTestServiceStub {
...
@@ -265,6 +298,14 @@ class IdlTestImp extends IdlTestServiceStub {
{
{
callback
(
0
);
callback
(
0
);
}
}
testMapTransaction
(
data
:
Map
<
number
,
number
>
,
callback
:
testMapTransactionCallback
):
void
{
callback
(
0
);
}
testArrayTransaction
(
data
:
string
[],
callback
:
testArrayTransactionCallback
):
void
{
callback
(
0
,
1
);
}
}
}
```
```
...
@@ -320,11 +361,28 @@ function callbackTestStringTransaction(result: number): void {
...
@@ -320,11 +361,28 @@ function callbackTestStringTransaction(result: number): void {
}
}
}
}
function
callbackTestMapTransaction
(
result
:
number
):
void
{
if
(
result
==
0
)
{
console
.
log
(
'
case 3 success
'
);
}
}
function
callbackTestArrayTransaction
(
result
:
number
,
ret
:
number
):
void
{
if
(
result
==
0
&&
ret
==
124
)
{
console
.
log
(
'
case 4 success
'
);
}
}
var
onAbilityConnectDone
=
{
var
onAbilityConnectDone
=
{
onConnect
:
function
(
elementName
,
proxy
)
{
onConnect
:
function
(
elementName
,
proxy
)
{
let
testProxy
=
new
IdlTestServiceProxy
(
proxy
);
let
testProxy
=
new
IdlTestServiceProxy
(
proxy
);
let
testMap
=
new
Map
();
testMap
.
set
(
1
,
1
);
testMap
.
set
(
1
,
2
);
testProxy
.
testIntTransaction
(
123
,
callbackTestIntTransaction
);
testProxy
.
testIntTransaction
(
123
,
callbackTestIntTransaction
);
testProxy
.
testStringTransaction
(
'
hello
'
,
callbackTestStringTransaction
);
testProxy
.
testStringTransaction
(
'
hello
'
,
callbackTestStringTransaction
);
testProxy
.
testMapTransaction
(
testMap
,
callbackTestMapTransaction
);
testProxy
.
testArrayTransaction
([
'
1
'
,
'
2
'
],
callbackTestMapTransaction
);
},
},
onDisconnect
:
function
(
elementName
)
{
onDisconnect
:
function
(
elementName
)
{
console
.
log
(
'
onDisconnectService onDisconnect
'
);
console
.
log
(
'
onDisconnectService onDisconnect
'
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录