diff --git a/zh-cn/application-dev/reference/apis/js-apis-rpc.md b/zh-cn/application-dev/reference/apis/js-apis-rpc.md
index 69392844ef5062addc0166ba97654389bf7a7cba..e6295a4fce4a27121ce6e62da12cc33038857e6e 100644
--- a/zh-cn/application-dev/reference/apis/js-apis-rpc.md
+++ b/zh-cn/application-dev/reference/apis/js-apis-rpc.md
@@ -5,78 +5,69 @@
>  **说明:**
> 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
-
## 导入模块
-
```
import rpc from '@ohos.rpc';
```
+## MessageSequence9+
-## MessageParcel
-
-在RPC过程中,发送方可以使用MessageParcel提供的写方法,将待发送的数据以特定格式写入该对象。接收方可以使用MessageParcel提供的读方法从该对象中读取特定格式的数据。数据格式包括:基础类型及数组、IPC对象、接口描述符和自定义序列化对象。
-
+在RPC过程中,发送方可以使用MessageSequence提供的写方法,将待发送的数据以特定格式写入该对象。接收方可以使用MessageSequence提供的读方法从该对象中读取特定格式的数据。数据格式包括:基础类型及数组、IPC对象、接口描述符和自定义序列化对象。
### create
-create(): MessageParcel
+create(): MessageSequence
-静态方法,创建MessageParcel对象。
+静态方法,创建MessageSequence对象。
**系统能力**:SystemCapability.Communication.IPC.Core
**返回值:**
-
- | 类型 | 说明 |
- | -------- | -------- |
- | MessageParcel | 返回创建的MessageParcel对象。 |
+ | 类型 | 说明 |
+ | --------------- | ------------------------------- |
+ | MessageSequence | 返回创建的MessageSequence对象。 |
**示例:**
```
- let data = rpc.MessageParcel.create();
+ let data = rpc.MessageSequence.create();
console.log("RpcClient: data is " + data);
```
-
### reclaim
reclaim(): void
-释放不再使用的MessageParcel对象。
+释放不再使用的MessageSequence对象。
**系统能力**:SystemCapability.Communication.IPC.Core
**示例:**
```
- let reply = rpc.MessageParcel.create();
+ let reply = rpc.MessageSequence.create();
reply.reclaim();
```
-
### writeRemoteObject
-writeRemoteObject(object: [IRemoteObject](#iremoteobject)): boolean
-
- 序列化远程对象并将其写入MessageParcel对象。
+writeRemoteObject(object: [IRemoteObject](#iremoteobject)): void
+序列化远程对象并将其写入MessageSequence对象。
**系统能力**:SystemCapability.Communication.IPC.Core
+**参数**
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | ------------------------------- | ---- | ----------------------------------------- |
+ | object | [IRemoteObject](#iremoteobject) | 是 | 要序列化并写入MessageSequence的远程对象。 |
-**参数:**
-
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | object | [IRemoteObject](#iremoteobject) | 是 | 要序列化并写入MessageParcel的远程对象。 |
-
-**返回值:**
-
- | 类型 | 说明 |
- | -------- | -------- |
- | boolean | 如果操作成功,则返回true;否则返回false。 |
+**异常:**
+ | 错误码 | 说明 |
+ | ------------------------------------ | ----------------------- |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
+ | PROXY_OR_REMOTE_OBJECT_INVALID_ERROR | 封装的IPC对象为空 |
+ | WRITE_DATA_TO_MESSAGE_SEQUENCE_ERROR | 写入MessageSequence失败 |
**示例:**
```
@@ -89,36 +80,44 @@ writeRemoteObject(object: [IRemoteObject](#iremoteobject)): boolean
constructor(descriptor) {
super(descriptor);
}
- addDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
- return true;
- }
- removeDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
- return true;
+ try {
+ registerDeathRecipient(recipient: MyDeathRecipient, flags: number);
+ unregisterDeathRecipient(recipient: MyDeathRecipient, flags: number);
+ } catch(error) {
+ console.info("Rpc register deathRecipient fail, errorCode " + error.code);
+ console.info("Rpc register deathRecipient fail, errorMessage " + error.message);
}
isObjectDead(): boolean {
return false;
}
}
- let data = rpc.MessageParcel.create();
+ let data = rpc.MessageSequence.create();
let testRemoteObject = new TestRemoteObject("testObject");
- data.writeRemoteObject(testRemoteObject);
+ try {
+ data.writeRemoteObject(testRemoteObject);
+ } catch(error) {
+ console.info("Rpc write remote object fail, errorCode " + error.code);
+ console.info("Rpc write remote object fail, errorMessage " + error.message);
+ }
```
-
### readRemoteObject
readRemoteObject(): IRemoteObject
-从MessageParcel读取远程对象。此方法用于反序列化MessageParcel对象以生成IRemoteObject。远程对象按写入MessageParcel的顺序读取。
-
+从MessageSequence读取远程对象。此方法用于反序列化MessageSequence对象以生成IRemoteObject。远程对象按写入MessageSequence的顺序读取。
**系统能力**:SystemCapability.Communication.IPC.Core
-
**返回值:**
-
- | 类型 | 说明 |
- | -------- | -------- |
+ | 类型 | 说明 |
+ | ------------------------------- | ------------------ |
| [IRemoteObject](#iremoteobject) | 读取到的远程对象。 |
+**异常:**
+
+ | 错误码 | 说明 |
+ | ------------------------------------- | --------------------------- |
+ | PROXY_OR_REMOTE_OBJECT_INVALID_ERROR | 封装的IPC对象为空 |
+ | READ_DATA_FROM_MESSAGE_SEQUENCE_ERROR | 读取MessageSequence数据失败 |
**示例:**
```
@@ -131,196 +130,202 @@ readRemoteObject(): IRemoteObject
constructor(descriptor) {
super(descriptor);
}
- addDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
- return true;
- }
- removeDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
- return true;
+ try {
+ registerDeathRecipient(recipient: MyDeathRecipient, flags: number);
+ unregisterDeathRecipient(recipient: MyDeathRecipient, flags: number);
+ } catch(error) {
+ console.info("Rpc register deathRecipient fail, errorCode " + error.code);
+ console.info("Rpc register deathRecipient fail, errorMessage " + error.message);
}
isObjectDead(): boolean {
return false;
}
}
- let data = rpc.MessageParcel.create();
+ let data = rpc.MessageSequence.create();
let testRemoteObject = new TestRemoteObject("testObject");
- data.writeRemoteObject(testRemoteObject);
- let proxy = data.readRemoteObject();
+ try {
+ data.writeRemoteObject(testRemoteObject);
+ let proxy = data.readRemoteObject();
+ } catch(error) {
+ console.info("Rpc write remote object fail, errorCode " + error.code);
+ console.info("Rpc write remote object fail, errorMessage " + error.message);
+ }
```
-
### writeInterfaceToken
-writeInterfaceToken(token: string): boolean
-
-将接口描述符写入MessageParcel对象,远端对象可使用该信息校验本次通信。
+writeInterfaceToken(token: string): void
+将接口描述符写入MessageSequence对象,远端对象可使用该信息校验本次通信。
**系统能力**:SystemCapability.Communication.IPC.Core
+**参数**
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | ------ | ---- | ------------------ |
+ | token | string | 是 | 字符串类型描述符。 |
-**参数:**
-
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | token | string | 是 | 字符串类型描述符。 |
-
-**返回值:**
-
- | 类型 | 说明 |
- | -------- | -------- |
- | boolean | 如果操作成功,则返回true;否则返回false。 |
+**异常:**
+ | 错误码 | 说明 |
+ | ------------------------------------ | ----------------------- |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
+ | WRITE_DATA_TO_MESSAGE_SEQUENCE_ERROR | 写入MessageSequence失败 |
**示例:**
```
- let data = rpc.MessageParcel.create();
- let result = data.writeInterfaceToken("aaa");
- console.log("RpcServer: writeInterfaceToken is " + result);
+ let data = rpc.MessageSequence.create();
+ try {
+ data.writeInterfaceToken("aaa");
+ } catch(error) {
+ console.info("rpc write interface fail, errorCode " + error.code);
+ console.info("rpc write interface fail, errorMessage " + error.message);
+ }
```
-
### readInterfaceToken
readInterfaceToken(): string
-从MessageParcel中读取接口描述符,接口描述符按写入MessageParcel的顺序读取,本地对象可使用该信息检验本次通信。
-
+从MessageSequence中读取接口描述符,接口描述符按写入MessageSequence的顺序读取,本地对象可使用该信息检验本次通信。
**系统能力**:SystemCapability.Communication.IPC.Core
-
**返回值:**
-
- | 类型 | 说明 |
- | -------- | -------- |
+ | 类型 | 说明 |
+ | ------ | ------------------------ |
| string | 返回读取到的接口描述符。 |
+**异常:**
+
+ | 错误码 | 说明 |
+ | ------------------------------------- | --------------------------- |
+ | READ_DATA_FROM_MESSAGE_SEQUENCE_ERROR | 读取MessageSequence数据失败 |
**示例:**
```
class Stub extends rpc.RemoteObject {
onRemoteRequest(code, data, reply, option) {
- let interfaceToken = data.readInterfaceToken();
- console.log("RpcServer: interfaceToken is " + interfaceToken);
+ try {
+ let interfaceToken = data.readInterfaceToken();
+ console.log("RpcServer: interfaceToken is " + interfaceToken);
+ } catch(error) {
+ console.info("RpcServer: read interfaceToken failed, errorCode " + error.code);
+ console.info("RpcServer: read interfaceToken failed, errorMessage " + error.message);
+ }
return true;
}
}
```
-
### getSize
getSize(): number
-获取当前MessageParcel的数据大小。
-
+获取当前MessageSequence的数据大小。
**系统能力**:SystemCapability.Communication.IPC.Core
-
**返回值:**
-
- | 类型 | 说明 |
- | -------- | -------- |
- | number | 获取的MessageParcel的数据大小。以字节为单位。 |
-
+ | 类型 | 说明 |
+ | ------ | ----------------------------------------------- |
+ | number | 获取的MessageSequence的数据大小。以字节为单位。 |
**示例:**
```
- let data = rpc.MessageParcel.create();
+ let data = rpc.MessageSequence.create();
let size = data.getSize();
console.log("RpcClient: size is " + size);
```
-
### getCapacity
getCapacity(): number
-获取当前MessageParcel的容量。
-
+获取当前MessageSequence的容量。
**系统能力**:SystemCapability.Communication.IPC.Core
-
**返回值:**
-
- | 类型 | 说明 |
- | -------- | -------- |
- | number | 获取的MessageParcel的容量大小。以字节为单位。 |
-
+ | 类型 | 说明 |
+ | ------ | ----------------------------------------------- |
+ | number | 获取的MessageSequence的容量大小。以字节为单位。 |
**示例:**
```
- let data = rpc.MessageParcel.create();
+ let data = rpc.MessageSequence.create();
let result = data.getCapacity();
console.log("RpcClient: capacity is " + result);
```
-
### setSize
-setSize(size: number): boolean
-
-设置MessageParcel实例中包含的数据大小。
+setSize(size: number): void
+设置MessageSequence实例中包含的数据大小。
**系统能力**:SystemCapability.Communication.IPC.Core
+**参数**
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | ------ | ---- | --------------------------------------------- |
+ | size | number | 是 | MessageSequence实例的数据大小。以字节为单位。 |
-**参数:**
-
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | size | number | 是 | MessageParcel实例的数据大小。以字节为单位。 |
-
-**返回值:**
-
- | 类型 | 说明 |
- | -------- | -------- |
- | boolean | 设置成功返回true,否则返回false。 |
+**异常:**
+ | 错误码 | 说明 |
+ | ----------------- | ------------ |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
**示例:**
```
- let data = rpc.MessageParcel.create();
- let setSize = data.setSize(16);
- console.log("RpcClient: setSize is " + setSize);
+ let data = rpc.MessageSequence.create();
+ try {
+ data.setSize(16);
+ console.log("RpcClient: setSize is " + setSize);
+ } catch(error) {
+ console.info("rpc set size of MessageSequence fail, errorCode " + error.code);
+ console.info("rpc set size of MessageSequence fail, errorMessage " + error.message);
+ }
```
-
### setCapacity
-setCapacity(size: number): boolean
+setCapacity(size: number): void
-设置MessageParcel实例的存储容量。
+设置MessageSequence实例的存储容量。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | size | number | 是 | MessageParcel实例的存储容量。以字节为单位。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | ------ | ---- | --------------------------------------------- |
+ | size | number | 是 | MessageSequence实例的存储容量。以字节为单位。 |
-**返回值:**
+**异常:**
- | 类型 | 说明 |
- | -------- | -------- |
- | boolean | 设置成功返回true,否则返回false。 |
+ | 错误码 | 说明 |
+ | ------------------------- | ------------------ |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
+ | PARCEL_MEMORY_ALLOC_ERROR | 序列化内存分配失败 |
**示例:**
```
- let data = rpc.MessageParcel.create();
- let result = data.setCapacity(100);
- console.log("RpcClient: setCapacity is " + result);
+ let data = rpc.MessageSequence.create();
+ try {
+ data.setCapacity(100);
+ console.log("RpcClient: setCapacity is " + result);
+ } catch(error) {
+ console.info("rpc memory alloc fail, errorCode " + error.code);
+ console.info("rpc memory alloc fail, errorMessage " + error.message);
+ }
```
-
### getWritableBytes
getWritableBytes(): number
-获取MessageParcel的可写字节空间。
+获取MessageSequence的可写字节空间。
**系统能力**:SystemCapability.Communication.IPC.Core
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
- | number | 获取到的MessageParcel的可写字节空间。以字节为单位。 |
+ | 类型 | 说明 |
+ | ------ | ----------------------------------------------------- |
+ | number | 获取到的MessageSequence的可写字节空间。以字节为单位。 |
**示例:**
@@ -334,20 +339,19 @@ getWritableBytes(): number
}
```
-
### getReadableBytes
getReadableBytes(): number
-获取MessageParcel的可读字节空间。
+获取MessageSequence的可读字节空间。
**系统能力**:SystemCapability.Communication.IPC.Core
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
- | number | 获取到的MessageParcel的可读字节空间。以字节为单位。 |
+ | 类型 | 说明 |
+ | ------ | ----------------------------------------------------- |
+ | number | 获取到的MessageSequence的可读字节空间。以字节为单位。 |
**示例:**
@@ -361,625 +365,792 @@ getReadableBytes(): number
}
```
-
### getReadPosition
getReadPosition(): number
-获取MessageParcel的读位置。
+获取MessageSequence的读位置。
**系统能力**:SystemCapability.Communication.IPC.Core
**返回值:**
-
- | 类型 | 说明 |
- | -------- | -------- |
- | number | 返回MessageParcel实例中的当前读取位置。 |
+ | 类型 | 说明 |
+ | ------ | ----------------------------------------- |
+ | number | 返回MessageSequence实例中的当前读取位置。 |
**示例:**
```
- let data = rpc.MessageParcel.create();
+ let data = rpc.MessageSequence.create();
let readPos = data.getReadPosition();
console.log("RpcClient: readPos is " + readPos);
```
-
### getWritePosition
getWritePosition(): number
-获取MessageParcel的写位置。
+获取MessageSequence的写位置。
**系统能力**:SystemCapability.Communication.IPC.Core
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
- | number | 返回MessageParcel实例中的当前写入位置。 |
+ | 类型 | 说明 |
+ | ------ | ----------------------------------------- |
+ | number | 返回MessageSequence实例中的当前写入位置。 |
**示例:**
```
- let data = rpc.MessageParcel.create();
+ let data = rpc.MessageSequence.create();
data.writeInt(10);
let bwPos = data.getWritePosition();
console.log("RpcClient: bwPos is " + bwPos);
```
-
### rewindRead
-rewindRead(pos: number): boolean
+rewindRead(pos: number): void
重新偏移读取位置到指定的位置。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | pos | number | 是 | 开始读取数据的目标位置。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | ------ | ---- | ------------------------ |
+ | pos | number | 是 | 开始读取数据的目标位置。 |
-**返回值:**
+**异常:**
- | 类型 | 说明 |
- | -------- | -------- |
- | boolean | 如果读取位置发生更改,则返回true;否则返回false。 |
+ | 错误码 | 说明 |
+ | ----------------- | ------------ |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
**示例:**
```
- let data = rpc.MessageParcel.create();
+ let data = rpc.MessageSequence.create();
data.writeInt(12);
- data.writeString("parcel");
+ data.writeString("sequence");
let number = data.readInt();
console.log("RpcClient: number is " + number);
- data.rewindRead(0);
+ try {
+ data.rewindRead(0);
+ } catch(error) {
+ console.info("rpc rewind read data fail, errorCode " + error.code);
+ console.info("rpc rewind read data fail, errorMessage " + error.message);
+ }
let number2 = data.readInt();
console.log("RpcClient: rewindRead is " + number2);
```
-
### rewindWrite
-rewindWrite(pos: number): boolean
+rewindWrite(pos: number): void
重新偏移写位置到指定的位置。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | pos | number | 是 | 开始写入数据的目标位置。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | ------ | ---- | ------------------------ |
+ | pos | number | 是 | 开始写入数据的目标位置。 |
-**返回值:**
+**异常:**
- | 类型 | 说明 |
- | -------- | -------- |
- | boolean | 如果写入位置更改,则返回true;否则返回false。 |
+ | 错误码 | 说明 |
+ | ----------------- | ------------ |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
**示例:**
```
- let data = rpc.MessageParcel.create();
+ let data = rpc.MessageSequence.create();
data.writeInt(4);
- data.rewindWrite(0);
+ try {
+ data.rewindWrite(0);
+ } catch(error) {
+ console.info("rpc rewind read data fail, errorCode " + error.code);
+ console.info("rpc rewind read data fail, errorMessage " + error.message);
+ }
data.writeInt(5);
let number = data.readInt();
console.log("RpcClient: rewindWrite is: " + number);
```
-
### writeByte
-writeByte(val: number): boolean
+writeByte(val: number): void
-将字节值写入MessageParcel实例。
+将字节值写入MessageSequence实例。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | val | number | 是 | 要写入的字节值。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | ------ | ---- | ---------------- |
+ | val | number | 是 | 要写入的字节值。 |
-**返回值:**
+**异常:**
- | 类型 | 说明 |
- | -------- | -------- |
- | boolean | 写入返回成功,否则返回false。 |
+ | 错误码 | 说明 |
+ | ------------------------------------ | ----------------------- |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
+ | WRITE_DATA_TO_MESSAGE_SEQUENCE_ERROR | 写入MessageSequence失败 |
**示例:**
```
- let data = rpc.MessageParcel.create();
- let result = data.writeByte(2);
- console.log("RpcClient: writeByte is: " + result);
+ let data = rpc.MessageSequence.create();
+ try {
+ data.writeByte(2);
+ } catch(error) {
+ console.info("rpc write byte fail, errorCode " + error.code);
+ console.info("rpc write byte fail, errorMessage" + error.message);
+ }
```
-
### readByte
readByte(): number
-从MessageParcel实例读取字节值。
+从MessageSequence实例读取字节值。
**系统能力**:SystemCapability.Communication.IPC.Core
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
+ | 类型 | 说明 |
+ | ------ | ------------ |
| number | 返回字节值。 |
+**异常:**
+
+ | 错误码 | 说明 |
+ | ------------------------------------- | --------------------------- |
+ | READ_DATA_FROM_MESSAGE_SEQUENCE_ERROR | 读取MessageSequence数据失败 |
+
**示例:**
```
- let data = rpc.MessageParcel.create();
- let result = data.writeByte(2);
- console.log("RpcClient: writeByte is: " + result);
- let ret = data.readByte();
- console.log("RpcClient: readByte is: " + ret);
+ let data = rpc.MessageSequence.create();
+ try {
+ data.writeByte(2);
+ } catch(error) {
+ console.info("rpc write byte fail, errorCode " + error.code);
+ console.info("rpc write byte fail, errorMessage" + error.message);
+ }
+ try {
+ let ret = data.readByte();
+ console.log("RpcClient: readByte is: " + ret);
+ } catch(error) {
+ console.info("rpc write byte fail, errorCode " + error.code);
+ console.info("rpc write byte fail, errorMessage" + error.message);
+ }
```
-
### writeShort
-writeShort(val: number): boolean
+writeShort(val: number): void
-将短整数值写入MessageParcel实例。
+将短整数值写入MessageSequence实例。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | val | number | 是 | 要写入的短整数值。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | ------ | ---- | ------------------ |
+ | val | number | 是 | 要写入的短整数值。 |
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
- | boolean | 写入返回true,否则返回false。 |
+ | 错误码 | 说明 |
+ | ------------------------------------ | ----------------------- |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
+ | WRITE_DATA_TO_MESSAGE_SEQUENCE_ERROR | 写入MessageSequence失败 |
**示例:**
```
- let data = rpc.MessageParcel.create();
- let result = data.writeShort(8);
- console.log("RpcClient: writeShort is: " + result);
+ let data = rpc.MessageSequence.create();
+ try {
+ data.writeShort(8);
+ } catch(error) {
+ console.info("rpc write short fail, errorCode " + error.code);
+ console.info("rpc write short fail, errorMessage" + error.message);
+ }
```
-
### readShort
readShort(): number
-从MessageParcel实例读取短整数值。
+从MessageSequence实例读取短整数值。
**系统能力**:SystemCapability.Communication.IPC.Core
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
+ | 类型 | 说明 |
+ | ------ | -------------- |
| number | 返回短整数值。 |
+**异常:**
+
+ | 错误码 | 说明 |
+ | ------------------------------------- | --------------------------- |
+ | READ_DATA_FROM_MESSAGE_SEQUENCE_ERROR | 读取MessageSequence数据失败 |
+
**示例:**
```
- let data = rpc.MessageParcel.create();
- let result = data.writeShort(8);
- console.log("RpcClient: writeShort is: " + result);
- let ret = data.readShort();
- console.log("RpcClient: readShort is: " + ret);
+ let data = rpc.MessageSequence.create();
+ try {
+ data.writeShort(8);
+ } catch(error) {
+ console.info("rpc write short fail, errorCode " + error.code);
+ console.info("rpc write short fail, errorMessage" + error.message);
+ }
+ try {
+ let ret = data.readShort(8);
+ } catch(error) {
+ console.info("rpc read short fail, errorCode " + error.code);
+ console.info("rpc read short fail, errorMessage" + error.message);
+ }
+ console.log("RpcClient: readByte is: " + ret);
```
-
### writeInt
-writeInt(val: number): boolean
+writeInt(val: number): void
-将整数值写入MessageParcel实例。
+将整数值写入MessageSequence实例。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | val | number | 是 | 要写入的整数值。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | ------ | ---- | ---------------- |
+ | val | number | 是 | 要写入的整数值。 |
-**返回值:**
+**异常:**
- | 类型 | 说明 |
- | -------- | -------- |
- | boolean | 写入返回成功,否则返回false。 |
+ | 错误码 | 说明 |
+ | ------------------------------------ | ----------------------- |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
+ | WRITE_DATA_TO_MESSAGE_SEQUENCE_ERROR | 写入MessageSequence失败 |
**示例:**
```
- let data = rpc.MessageParcel.create();
- let result = data.writeInt(10);
- console.log("RpcClient: writeInt is " + result);
+ let data = rpc.MessageSequence.create();
+ try {
+ data.writeInt(10);
+ } catch(error) {
+ console.info("rpc write int fail, errorCode " + error.code);
+ console.info("rpc write int fail, errorMessage" + error.message);
+ }
```
-
### readInt
readInt(): number
-从MessageParcel实例读取整数值。
+从MessageSequence实例读取整数值。
**系统能力**:SystemCapability.Communication.IPC.Core
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
+ | 类型 | 说明 |
+ | ------ | ------------ |
| number | 返回整数值。 |
+**异常:**
+
+ | 错误码 | 说明 |
+ | ------------------------------------- | --------------------------- |
+ | READ_DATA_FROM_MESSAGE_SEQUENCE_ERROR | 读取MessageSequence数据失败 |
+
**示例:**
```
- let data = rpc.MessageParcel.create();
- let result = data.writeInt(10);
- console.log("RpcClient: writeInt is " + result);
- let ret = data.readInt();
+ let data = rpc.MessageSequence.create();
+ try {
+ data.writeInt(10);
+ } catch(error) {
+ console.info("rpc write int fail, errorCode " + error.code);
+ console.info("rpc write int fail, errorMessage" + error.message);
+ }
+ try {
+ let ret = data.readInt();
+ } catch(error) {
+ console.info("rpc read int fail, errorCode " + error.code);
+ console.info("rpc read int fail, errorMessage" + error.message);
+ }
console.log("RpcClient: readInt is " + ret);
```
-
### writeLong
-writeLong(val: number): boolean
+writeLong(val: number): void
-将长整数值写入MessageParcel实例。
+将长整数值写入MessageSequence实例。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | val | number | 是 | 要写入的长整数值 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | ------ | ---- | ---------------- |
+ | val | number | 是 | 要写入的长整数值 |
-**返回值:**
+**异常:**
- | 类型 | 说明 |
- | -------- | -------- |
- | boolean | 写入成功返回true,否则返回false。 |
+ | 错误码 | 说明 |
+ | ------------------------------------ | ----------------------- |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
+ | WRITE_DATA_TO_MESSAGE_SEQUENCE_ERROR | 写入MessageSequence失败 |
**示例:**
```
- let data = rpc.MessageParcel.create();
- let result = data.writeLong(10000);
- console.log("RpcClient: writeLong is " + result);
+ let data = rpc.MessageSequence.create();
+ try {
+ data.writeLong(10000);
+ } catch(error) {
+ console.info("rpc write long fail, errorCode " + error.code);
+ console.info("rpc write long fail, errorMessage" + error.message);
+ }
```
-
### readLong
readLong(): number
-从MessageParcel实例中读取长整数值。
+从MessageSequence实例中读取长整数值。
**系统能力**:SystemCapability.Communication.IPC.Core
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
+ | 类型 | 说明 |
+ | ------ | -------------- |
| number | 返回长整数值。 |
+**异常:**
+
+ | 错误码 | 说明 |
+ | ------------------------------------- | --------------------------- |
+ | READ_DATA_FROM_MESSAGE_SEQUENCE_ERROR | 读取MessageSequence数据失败 |
+
**示例:**
```
- let data = rpc.MessageParcel.create();
- let result = data.writeLong(10000);
- console.log("RpcClient: writeLong is " + result);
- let ret = data.readLong();
+ let data = rpc.MessageSequence.create();
+ try {
+ data.writeLong(10000);
+ } catch(error) {
+ console.info("rpc write long fail, errorCode " + error.code);
+ console.info("rpc write long fail, errorMessage" + error.message);
+ }
+ try {
+ let ret = data.readLong();
+ } catch(error) {
+ console.info("rpc read long fail, errorCode " + error.code);
+ console.info("rpc read long fail, errorMessage" + error.message);
+ }
console.log("RpcClient: readLong is " + ret);
```
-
### writeFloat
-writeFloat(val: number): boolean
+writeFloat(val: number): void
-将浮点值写入MessageParcel实例。
+将浮点值写入MessageSequence实例。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | val | number | 是 | 要写入的浮点值。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | ------ | ---- | ---------------- |
+ | val | number | 是 | 要写入的浮点值。 |
-**返回值:**
+**异常:**
- | 类型 | 说明 |
- | -------- | -------- |
- | boolean | 写入成功返回true,否则返回false。 |
+ | 错误码 | 说明 |
+ | ------------------------------------ | ----------------------- |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
+ | WRITE_DATA_TO_MESSAGE_SEQUENCE_ERROR | 写入MessageSequence失败 |
**示例:**
```
- let data = rpc.MessageParcel.create();
- let result = data.writeFloat(1.2);
- console.log("RpcClient: writeFloat is " + result);
+ let data = rpc.MessageSequence.create();
+ try {
+ data.writeFloat(1.2);
+ } catch(error) {
+ console.info("rpc write float fail, errorCode " + error.code);
+ console.info("rpc write float fail, errorMessage" + error.message);
+ }
```
-
### readFloat
readFloat(): number
-从MessageParcel实例中读取浮点值。
+从MessageSequence实例中读取浮点值。
**系统能力**:SystemCapability.Communication.IPC.Core
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
+ | 类型 | 说明 |
+ | ------ | ------------ |
| number | 返回浮点值。 |
+**异常:**
+
+ | 错误码 | 说明 |
+ | ------------------------------------- | --------------------------- |
+ | READ_DATA_FROM_MESSAGE_SEQUENCE_ERROR | 读取MessageSequence数据失败 |
+
**示例:**
```
- let data = rpc.MessageParcel.create();
- let result = data.writeFloat(1.2);
- console.log("RpcClient: writeFloat is " + result);
- let ret = data.readFloat();
+ let data = rpc.MessageSequence.create();
+ try {
+ data.writeFloat(1.2);
+ } catch(error) {
+ console.info("rpc write float fail, errorCode " + error.code);
+ console.info("rpc write float fail, errorMessage" + error.message);
+ }
+ try {
+ let ret = data.readFloat();
+ } catch(error) {
+ console.info("rpc read float fail, errorCode " + error.code);
+ console.info("rpc read float fail, errorMessage" + error.message);
+ }
console.log("RpcClient: readFloat is " + ret);
```
-
### writeDouble
-writeDouble(val: number): boolean
+writeDouble(val: number): void
-将双精度浮点值写入MessageParcel实例。
+将双精度浮点值写入MessageSequence实例。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | val | number | 是 | 要写入的双精度浮点值。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | ------ | ---- | ---------------------- |
+ | val | number | 是 | 要写入的双精度浮点值。 |
-**返回值:**
+**异常:**
- | 类型 | 说明 |
- | -------- | -------- |
- | boolean | 写入成功返回true,否则返回false。 |
+ | 错误码 | 说明 |
+ | ------------------------------------ | ----------------------- |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
+ | WRITE_DATA_TO_MESSAGE_SEQUENCE_ERROR | 写入MessageSequence失败 |
**示例:**
```
- let data = rpc.MessageParcel.create();
- let result = data.writeDouble(10.2);
- console.log("RpcClient: writeDouble is " + result);
+ let data = rpc.MessageSequence.create();
+ try {
+ data.writeDouble(10.2);
+ } catch(error) {
+ console.info("rpc read float fail, errorCode " + error.code);
+ console.info("rpc read float fail, errorMessage" + error.message);
+ }
```
-
### readDouble
readDouble(): number
-从MessageParcel实例读取双精度浮点值。
+从MessageSequence实例读取双精度浮点值。
**系统能力**:SystemCapability.Communication.IPC.Core
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
+ | 类型 | 说明 |
+ | ------ | ------------------ |
| number | 返回双精度浮点值。 |
+**异常:**
+
+ | 错误码 | 说明 |
+ | ------------------------------------- | --------------------------- |
+ | READ_DATA_FROM_MESSAGE_SEQUENCE_ERROR | 读取MessageSequence数据失败 |
+
**示例:**
```
- let data = rpc.MessageParcel.create();
- let result = data.writeDouble(10.2);
- console.log("RpcClient: writeDouble is " + result);
- let ret = data.readDouble();
+ let data = rpc.MessageSequence.create();
+ try {
+ data.writeDouble(10.2);
+ } catch(error) {
+ console.info("rpc write double fail, errorCode " + error.code);
+ console.info("rpc write double fail, errorMessage" + error.message);
+ }
+ try {
+ let ret = data.readDouble();
+ } catch(error) {
+ console.info("rpc read double fail, errorCode " + error.code);
+ console.info("rpc read double fail, errorMessage" + error.message);
+ }
console.log("RpcClient: readDouble is " + ret);
```
-
### writeBoolean
-writeBoolean(val: boolean): boolean
+writeBoolean(val: boolean): void
-将布尔值写入MessageParcel实例。
+将布尔值写入MessageSequence实例。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | val | boolean | 是 | 要写入的布尔值。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | ------- | ---- | ---------------- |
+ | val | boolean | 是 | 要写入的布尔值。 |
-**返回值:**
+**异常:**
- | 类型 | 说明 |
- | -------- | -------- |
- | boolean | 写入成功返回true,否则返回false。 |
+ | 错误码 | 说明 |
+ | ------------------------------------ | ----------------------- |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
+ | WRITE_DATA_TO_MESSAGE_SEQUENCE_ERROR | 写入MessageSequence失败 |
**示例:**
```
- let data = rpc.MessageParcel.create();
- let result = data.writeBoolean(false);
- console.log("RpcClient: writeBoolean is " + result);
+ let data = rpc.MessageSequence.create();
+ try {
+ data.writeBoolean(false);
+ } catch(error) {
+ console.info("rpc write boolean fail, errorCode " + error.code);
+ console.info("rpc write boolean fail, errorMessage" + error.message);
+ }
```
-
### readBoolean
readBoolean(): boolean
-从MessageParcel实例读取布尔值。
+从MessageSequence实例读取布尔值。
**系统能力**:SystemCapability.Communication.IPC.Core
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
+ | 类型 | 说明 |
+ | ------- | -------------------- |
| boolean | 返回读取到的布尔值。 |
+**异常:**
+
+ | 错误码 | 说明 |
+ | ------------------------------------- | --------------------------- |
+ | READ_DATA_FROM_MESSAGE_SEQUENCE_ERROR | 读取MessageSequence数据失败 |
+
**示例:**
```
- let data = rpc.MessageParcel.create();
- let result = data.writeBoolean(false);
- console.log("RpcClient: writeBoolean is " + result);
- let ret = data.readBoolean();
+ let data = rpc.MessageSequence.create();
+ try {
+ data.writeBoolean(false);
+ } catch(error) {
+ console.info("rpc write boolean fail, errorCode " + error.code);
+ console.info("rpc write boolean fail, errorMessage" + error.message);
+ }
+ try {
+ let ret = data.readBoolean();
+ } catch(error) {
+ console.info("rpc read boolean fail, errorCode " + error.code);
+ console.info("rpc read boolean fail, errorMessage" + error.message);
+ }
console.log("RpcClient: readBoolean is " + ret);
```
-
### writeChar
-writeChar(val: number): boolean
+writeChar(val: number): void
-将单个字符值写入MessageParcel实例。
+将单个字符值写入MessageSequence实例。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | val | number | 是 | 要写入的单个字符值。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | ------ | ---- | -------------------- |
+ | val | number | 是 | 要写入的单个字符值。 |
-**返回值:**
+**异常:**
- | 类型 | 说明 |
- | -------- | -------- |
- | boolean | 写入返回true,否则返回false。 |
+ | 错误码 | 说明 |
+ | ------------------------------------ | ----------------------- |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
+ | WRITE_DATA_TO_MESSAGE_SEQUENCE_ERROR | 写入MessageSequence失败 |
**示例:**
```
- let data = rpc.MessageParcel.create();
- let result = data.writeChar(97);
- console.log("RpcClient: writeChar is " + result);
+ let data = rpc.MessageSequence.create();
+ try {
+ data.writeChar(97);
+ } catch(error) {
+ console.info("rpc write char fail, errorCode " + error.code);
+ console.info("rpc write char fail, errorMessage" + error.message);
+ }
```
-
### readChar
readChar(): number
-从MessageParcel实例中读取单个字符值。
+从MessageSequence实例中读取单个字符值。
**系统能力**:SystemCapability.Communication.IPC.Core
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
+ | 类型 | 说明 |
+ | ------ | ---------------- |
| number | 返回单个字符值。 |
+**异常:**
+
+ | 错误码 | 说明 |
+ | ------------------------------------- | --------------------------- |
+ | READ_DATA_FROM_MESSAGE_SEQUENCE_ERROR | 读取MessageSequence数据失败 |
+
**示例:**
```
- let data = rpc.MessageParcel.create();
- let result = data.writeChar(97);
- console.log("RpcClient: writeChar is " + result);
- let ret = data.readChar();
+ let data = rpc.MessageSequence.create();
+ try {
+ data.writeChar(97);
+ } catch(error) {
+ console.info("rpc write char fail, errorCode " + error.code);
+ console.info("rpc write char fail, errorMessage" + error.message);
+ }
+ try {
+ let ret = data.readChar();
+ } catch(error) {
+ console.info("rpc read char fail, errorCode " + error.code);
+ console.info("rpc read char fail, errorMessage" + error.message);
+ }
console.log("RpcClient: readChar is " + ret);
```
-
### writeString
-writeString(val: string): boolean
+writeString(val: string): void
-将字符串值写入MessageParcel实例。
+将字符串值写入MessageSequence实例。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | val | string | 是 | 要写入的字符串值,其长度应小于40960字节。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | ------ | ---- | ----------------------------------------- |
+ | val | string | 是 | 要写入的字符串值,其长度应小于40960字节。 |
-**返回值:**
+**异常:**
- | 类型 | 说明 |
- | -------- | -------- |
- | boolean | 写入成功返回true,否则返回false。 |
+ | 错误码 | 说明 |
+ | ------------------------------------ | ----------------------- |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
+ | WRITE_DATA_TO_MESSAGE_SEQUENCE_ERROR | 写入MessageSequence失败 |
**示例:**
```
- let data = rpc.MessageParcel.create();
- let result = data.writeString('abc');
- console.log("RpcClient: writeString is " + result);
+ let data = rpc.MessageSequence.create();
+ try {
+ data.writeString('abc');
+ } catch(error) {
+ console.info("rpc write string fail, errorCode " + error.code);
+ console.info("rpc write string fail, errorMessage" + error.message);
+ }
```
-
### readString
readString(): string
-从MessageParcel实例读取字符串值。
+从MessageSequence实例读取字符串值。
**系统能力**:SystemCapability.Communication.IPC.Core
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
+ | 类型 | 说明 |
+ | ------ | -------------- |
| string | 返回字符串值。 |
+**异常:**
+
+ | 错误码 | 说明 |
+ | ------------------------------------- | --------------------------- |
+ | READ_DATA_FROM_MESSAGE_SEQUENCE_ERROR | 读取MessageSequence数据失败 |
+
**示例:**
```
- let data = rpc.MessageParcel.create();
- let result = data.writeString('abc');
- console.log("RpcClient: writeString is " + result);
- let ret = data.readString();
+ let data = rpc.MessageSequence.create();
+ try {
+ data.writeString('abc');
+ } catch(error) {
+ console.info("rpc write string fail, errorCode " + error.code);
+ console.info("rpc write string fail, errorMessage" + error.message);
+ }
+ try {
+ let ret = data.readString();
+ } catch(error) {
+ console.info("rpc read string fail, errorCode " + error.code);
+ console.info("rpc read string fail, errorMessage" + error.message);
+ }
console.log("RpcClient: readString is " + ret);
```
+### writeParcelable
-### writeSequenceable
-
-writeSequenceable(val: Sequenceable): boolean
+writeParcelable(val: Parcelable): void
-将自定义序列化对象写入MessageParcel实例。
+将自定义序列化对象写入MessageSequence实例。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | val | [Sequenceable](#sequenceable) | 是 | 要写入的可序列对象。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | ------------------------- | ---- | -------------------- |
+ | val | [Parcelable](#parcelable) | 是 | 要写入的可序列对象。 |
-**返回值:**
+**异常:**
- | 类型 | 说明 |
- | -------- | -------- |
- | boolean | 写入成功返回true,否则返回false。 |
+ | 错误码 | 说明 |
+ | ------------------------------------ | ----------------------- |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
+ | WRITE_DATA_TO_MESSAGE_SEQUENCE_ERROR | 写入MessageSequence失败 |
**示例:**
@@ -991,43 +1162,47 @@ writeSequenceable(val: Sequenceable): boolean
this.num = num;
this.str = str;
}
- marshalling(messageParcel) {
- messageParcel.writeInt(this.num);
- messageParcel.writeString(this.str);
+ marshalling(messageSequence) {
+ messageSequence.writeInt(this.num);
+ messageSequence.writeString(this.str);
return true;
}
- unmarshalling(messageParcel) {
- this.num = messageParcel.readInt();
- this.str = messageParcel.readString();
+ unmarshalling(messageSequence) {
+ this.num = messageSequence.readInt();
+ this.str = messageSequence.readString();
return true;
}
}
- let sequenceable = new MySequenceable(1, "aaa");
- let data = rpc.MessageParcel.create();
- let result = data.writeSequenceable(sequenceable);
- console.log("RpcClient: writeSequenceable is " + result);
+ let parcelable = new MyParcelable(1, "aaa");
+ let data = rpc.MessageSequence.create();
+ try {
+ data.writeParcelable(parcelable);
+ } catch(error) {
+ console.info("rpc write parcelable fail, errorCode " + error.code);
+ console.info("rpc write parcelable fail, errorMessage" + error.message);
+ }
```
+### readParcelable
-### readSequenceable
-
-readSequenceable(dataIn: Sequenceable) : boolean
+readParcelable(dataIn: Parcelable) : void
-从MessageParcel实例中读取成员变量到指定的对象(dataIn)。
+从MessageSequence实例中读取成员变量到指定的对象(dataIn)。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | dataIn | [Sequenceable](#sequenceable) | 是 | 需要从MessageParcel读取成员变量的对象。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | ------------------------- | ---- | ----------------------------------------- |
+ | dataIn | [Parcelable](#Parcelable) | 是 | 需要从MessageSequence读取成员变量的对象。 |
-**返回值:**
+**异常:**
- | 类型 | 说明 |
- | -------- | -------- |
- | boolean | 如果反序列成功,则返回true;否则返回false。 |
+ | 错误码 | 说明 |
+ | ------------------------------------- | --------------------------- |
+ | READ_DATA_FROM_MESSAGE_SEQUENCE_ERROR | 读取MessageSequence数据失败 |
+ | CALL_JS_METHOD_ERROR | 调用JS方法失败 |
**示例:**
@@ -1039,749 +1214,1056 @@ readSequenceable(dataIn: Sequenceable) : boolean
this.num = num;
this.str = str;
}
- marshalling(messageParcel) {
- messageParcel.writeInt(this.num);
- messageParcel.writeString(this.str);
+ marshalling(messageSequence) {
+ messageSequence.writeInt(this.num);
+ messageSequence.writeString(this.str);
return true;
}
- unmarshalling(messageParcel) {
- this.num = messageParcel.readInt();
- this.str = messageParcel.readString();
+ unmarshalling(messageSequence) {
+ this.num = messageSequence.readInt();
+ this.str = messageSequence.readString();
return true;
}
}
- let sequenceable = new MySequenceable(1, "aaa");
- let data = rpc.MessageParcel.create();
- let result = data.writeSequenceable(sequenceable);
- console.log("RpcClient: writeSequenceable is " + result);
- let ret = new MySequenceable(0, "");
- let result2 = data.readSequenceable(ret);
- console.log("RpcClient: writeSequenceable is " + result2);
+ let parcelable = new MyParcelable(1, "aaa");
+ let data = rpc.MessageSequence.create();
+ data.writeParcelable(parcelable);
+ let ret = new MyParcelable(0, "");
+ try {
+ data.readParcelable(ret);
+ }catch{
+ console.info("rpc read parcelable fail, errorCode " + error.code);
+ console.info("rpc read parcelable fail, errorMessage" + error.message);
+ }
```
-
### writeByteArray
-writeByteArray(byteArray: number[]): boolean
+writeByteArray(byteArray: number[]): void
-将字节数组写入MessageParcel实例。
+将字节数组写入MessageSequence实例。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | byteArray | number[] | 是 | 要写入的字节数组。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | --------- | -------- | ---- | ------------------ |
+ | byteArray | number[] | 是 | 要写入的字节数组。 |
-**返回值:**
+**异常:**
- | 类型 | 说明 |
- | -------- | -------- |
- | boolean | 写入成功返回true,否则返回false。 |
+ | 错误码 | 说明 |
+ | ------------------------------------ | ----------------------- |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
+ | WRITE_DATA_TO_MESSAGE_SEQUENCE_ERROR | 写入MessageSequence失败 |
**示例:**
```
- let data = rpc.MessageParcel.create();
+ let data = rpc.MessageSequence.create();
let ByteArrayVar = [1, 2, 3, 4, 5];
- let result = data.writeByteArray(ByteArrayVar);
- console.log("RpcClient: writeByteArray is " + result);
+ try {
+ data.writeByteArray(ByteArrayVar);
+ } catch(error) {
+ console.info("rpc write byteArray fail, errorCode " + error.code);
+ console.info("rpc write byteArray fail, errorMessage" + error.message);
+ }
```
-
### readByteArray
readByteArray(dataIn: number[]) : void
-从MessageParcel实例读取字节数组。
+从MessageSequence实例读取字节数组。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | dataIn | number[] | 是 | 要读取的字节数组。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | -------- | ---- | ------------------ |
+ | dataIn | number[] | 是 | 要读取的字节数组。 |
+
+**异常:**
+
+ | 错误码 | 说明 |
+ | ------------------------------------- | --------------------------- |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
+ | READ_DATA_FROM_MESSAGE_SEQUENCE_ERROR | 读取MessageSequence数据失败 |
**示例:**
```
- let data = rpc.MessageParcel.create();
+ let data = rpc.MessageSequence.create();
let ByteArrayVar = [1, 2, 3, 4, 5];
- let result = data.writeByteArray(ByteArrayVar);
- console.log("RpcClient: writeByteArray is " + result);
- let array = new Array(5);
- data.readByteArray(array);
+ try {
+ data.writeByteArray(ByteArrayVar);
+ } catch(error) {
+ console.info("rpc write byteArray fail, errorCode " + error.code);
+ console.info("rpc write byteArray fail, errorMessage" + error.message);
+ }
+ try {
+ let array = new Array(5);
+ data.readByteArray(array);
+ } catch(error) {
+ console.info("rpc write byteArray fail, errorCode " + error.code);
+ console.info("rpc write byteArray fail, errorMessage" + error.message);
+ }
```
-
### readByteArray
readByteArray(): number[]
-从MessageParcel实例中读取字节数组。
+从MessageSequence实例中读取字节数组。
**系统能力**:SystemCapability.Communication.IPC.Core
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
+ | 类型 | 说明 |
+ | -------- | -------------- |
| number[] | 返回字节数组。 |
+**异常:**
+
+ | 错误码 | 说明 |
+ | ------------------------------------- | --------------------------- |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
+ | READ_DATA_FROM_MESSAGE_SEQUENCE_ERROR | 读取MessageSequence数据失败 |
+
**示例:**
```
- let data = rpc.MessageParcel.create();
+ let data = rpc.MessageSequence.create();
let ByteArrayVar = [1, 2, 3, 4, 5];
- let result = data.writeByteArray(ByteArrayVar);
- console.log("RpcClient: writeByteArray is " + result);
- let array = data.readByteArray();
- console.log("RpcClient: readByteArray is " + array);
+ try {
+ data.writeByteArray(ByteArrayVar);
+ console.log("RpcClient: readByteArray is " + array);
+ } catch(error) {
+ console.info("rpc write byteArray fail, errorCode " + error.code);
+ console.info("rpc write byteArray fail, errorMessage" + error.message);
+ }
+ try {
+ let array = data.readByteArray();
+ } catch(error) {
+ console.info("rpc read byteArray fail, errorCode " + error.code);
+ console.info("rpc read byteArray fail, errorMessage" + error.message);
+ }
```
-
### writeShortArray
-writeShortArray(shortArray: number[]): boolean
+writeShortArray(shortArray: number[]): void
-将短整数数组写入MessageParcel实例。
+将短整数数组写入MessageSequence实例。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | shortArray | number[] | 是 | 要写入的短整数数组。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ---------- | -------- | ---- | -------------------- |
+ | shortArray | number[] | 是 | 要写入的短整数数组。 |
-**返回值:**
+**异常:**
- | 类型 | 说明 |
- | -------- | -------- |
- | boolean | 写入返回true,否则返回false。 |
+ | 错误码 | 说明 |
+ | ------------------------------------ | ----------------------- |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
+ | WRITE_DATA_TO_MESSAGE_SEQUENCE_ERROR | 写入MessageSequence失败 |
**示例:**
```
- let data = rpc.MessageParcel.create();
- let result = data.writeShortArray([11, 12, 13]);
- console.log("RpcClient: writeShortArray is " + result);
+ let data = rpc.MessageSequence.create();
+ try {
+ data.writeShortArray([11, 12, 13]);
+ } catch(error) {
+ console.info("rpc read byteArray fail, errorCode " + error.code);
+ console.info("rpc read byteArray fail, errorMessage" + error.message);
+ }
```
-
### readShortArray
readShortArray(dataIn: number[]) : void
-从MessageParcel实例中读取短整数数组。
+从MessageSequence实例中读取短整数数组。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | dataIn | number[] | 是 | 要读取的短整数数组。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | -------- | ---- | -------------------- |
+ | dataIn | number[] | 是 | 要读取的短整数数组。 |
+
+**异常:**
+
+ | 错误码 | 说明 |
+ | ------------------------------------- | --------------------------- |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
+ | READ_DATA_FROM_MESSAGE_SEQUENCE_ERROR | 读取MessageSequence数据失败 |
**示例:**
```
- let data = rpc.MessageParcel.create();
- let result = data.writeShortArray([11, 12, 13]);
- console.log("RpcClient: writeShortArray is " + result);
- let array = new Array(3);
- data.readShortArray(array);
+ let data = rpc.MessageSequence.create();
+ try {
+ data.writeShortArray([11, 12, 13]);
+ } catch(error) {
+ console.info("rpc write shortArray fail, errorCode " + error.code);
+ console.info("rpc write shortArray fail, errorMessage" + error.message);
+ }
+ try {
+ let array = new Array(3);
+ data.readShortArray(array);
+ } catch(error) {
+ console.info("rpc read shortArray fail, errorCode " + error.code);
+ console.info("rpc read shortArray fail, errorMessage" + error.message);
+ }
```
-
### readShortArray
readShortArray(): number[]
-从MessageParcel实例中读取短整数数组。
+从MessageSequence实例中读取短整数数组。
**系统能力**:SystemCapability.Communication.IPC.Core
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
+ | 类型 | 说明 |
+ | -------- | ---------------- |
| number[] | 返回短整数数组。 |
+**异常:**
+
+ | 错误码 | 说明 |
+ | ------------------------------------- | --------------------------- |
+ | READ_DATA_FROM_MESSAGE_SEQUENCE_ERROR | 读取MessageSequence数据失败 |
+
**示例:**
```
- let data = rpc.MessageParcel.create();
- let result = data.writeShortArray([11, 12, 13]);
- console.log("RpcClient: writeShortArray is " + result);
- let array = data.readShortArray();
- console.log("RpcClient: readShortArray is " + array);
+ let data = rpc.MessageSequence.create();
+ try {
+ data.writeShortArray([11, 12, 13]);
+ } catch(error) {
+ console.info("rpc write shortArray fail, errorCode " + error.code);
+ console.info("rpc write shortArray fail, errorMessage" + error.message);
+ }
+ try {
+ let array = data.readShortArray();
+ console.log("RpcClient: readShortArray is " + array);
+ } catch(error) {
+ console.info("rpc read shortArray fail, errorCode " + error.code);
+ console.info("rpc read shortArray fail, errorMessage" + error.message);
+ }
```
-
### writeIntArray
-writeIntArray(intArray: number[]): boolean
+writeIntArray(intArray: number[]): void
-将整数数组写入MessageParcel实例。
+将整数数组写入MessageSequence实例。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | intArray | number[] | 是 | 要写入的整数数组。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | -------- | -------- | ---- | ------------------ |
+ | intArray | number[] | 是 | 要写入的整数数组。 |
-**返回值:**
+**异常:**
- | 类型 | 说明 |
- | -------- | -------- |
- | boolean | 写入返回true,否则返回false。 |
+ | 错误码 | 说明 |
+ | ------------------------------------ | ----------------------- |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
+ | WRITE_DATA_TO_MESSAGE_SEQUENCE_ERROR | 写入MessageSequence失败 |
**示例:**
```
- let data = rpc.MessageParcel.create();
- let result = data.writeIntArray([100, 111, 112]);
- console.log("RpcClient: writeIntArray is " + result);
+ let data = rpc.MessageSequence.create();
+ try {
+ data.writeIntArray([100, 111, 112]);
+ } catch(error) {
+ console.info("rpc write intArray fail, errorCode " + error.code);
+ console.info("rpc write intArray fail, errorMessage" + error.message);
+ }
```
-
### readIntArray
readIntArray(dataIn: number[]) : void
-从MessageParcel实例中读取整数数组。
+从MessageSequence实例中读取整数数组。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | dataIn | number[] | 是 | 要读取的整数数组。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | -------- | ---- | ------------------ |
+ | dataIn | number[] | 是 | 要读取的整数数组。 |
+
+**异常:**
+
+ | 错误码 | 说明 |
+ | ------------------------------------- | --------------------------- |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
+ | READ_DATA_FROM_MESSAGE_SEQUENCE_ERROR | 读取MessageSequence数据失败 |
**示例:**
```
- let data = rpc.MessageParcel.create();
- let result = data.writeIntArray([100, 111, 112]);
- console.log("RpcClient: writeIntArray is " + result);
+ let data = rpc.MessageSequence.create();
+ try {
+ data.writeIntArray([100, 111, 112]);
+ } catch(error) {
+ console.info("rpc write intArray fail, errorCode " + error.code);
+ console.info("rpc write intArray fail, errorMessage" + error.message);
+ }
let array = new Array(3);
- data.readIntArray(array);
+ try {
+ data.readIntArray(array);
+ } catch(error) {
+ console.info("rpc read intArray fail, errorCode " + error.code);
+ console.info("rpc read intArray fail, errorMessage" + error.message);
+ }
```
-
### readIntArray
readIntArray(): number[]
-从MessageParcel实例中读取整数数组。
+从MessageSequence实例中读取整数数组。
**系统能力**:SystemCapability.Communication.IPC.Core
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
+ | 类型 | 说明 |
+ | -------- | -------------- |
| number[] | 返回整数数组。 |
+**异常:**
+
+ | 错误码 | 说明 |
+ | ------------------------------------- | --------------------------- |
+ | READ_DATA_FROM_MESSAGE_SEQUENCE_ERROR | 读取MessageSequence数据失败 |
+
**示例:**
```
- let data = rpc.MessageParcel.create();
- let result = data.writeIntArray([100, 111, 112]);
- console.log("RpcClient: writeIntArray is " + result);
- let array = data.readIntArray();
- console.log("RpcClient: readIntArray is " + array);
+ let data = rpc.MessageSequence.create();
+ try {
+ data.writeIntArray([100, 111, 112]);
+ } catch(error) {
+ console.info("rpc write intArray fail, errorCode " + error.code);
+ console.info("rpc write intArray fail, errorMessage" + error.message);
+ }
+ try {
+ let array = data.readIntArray();
+ console.log("RpcClient: readIntArray is " + array);
+ } catch(error) {
+ console.info("rpc read intArray fail, errorCode " + error.code);
+ console.info("rpc read intArray fail, errorMessage" + error.message);
+ }
```
-
### writeLongArray
-writeLongArray(longArray: number[]): boolean
+writeLongArray(longArray: number[]): void
-将长整数数组写入MessageParcel实例。
+将长整数数组写入MessageSequence实例。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | longArray | number[] | 是 | 要写入的长整数数组。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | --------- | -------- | ---- | -------------------- |
+ | longArray | number[] | 是 | 要写入的长整数数组。 |
-**返回值:**
+**异常:**
- | 类型 | 说明 |
- | -------- | -------- |
- | boolean | 写入返回true,否则返回false。 |
+ | 错误码 | 说明 |
+ | ------------------------------------ | ----------------------- |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
+ | WRITE_DATA_TO_MESSAGE_SEQUENCE_ERROR | 写入MessageSequence失败 |
**示例:**
```
- let data = rpc.MessageParcel.create();
- let result = data.writeLongArray([1111, 1112, 1113]);
- console.log("RpcClient: writeLongArray is " + result);
+ let data = rpc.MessageSequence.create();
+ try {
+ data.writeLongArray([1111, 1112, 1113]);
+ }cathc(error){
+ console.info("rpc write longArray fail, errorCode " + error.code);
+ console.info("rpc write longArray fail, errorMessage" + error.message);
+ }
```
-
### readLongArray
readLongArray(dataIn: number[]) : void
-从MessageParcel实例读取长整数数组。
+从MessageSequence实例读取长整数数组。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | dataIn | number[] | 是 | 要读取的长整数数组。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | -------- | ---- | -------------------- |
+ | dataIn | number[] | 是 | 要读取的长整数数组。 |
+
+**异常:**
+
+ | 错误码 | 说明 |
+ | ------------------------------------- | --------------------------- |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
+ | READ_DATA_FROM_MESSAGE_SEQUENCE_ERROR | 读取MessageSequence数据失败 |
**示例:**
```
- let data = rpc.MessageParcel.create();
- let result = data.writeLongArray([1111, 1112, 1113]);
- console.log("RpcClient: writeLongArray is " + result);
+ let data = rpc.MessageSequence.create();
+ try {
+ data.writeLongArray([1111, 1112, 1113]);
+ } catch(error) {
+ console.info("rpc write longArray fail, errorCode " + error.code);
+ console.info("rpc write longArray fail, errorMessage" + error.message);
+ }
let array = new Array(3);
- data.readLongArray(array);
+ try {
+ data.readLongArray(array);
+ } catch(error) {
+ console.info("rpc read longArray fail, errorCode " + error.code);
+ console.info("rpc read longArray fail, errorMessage" + error.message);
+ }
```
-
### readLongArray
readLongArray(): number[]
-从MessageParcel实例中读取长整数数组。
+从MessageSequence实例中读取长整数数组。
**系统能力**:SystemCapability.Communication.IPC.Core
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
+ | 类型 | 说明 |
+ | -------- | ---------------- |
| number[] | 返回长整数数组。 |
+**异常:**
+
+ | 错误码 | 说明 |
+ | ------------------------------------- | --------------------------- |
+ | READ_DATA_FROM_MESSAGE_SEQUENCE_ERROR | 读取MessageSequence数据失败 |
+
**示例:**
```
- let data = rpc.MessageParcel.create();
- let result = data.writeLongArray([1111, 1112, 1113]);
- console.log("RpcClient: writeLongArray is " + result);
- let array = data.readLongArray();
- console.log("RpcClient: readLongArray is " + array);
+ let data = rpc.MessageSequence.create();
+ try {
+ data.writeLongArray([1111, 1112, 1113]);
+ } catch(error) {
+ console.info("rpc write longArray fail, errorCode " + error.code);
+ console.info("rpc write longArray fail, errorMessage" + error.message);
+ }
+ try {
+ let array = data.readLongArray();
+ console.log("RpcClient: readLongArray is " + array);
+ } catch(error) {
+ console.info("rpc read longArray fail, errorCode " + error.code);
+ console.info("rpc read longArray fail, errorMessage" + error.message);
+ }
```
-
### writeFloatArray
-writeFloatArray(floatArray: number[]): boolean
+writeFloatArray(floatArray: number[]): void
-将浮点数组写入MessageParcel实例。
+将浮点数组写入MessageSequence实例。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | floatArray | number[] | 是 | 要写入的浮点数组。由于系统内部对float类型的数据是按照double处理的,使用时对于数组所占的总字节数应按照double类型来计算。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ---------- | -------- | ---- | ----------------------------------------------------------------------------------------------------------------------- |
+ | floatArray | number[] | 是 | 要写入的浮点数组。由于系统内部对float类型的数据是按照double处理的,使用时对于数组所占的总字节数应按照double类型来计算。 |
-**返回值:**
+**异常:**
- | 类型 | 说明 |
- | -------- | -------- |
- | boolean | 写入返回true,否则返回false。 |
+ | 错误码 | 说明 |
+ | ------------------------------------ | ----------------------- |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
+ | WRITE_DATA_TO_MESSAGE_SEQUENCE_ERROR | 写入MessageSequence失败 |
**示例:**
```
- let data = rpc.MessageParcel.create();
- let result = data.writeFloatArray([1.2, 1.3, 1.4]);
- console.log("RpcClient: writeFloatArray is " + result);
+ let data = rpc.MessageSequence.create();
+ try {
+ data.writeFloatArray([1.2, 1.3, 1.4]);
+ } catch(error) {
+ console.info("rpc write floatArray fail, errorCode " + error.code);
+ console.info("rpc write floatArray fail, errorMessage" + error.message);
+ }
```
-
### readFloatArray
readFloatArray(dataIn: number[]) : void
-从MessageParcel实例中读取浮点数组。
+从MessageSequence实例中读取浮点数组。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | dataIn | number[] | 是 | 要读取的浮点数组。由于系统内部对float类型的数据是按照double处理的,使用时对于数组所占的总字节数应按照double类型来计算。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | -------- | ---- | ----------------------------------------------------------------------------------------------------------------------- |
+ | dataIn | number[] | 是 | 要读取的浮点数组。由于系统内部对float类型的数据是按照double处理的,使用时对于数组所占的总字节数应按照double类型来计算。 |
+
+**异常:**
+ | 错误码 | 说明 |
+ | ------------------------------------- | --------------------------- |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
+ | READ_DATA_FROM_MESSAGE_SEQUENCE_ERROR | 读取MessageSequence数据失败 |
**示例:**
```
- let data = rpc.MessageParcel.create();
- let result = data.writeFloatArray([1.2, 1.3, 1.4]);
- console.log("RpcClient: writeFloatArray is " + result);
+ let data = rpc.MessageSequence.create();
+ try {
+ data.writeFloatArray([1.2, 1.3, 1.4]);
+ }cath(error){
+ console.info("rpc write floatArray fail, errorCode " + error.code);
+ console.info("rpc write floatArray fail, errorMessage" + error.message);
+ }
let array = new Array(3);
- data.readFloatArray(array);
+ try {
+ data.readFloatArray(array);
+ } catch(error) {
+ console.info("rpc read floatArray fail, errorCode " + error.code);
+ console.info("rpc read floatArray fail, errorMessage" + error.message);
+ }
```
-
### readFloatArray
readFloatArray(): number[]
-从MessageParcel实例中读取浮点数组。
+从MessageSequence实例中读取浮点数组。
**系统能力**:SystemCapability.Communication.IPC.Core
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
+ | 类型 | 说明 |
+ | -------- | -------------- |
| number[] | 返回浮点数组。 |
+**异常:**
+
+ | 错误码 | 说明 |
+ | ------------------------------------- | --------------------------- |
+ | READ_DATA_FROM_MESSAGE_SEQUENCE_ERROR | 读取MessageSequence数据失败 |
+
**示例:**
```
- let data = rpc.MessageParcel.create();
- let result = data.writeFloatArray([1.2, 1.3, 1.4]);
- console.log("RpcClient: writeFloatArray is " + result);
- let array = data.readFloatArray();
- console.log("RpcClient: readFloatArray is " + array);
+ let data = rpc.MessageSequence.create();
+ try {
+ data.writeFloatArray([1.2, 1.3, 1.4]);
+ } catch(error) {
+ console.info("rpc write floatArray fail, errorCode " + error.code);
+ console.info("rpc write floatArray fail, errorMessage" + error.message);
+ }
+ try {
+ let array = data.readFloatArray();
+ console.log("RpcClient: readFloatArray is " + array);
+ } catch(error) {
+ console.info("rpc read floatArray fail, errorCode " + error.code);
+ console.info("rpc read floatArray fail, errorMessage" + error.message);
+ }
```
-
### writeDoubleArray
-writeDoubleArray(doubleArray: number[]): boolean
+writeDoubleArray(doubleArray: number[]): void
-将双精度浮点数组写入MessageParcel实例。
+将双精度浮点数组写入MessageSequence实例。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | doubleArray | number[] | 是 | 要写入的双精度浮点数组。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ----------- | -------- | ---- | ------------------------ |
+ | doubleArray | number[] | 是 | 要写入的双精度浮点数组。 |
-**返回值:**
+**异常:**
- | 类型 | 说明 |
- | -------- | -------- |
- | boolean | 写入返回true,否则返回false。 |
+ | 错误码 | 说明 |
+ | ------------------------------------ | ----------------------- |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
+ | WRITE_DATA_TO_MESSAGE_SEQUENCE_ERROR | 写入MessageSequence失败 |
**示例:**
```
- let data = rpc.MessageParcel.create();
- let result = data.writeDoubleArray([11.1, 12.2, 13.3]);
- console.log("RpcClient: writeDoubleArray is " + result);
+ let data = rpc.MessageSequence.create();
+ try {
+ data.writeDoubleArray([11.1, 12.2, 13.3]);
+ } catch(error) {
+ console.info("rpc write doubleArray fail, errorCode " + error.code);
+ console.info("rpc write doubleArray fail, errorMessage" + error.message);
+ }
```
-
### readDoubleArray
readDoubleArray(dataIn: number[]) : void
-从MessageParcel实例中读取双精度浮点数组。
+从MessageSequence实例中读取双精度浮点数组。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | dataIn | number[] | 是 | 要读取的双精度浮点数组。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | -------- | ---- | ------------------------ |
+ | dataIn | number[] | 是 | 要读取的双精度浮点数组。 |
+
+**异常:**
+
+ | 错误码 | 说明 |
+ | ------------------------------------- | --------------------------- |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
+ | READ_DATA_FROM_MESSAGE_SEQUENCE_ERROR | 读取MessageSequence数据失败 |
**示例:**
```
- let data = rpc.MessageParcel.create();
- let result = data.writeDoubleArray([11.1, 12.2, 13.3]);
- console.log("RpcClient: writeDoubleArray is " + result);
+ let data = rpc.MessageSequence.create();
+ try {
+ data.writeDoubleArray([11.1, 12.2, 13.3]);
+ } catch(error) {
+ console.info("rpc write doubleArray fail, errorCode " + error.code);
+ console.info("rpc write doubleArray fail, errorMessage" + error.message);
+ }
let array = new Array(3);
- data.readDoubleArray(array);
+ try {
+ data.readDoubleArray(array);
+ } catch(error) {
+ console.info("rpc read doubleArray fail, errorCode " + error.code);
+ console.info("rpc read doubleArray fail, errorMessage" + error.message);
+ }
```
-
### readDoubleArray
readDoubleArray(): number[]
-从MessageParcel实例读取双精度浮点数组。
+从MessageSequence实例读取双精度浮点数组。
**系统能力**:SystemCapability.Communication.IPC.Core
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
+ | 类型 | 说明 |
+ | -------- | -------------------- |
| number[] | 返回双精度浮点数组。 |
+**异常:**
+
+ | 错误码 | 说明 |
+ | ------------------------------------- | --------------------------- |
+ | READ_DATA_FROM_MESSAGE_SEQUENCE_ERROR | 读取MessageSequence数据失败 |
+
**示例:**
```
- let data = rpc.MessageParcel.create();
- let result = data.writeDoubleArray([11.1, 12.2, 13.3]);
- console.log("RpcClient: writeDoubleArray is " + result);
- let array = data.readDoubleArray();
- console.log("RpcClient: readDoubleArray is " + array);
+ let data = rpc.MessageSequence.create();
+ try {
+ data.writeDoubleArray([11.1, 12.2, 13.3]);
+ } catch(error) {
+ console.info("rpc write doubleArray fail, errorCode " + error.code);
+ console.info("rpc write doubleArray fail, errorMessage" + error.message);
+ }
+ try {
+ let array = data.readDoubleArray();
+ console.log("RpcClient: readDoubleArray is " + array);
+ } catch(error) {
+ console.info("rpc read doubleArray fail, errorCode " + error.code);
+ console.info("rpc read doubleArray fail, errorMessage" + error.message);
+ }
```
-
### writeBooleanArray
-writeBooleanArray(booleanArray: boolean[]): boolean
+writeBooleanArray(booleanArray: boolean[]): void
-将布尔数组写入MessageParcel实例。
+将布尔数组写入MessageSequence实例。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | booleanArray | boolean[] | 是 | 要写入的布尔数组。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------------ | --------- | ---- | ------------------ |
+ | booleanArray | boolean[] | 是 | 要写入的布尔数组。 |
-**返回值:**
+**异常:**
- | 类型 | 说明 |
- | -------- | -------- |
- | boolean | 写入成功返回true,否则返回false。 |
+ | 错误码 | 说明 |
+ | ------------------------------------ | ----------------------- |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
+ | WRITE_DATA_TO_MESSAGE_SEQUENCE_ERROR | 写入MessageSequence失败 |
**示例:**
```
- let data = rpc.MessageParcel.create();
- let result = data.writeBooleanArray([false, true, false]);
- console.log("RpcClient: writeBooleanArray is " + result);
+ let data = rpc.MessageSequence.create();
+ try {
+ data.writeBooleanArray([false, true, false]);
+ } catch(error) {
+ console.info("rpc write booleanArray fail, errorCode " + error.code);
+ console.info("rpc write booleanArray fail, errorMessage" + error.message);
+ }
```
-
### readBooleanArray
readBooleanArray(dataIn: boolean[]) : void
-从MessageParcel实例中读取布尔数组。
+从MessageSequence实例中读取布尔数组。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | dataIn | boolean[] | 是 | 要读取的布尔数组。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | --------- | ---- | ------------------ |
+ | dataIn | boolean[] | 是 | 要读取的布尔数组。 |
+
+**异常:**
+
+ | 错误码 | 说明 |
+ | ------------------------------------- | --------------------------- |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
+ | READ_DATA_FROM_MESSAGE_SEQUENCE_ERROR | 读取MessageSequence数据失败 |
**示例:**
```
- let data = rpc.MessageParcel.create();
- let result = data.writeBooleanArray([false, true, false]);
- console.log("RpcClient: writeBooleanArray is " + result);
+ let data = rpc.MessageSequence.create();
+ try {
+ data.writeBooleanArray([false, true, false]);
+ } catch(error) {
+ console.info("rpc write booleanArray fail, errorCode " + error.code);
+ console.info("rpc write booleanArray fail, errorMessage" + error.message);
+ }
let array = new Array(3);
- data.readBooleanArray(array);
+ try {
+ data.readBooleanArray(array);
+ } catch(error) {
+ console.info("rpc read booleanArray fail, errorCode " + error.code);
+ console.info("rpc read booleanArray fail, errorMessage" + error.message);
+ }
```
-
### readBooleanArray
readBooleanArray(): boolean[]
-从MessageParcel实例中读取布尔数组。
+从MessageSequence实例中读取布尔数组。
**系统能力**:SystemCapability.Communication.IPC.Core
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
+ | 类型 | 说明 |
+ | --------- | -------------- |
| boolean[] | 返回布尔数组。 |
+**异常:**
+
+ | 错误码 | 说明 |
+ | ------------------------------------- | --------------------------- |
+ | READ_DATA_FROM_MESSAGE_SEQUENCE_ERROR | 读取MessageSequence数据失败 |
+
+**示例:**
```
- let data = rpc.MessageParcel.create();
- let result = data.writeBooleanArray([false, true, false]);
- console.log("RpcClient: writeBooleanArray is " + result);
- let array = data.readBooleanArray();
- console.log("RpcClient: readBooleanArray is " + array);
+ let data = rpc.MessageSequence.create();
+ try {
+ data.writeBooleanArray([false, true, false]);
+ } catch(error) {
+ console.info("rpc write booleanArray fail, errorCode " + error.code);
+ console.info("rpc write booleanArray fail, errorMessage" + error.message);
+ }
+ try {
+ let array = data.readBooleanArray();
+ console.log("RpcClient: readBooleanArray is " + array);
+ } catch(error) {
+ console.info("rpc read booleanArray fail, errorCode " + error.code);
+ console.info("rpc read booleanArray fail, errorMessage" + error.message);
+ }
```
-
### writeCharArray
-writeCharArray(charArray: number[]): boolean
+writeCharArray(charArray: number[]): void
-将单个字符数组写入MessageParcel实例。
+将单个字符数组写入MessageSequence实例。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | charArray | number[] | 是 | 要写入的单个字符数组。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | --------- | -------- | ---- | ---------------------- |
+ | charArray | number[] | 是 | 要写入的单个字符数组。 |
-**返回值:**
+**异常:**
- | 类型 | 说明 |
- | -------- | -------- |
- | boolean | 写入成功返回true,否则返回false。 |
+ | 错误码 | 说明 |
+ | ------------------------------------ | ----------------------- |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
+ | WRITE_DATA_TO_MESSAGE_SEQUENCE_ERROR | 写入MessageSequence失败 |
**示例:**
```
- let data = rpc.MessageParcel.create();
- let result = data.writeCharArray([97, 98, 88]);
- console.log("RpcClient: writeCharArray is " + result);
+ let data = rpc.MessageSequence.create();
+ try {
+ data.writeCharArray([97, 98, 88]);
+ } catch(error) {
+ console.info("rpc write charArray fail, errorCode " + error.code);
+ console.info("rpc write charArray fail, errorMessage" + error.message);
+ }
```
-
### readCharArray
readCharArray(dataIn: number[]) : void
-从MessageParcel实例中读取单个字符数组。
+从MessageSequence实例中读取单个字符数组。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | dataIn | number[] | 是 | 要读取的单个字符数组。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | -------- | ---- | ---------------------- |
+ | dataIn | number[] | 是 | 要读取的单个字符数组。 |
+
+**异常:**
+
+ | 错误码 | 说明 |
+ | ------------------------------------- | --------------------------- |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
+ | READ_DATA_FROM_MESSAGE_SEQUENCE_ERROR | 读取MessageSequence数据失败 |
**示例:**
```
- let data = rpc.MessageParcel.create();
- let result = data.writeCharArray([97, 98, 99]);
- console.log("RpcClient: writeCharArray is " + result);
+ let data = rpc.MessageSequence.create();
+ try {
+ data.writeCharArray([97, 98, 88]);
+ } catch(error) {
+ console.info("rpc write charArray fail, errorCode " + error.code);
+ console.info("rpc write charArray fail, errorMessage" + error.message);
+ }
let array = new Array(3);
- data.readCharArray(array);
+ try {
+ data.readCharArray(array);
+ } catch(error) {
+ console.info("rpc read charArray fail, errorCode " + error.code);
+ console.info("rpc read charArray fail, errorMessage" + error.message);
+ }
```
-
### readCharArray
readCharArray(): number[]
-从MessageParcel实例读取单个字符数组。
+从MessageSequence实例读取单个字符数组。
**系统能力**:SystemCapability.Communication.IPC.Core
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
+ | 类型 | 说明 |
+ | -------- | ------------------ |
| number[] | 返回单个字符数组。 |
+**异常:**
+
+ | 错误码 | 说明 |
+ | ------------------------------------- | --------------------------- |
+ | READ_DATA_FROM_MESSAGE_SEQUENCE_ERROR | 读取MessageSequence数据失败 |
+
**示例:**
```
- let data = rpc.MessageParcel.create();
- let result = data.writeCharArray([97, 98, 99]);
- console.log("RpcClient: writeCharArray is " + result);
- let array = data.readCharArray();
- console.log("RpcClient: readCharArray is " + array);
+ let data = rpc.MessageSequence.create();
+ try {
+ data.writeCharArray([97, 98, 88]);
+ } catch(error) {
+ console.info("rpc write charArray fail, errorCode " + error.code);
+ console.info("rpc write charArray fail, errorMessage" + error.message);
+ }
+ let array = new Array(3);
+ try {
+ let array = data.readCharArray();
+ console.log("RpcClient: readCharArray is " + array);
+ } catch(error) {
+ console.info("rpc read charArray fail, errorCode " + error.code);
+ console.info("rpc read charArray fail, errorMessage" + error.message);
+ }
```
-
### writeStringArray
-writeStringArray(stringArray: string[]): boolean
+writeStringArray(stringArray: string[]): void
-将字符串数组写入MessageParcel实例。
+将字符串数组写入MessageSequence实例。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | stringArray | string[] | 是 | 要写入的字符串数组,数组单个元素的长度应小于40960字节。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ----------- | -------- | ---- | ------------------------------------------------------- |
+ | stringArray | string[] | 是 | 要写入的字符串数组,数组单个元素的长度应小于40960字节。 |
-**返回值:**
+**异常:**
- | 类型 | 说明 |
- | -------- | -------- |
- | boolean | 写入成功返回true,否则返回false。 |
+ | 错误码 | 说明 |
+ | ------------------------------------ | ----------------------- |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
+ | WRITE_DATA_TO_MESSAGE_SEQUENCE_ERROR | 写入MessageSequence失败 |
**示例:**
```
- let data = rpc.MessageParcel.create();
- let result = data.writeStringArray(["abc", "def"]);
- console.log("RpcClient: writeStringArray is " + result);
+ let data = rpc.MessageSequence.create();
+ try {
+ data.writeStringArray(["abc", "def"]);
+ } catch(error) {
+ console.info("rpc write stringArray fail, errorCode " + error.code);
+ console.info("rpc write stringArray fail, errorMessage" + error.message);
+ }
```
-
### readStringArray
readStringArray(dataIn: string[]) : void
-从MessageParcel实例读取字符串数组。
+从MessageSequence实例读取字符串数组。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | dataIn | string[] | 是 | 要读取的字符串数组。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | -------- | ---- | -------------------- |
+ | dataIn | string[] | 是 | 要读取的字符串数组。 |
+
+**异常:**
+
+ | 错误码 | 说明 |
+ | ------------------------------------- | --------------------------- |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
+ | READ_DATA_FROM_MESSAGE_SEQUENCE_ERROR | 读取MessageSequence数据失败 |
**示例:**
```
- let data = rpc.MessageParcel.create();
- let result = data.writeStringArray(["abc", "def"]);
- console.log("RpcClient: writeStringArray is " + result);
+ let data = rpc.MessageSequence.create();
+ try {
+ data.writeStringArray(["abc", "def"]);
+ } catch(error) {
+ console.info("rpc write stringArray fail, errorCode " + error.code);
+ console.info("rpc write stringArray fail, errorMessage" + error.message);
+ }
let array = new Array(2);
- data.readStringArray(array);
+ try {
+ data.readStringArray(array);
+ } catch(error) {
+ console.info("rpc read stringArray fail, errorCode " + error.code);
+ console.info("rpc read stringArray fail, errorMessage" + error.message);
+ }
```
-
### readStringArray
readStringArray(): string[]
-从MessageParcel实例读取字符串数组。
+从MessageSequence实例读取字符串数组。
**系统能力**:SystemCapability.Communication.IPC.Core
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
+ | 类型 | 说明 |
+ | -------- | ---------------- |
| string[] | 返回字符串数组。 |
+**异常:**
+
+ | 错误码 | 说明 |
+ | ------------------------------------- | --------------------------- |
+ | READ_DATA_FROM_MESSAGE_SEQUENCE_ERROR | 读取MessageSequence数据失败 |
+
**示例:**
```
- let data = rpc.MessageParcel.create();
- let result = data.writeStringArray(["abc", "def"]);
- console.log("RpcClient: writeStringArray is " + result);
- let array = data.readStringArray();
- console.log("RpcClient: readStringArray is " + array);
+ let data = rpc.MessageSequence.create();
+ try {
+ data.writeStringArray(["abc", "def"]);
+ } catch(error) {
+ console.info("rpc write stringArray fail, errorCode " + error.code);
+ console.info("rpc write stringArray fail, errorMessage" + error.message);
+ }
+ try {
+ let array = data.readStringArray();
+ console.log("RpcClient: readStringArray is " + array);
+ } catch(error) {
+ console.info("rpc read stringArray fail, errorCode " + error.code);
+ console.info("rpc read stringArray fail, errorMessage" + error.message);
+ }
```
-
-### writeNoException8+
+### writeNoException
writeNoException(): void
-向MessageParcel写入“指示未发生异常”的信息。
+向MessageSequence写入“指示未发生异常”的信息。
**系统能力**:SystemCapability.Communication.IPC.Core
+**异常:**
+
+ | 错误码 | 说明 |
+ | ------------------------------------ | ----------------------- |
+ | WRITE_DATA_TO_MESSAGE_SEQUENCE_ERROR | 写入MessageSequence失败 |
+
**示例:**
```
@@ -1794,19 +2276,20 @@ writeNoException(): void
constructor(descriptor) {
super(descriptor);
}
- addDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
- return true;
- }
- removeDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
- return true;
- }
+ registerDeathRecipient(recipient: MyDeathRecipient, flags: number);
+ unregisterDeathRecipient(recipient: MyDeathRecipient, flags: number);
isObjectDead(): boolean {
return false;
}
onRemoteRequest(code, data, reply, option) {
if (code === 1) {
console.log("RpcServer: onRemoteRequest called");
- reply.writeNoException();
+ try {
+ reply.writeNoException();
+ } catch(error) {
+ console.info("rpc write no exception fail, errorCode " + error.code);
+ console.info("rpc write no exception fail, errorMessage" + error.message);
+ }
return true;
} else {
console.log("RpcServer: unknown code: " + code);
@@ -1816,15 +2299,20 @@ writeNoException(): void
}
```
-
-### readException8+
+### readException
readException(): void
-从MessageParcel中读取异常。
+从MessageSequence中读取异常。
**系统能力**:SystemCapability.Communication.IPC.Core
+**异常:**
+
+ | 错误码 | 说明 |
+ | ------------------------------------- | --------------------------- |
+ | READ_DATA_FROM_MESSAGE_SEQUENCE_ERROR | 读取MessageSequence数据失败 |
+
**示例:**
```
@@ -1848,15 +2336,20 @@ readException(): void
};
FA.connectAbility(want, connect);
let option = new rpc.MessageOption();
- let data = rpc.MessageParcel.create();
- let reply = rpc.MessageParcel.create();
+ let data = rpc.MessageSequence.create();
+ let reply = rpc.MessageSequence.create();
data.writeInt(1);
data.writeString("hello");
proxy.sendRequestAsync(1, data, reply, option)
.then(function(errCode) {
if (errCode === 0) {
console.log("sendRequestAsync got result");
- reply.readException();
+ try {
+ reply.readException();
+ } catch(error) {
+ console.info("rpc read exception fail, errorCode " + error.code);
+ console.info("rpc read no exception fail, errorMessage" + error.message);
+ }
let msg = reply.readString();
console.log("RPCTest: reply msg: " + msg);
} else {
@@ -1871,124 +2364,140 @@ readException(): void
});
```
+### writeParcelableArray
-### writeSequenceableArray
-
-writeSequenceableArray(sequenceableArray: Sequenceable[]): boolean
+writeParcelableArray(parcelableArray: Parcelable[]): void
-将可序列化对象数组写入MessageParcel实例。
+将可序列化对象数组写入MessageSequence实例。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | sequenceableArray | Sequenceable[] | 是 | 要写入的可序列化对象数组。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | --------------- | ------------ | ---- | -------------------------- |
+ | parcelableArray | Parcelable[] | 是 | 要写入的可序列化对象数组。 |
-**返回值:**
+**异常:**
- | 类型 | 说明 |
- | -------- | -------- |
- | boolean | 写入成功返回true,否则返回false。 |
+ | 错误码 | 说明 |
+ | ------------------------------------ | ----------------------- |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
+ | WRITE_DATA_TO_MESSAGE_SEQUENCE_ERROR | 写入MessageSequence失败 |
**示例:**
```
- class MySequenceable {
+ class MyParcelable {
num: number;
str: string;
constructor(num, str) {
this.num = num;
this.str = str;
}
- marshalling(messageParcel) {
- messageParcel.writeInt(this.num);
- messageParcel.writeString(this.str);
+ marshalling(messageSequence) {
+ messageSequence.writeInt(this.num);
+ messageSequence.writeString(this.str);
return true;
}
- unmarshalling(messageParcel) {
- this.num = messageParcel.readInt();
- this.str = messageParcel.readString();
+ unmarshalling(messageSequence) {
+ this.num = messageSequence.readInt();
+ this.str = messageSequence.readString();
return true;
}
}
- let sequenceable = new MySequenceable(1, "aaa");
- let sequenceable2 = new MySequenceable(2, "bbb");
- let sequenceable3 = new MySequenceable(3, "ccc");
- let a = [sequenceable, sequenceable2, sequenceable3];
- let data = rpc.MessageParcel.create();
- let result = data.writeSequenceableArray(a);
- console.log("RpcClient: writeSequenceableArray is " + result);
+ let parcelable = new MyParcelable(1, "aaa");
+ let parcelable2 = new MyParcelable(2, "bbb");
+ let parcelable3 = new MyParcelable(3, "ccc");
+ let a = [parcelable, parcelable2, parcelable3];
+ let data = rpc.MessageSequence.create();
+ try {
+ data.writeParcelableArray(a);
+ } catch(error) {
+ console.info("rpc write parcelable array fail, errorCode " + error.code);
+ console.info("rpc write parcelable array fail, errorMessage" + error.message);
+ }
```
+### readParcelableArray
-### readSequenceableArray8+
-
-readSequenceableArray(sequenceableArray: Sequenceable[]): void
+readParcelableArray(parcelableArray: Parcelable[]): void
-从MessageParcel实例读取可序列化对象数组。
+从MessageSequence实例读取可序列化对象数组。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | sequenceableArray | Sequenceable[] | 是 | 要读取的可序列化对象数组。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | --------------- | ------------ | ---- | -------------------------- |
+ | parcelableArray | Parcelable[] | 是 | 要读取的可序列化对象数组。 |
+
+**异常:**
+
+ | 错误码 | 说明 |
+ | ------------------------------------- | --------------------------- |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
+ | READ_DATA_FROM_MESSAGE_SEQUENCE_ERROR | 读取MessageSequence数据失败 |
+ | CALL_JS_METHOD_ERROR | 调用JS方法失败 |
**示例:**
```
- class MySequenceable {
+ class MyParcelable {
num: number;
str: string;
constructor(num, str) {
this.num = num;
this.str = str;
}
- marshalling(messageParcel) {
- messageParcel.writeInt(this.num);
- messageParcel.writeString(this.str);
+ marshalling(messageSequence) {
+ messageSequence.writeInt(this.num);
+ messageSequence.writeString(this.str);
return true;
}
- unmarshalling(messageParcel) {
- this.num = messageParcel.readInt();
- this.str = messageParcel.readString();
+ unmarshalling(messageSequence) {
+ this.num = messageSequence.readInt();
+ this.str = messageSequence.readString();
return true;
}
}
- let sequenceable = new MySequenceable(1, "aaa");
- let sequenceable2 = new MySequenceable(2, "bbb");
- let sequenceable3 = new MySequenceable(3, "ccc");
- let a = [sequenceable, sequenceable2, sequenceable3];
- let data = rpc.MessageParcel.create();
- let result = data.writeSequenceableArray(a);
- console.log("RpcClient: writeSequenceableArray is " + result);
- let b = [new MySequenceable(0, ""), new MySequenceable(0, ""), new MySequenceable(0, "")];
- data.readSequenceableArray(b);
+ let parcelable = new MyParcelable(1, "aaa");
+ let parcelable2 = new MyParcelable(2, "bbb");
+ let parcelable3 = new MyParcelable(3, "ccc");
+ let a = [parcelable, parcelable2, parcelable3];
+ let data = rpc.MessageSequence.create();
+ let result = data.writeParcelableArray(a);
+ console.log("RpcClient: writeParcelableArray is " + result);
+ let b = [new MyParcelable(0, ""), new MyParcelable(0, ""), new MyParcelable(0, "")];
+ try {
+ data.readParcelableArray(b);
+ } catch(error) {
+ console.info("rpc read parcelable array fail, errorCode " + error.code);
+ console.info("rpc read parcelable array fail, errorMessage" + error.message);
+ }
+ data.readParcelableArray(b);
```
+### writeRemoteObjectArray
-### writeRemoteObjectArray8+
-
-writeRemoteObjectArray(objectArray: IRemoteObject[]): boolean
+writeRemoteObjectArray(objectArray: IRemoteObject[]): void
-将IRemoteObject对象数组写入MessageParcel。
+将IRemoteObject对象数组写入MessageSequence。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
-
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | objectArray | IRemoteObject[] | 是 | 要写入MessageParcel的IRemoteObject对象数组。 |
+**参数**
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ----------- | --------------- | ---- | ---------------------------------------------- |
+ | objectArray | IRemoteObject[] | 是 | 要写入MessageSequence的IRemoteObject对象数组。 |
-**返回值:**
+**异常:**
- | 类型 | 说明 |
- | -------- | -------- |
- | boolean | 如果IRemoteObject对象数组成功写入MessageParcel,则返回true;如果对象为null或数组写入MessageParcel失败,则返回false。 |
+ | 错误码 | 说明 |
+ | ------------------------------------ | ----------------------- |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
+ | WRITE_DATA_TO_MESSAGE_SEQUENCE_ERROR | 写入MessageSequence失败 |
**示例:**
@@ -2001,14 +2510,10 @@ writeRemoteObjectArray(objectArray: IRemoteObject[]): boolean
class TestRemoteObject extends rpc.RemoteObject {
constructor(descriptor) {
super(descriptor);
- this.attachLocalInterface(this, descriptor);
- }
- addDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
- return true;
- }
- removeDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
- return true;
+ this.modifyLocalInterface(this, descriptor);
}
+ registerDeathRecipient(recipient: MyDeathRecipient, flags: number);
+ unregisterDeathRecipient(recipient: MyDeathRecipient, flags: number);
isObjectDead(): boolean {
return false;
}
@@ -2017,25 +2522,37 @@ writeRemoteObjectArray(objectArray: IRemoteObject[]): boolean
}
}
let a = [new TestRemoteObject("testObject1"), new TestRemoteObject("testObject2"), new TestRemoteObject("testObject3")];
- let data = rpc.MessageParcel.create();
+ let data = rpc.MessageSequence.create();
let result = data.writeRemoteObjectArray(a);
+ try {
+ data.writeRemoteObjectArray(a);
+ } catch(error) {
+ console.info("rpc write remote object array fail, errorCode " + error.code);
+ console.info("rpc write remote object array fail, errorMessage" + error.message);
+ }
console.log("RpcClient: writeRemoteObjectArray is " + result);
```
-
-### readRemoteObjectArray8+
+### readRemoteObjectArray
readRemoteObjectArray(objects: IRemoteObject[]): void
-从MessageParcel读取IRemoteObject对象数组。
+从MessageSequence读取IRemoteObject对象数组。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | objects | IRemoteObject[] | 是 | 从MessageParcel读取的IRemoteObject对象数组。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------- | --------------- | ---- | ---------------------------------------------- |
+ | objects | IRemoteObject[] | 是 | 从MessageSequence读取的IRemoteObject对象数组。 |
+
+**异常:**
+
+ | 错误码 | 说明 |
+ | ------------------------------------- | --------------------------- |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
+ | READ_DATA_FROM_MESSAGE_SEQUENCE_ERROR | 读取MessageSequence数据失败 |
**示例:**
@@ -2048,14 +2565,10 @@ readRemoteObjectArray(objects: IRemoteObject[]): void
class TestRemoteObject extends rpc.RemoteObject {
constructor(descriptor) {
super(descriptor);
- this.attachLocalInterface(this, descriptor);
- }
- addDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
- return true;
- }
- removeDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
- return true;
+ this.modifyLocalInterface(this, descriptor);
}
+ registerDeathRecipient(recipient: MyDeathRecipient, flags: number);
+ unregisterDeathRecipient(recipient: MyDeathRecipient, flags: number);
isObjectDead(): boolean {
return false;
}
@@ -2064,27 +2577,38 @@ readRemoteObjectArray(objects: IRemoteObject[]): void
}
}
let a = [new TestRemoteObject("testObject1"), new TestRemoteObject("testObject2"), new TestRemoteObject("testObject3")];
- let data = rpc.MessageParcel.create();
- let result = data.writeRemoteObjectArray(a);
+ let data = rpc.MessageSequence.create();
+ data.writeRemoteObjectArray(a);
let b = new Array(3);
+ try {
+ data.readRemoteObjectArray(b);
+ } catch(error) {
+ console.info("rpc read remote object array fail, errorCode " + error.code);
+ console.info("rpc read remote object array fail, errorMessage" + error.message);
+ }
data.readRemoteObjectArray(b);
```
-
-### readRemoteObjectArray8+
+### readRemoteObjectArray
readRemoteObjectArray(): IRemoteObject[]
-从MessageParcel读取IRemoteObject对象数组。
+从MessageSequence读取IRemoteObject对象数组。
**系统能力**:SystemCapability.Communication.IPC.Core
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
+ | 类型 | 说明 |
+ | --------------- | --------------------------- |
| IRemoteObject[] | 返回IRemoteObject对象数组。 |
+**异常:**
+
+ | 错误码 | 说明 |
+ | ------------------------------------- | --------------------------- |
+ | READ_DATA_FROM_MESSAGE_SEQUENCE_ERROR | 读取MessageSequence数据失败 |
+
**示例:**
```
@@ -2096,14 +2620,10 @@ readRemoteObjectArray(): IRemoteObject[]
class TestRemoteObject extends rpc.RemoteObject {
constructor(descriptor) {
super(descriptor);
- this.attachLocalInterface(this, descriptor);
- }
- addDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
- return true;
- }
- removeDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
- return true;
+ this.modifyLocalInterface(this, descriptor);
}
+ registerDeathRecipient(recipient: MyDeathRecipient, flags: number);
+ unregisterDeathRecipient(recipient: MyDeathRecipient, flags: number);
isObjectDead(): boolean {
return false;
}
@@ -2112,10 +2632,14 @@ readRemoteObjectArray(): IRemoteObject[]
}
}
let a = [new TestRemoteObject("testObject1"), new TestRemoteObject("testObject2"), new TestRemoteObject("testObject3")];
- let data = rpc.MessageParcel.create();
- let result = data.writeRemoteObjectArray(a);
- console.log("RpcClient: readRemoteObjectArray is " + result);
- let b = data.readRemoteObjectArray();
+ let data = rpc.MessageSequence.create();
+ data.writeRemoteObjectArray(a);
+ try {
+ let b = data.readRemoteObjectArray();
+ } catch(error) {
+ console.info("rpc read remote object array fail, errorCode " + error.code);
+ console.info("rpc read remote object array fail, errorMessage" + error.message);
+ }
console.log("RpcClient: readRemoteObjectArray is " + b);
```
@@ -2128,11 +2652,17 @@ static closeFileDescriptor(fd: number): void
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | fd | number | 是 | 要关闭的文件描述符。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | ------ | ---- | -------------------- |
+ | fd | number | 是 | 要关闭的文件描述符。 |
+
+**异常:**
+
+ | 错误码 | 说明 |
+ | ----------------- | ------------ |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
**示例:**
@@ -2140,11 +2670,15 @@ static closeFileDescriptor(fd: number): void
import fileio from '@ohos.fileio';
let filePath = "path/to/file";
let fd = fileio.openSync(filePath, 0o2| 0o100, 0o666);
- rpc.MessageParcel.closeFileDescriptor(fd);
+ try {
+ rpc.MessageSequence.closeFileDescriptor(fd);
+ } catch(error) {
+ console.info("rpc close file descriptor fail, errorCode " + error.code);
+ console.info("rpc close file descriptor fail, errorMessage" + error.message);
+ }
```
-
-### dupFileDescriptor8+
+### dupFileDescriptor
static dupFileDescriptor(fd: number) :number
@@ -2152,684 +2686,3644 @@ static dupFileDescriptor(fd: number) :number
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | fd | number | 是 | 表示已存在的文件描述符。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | ------ | ---- | ------------------------ |
+ | fd | number | 是 | 表示已存在的文件描述符。 |
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
+ | 类型 | 说明 |
+ | ------ | -------------------- |
| number | 返回新的文件描述符。 |
+**异常:**
+
+ | 错误码 | 说明 |
+ | ----------------- | -------------- |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
+ | OS_DUP_ERROR | 调用OS dup失败 |
+
**示例:**
```
import fileio from '@ohos.fileio';
let filePath = "path/to/file";
let fd = fileio.openSync(filePath, 0o2| 0o100, 0o666);
- let newFd = rpc.MessageParcel.dupFileDescriptor(fd);
+ try {
+ let newFd = rpc.MessageSequence.dupFileDescriptor(fd);
+ } catch(error) {
+ console.info("rpc dup file descriptor fail, errorCode " + error.code);
+ console.info("rpc dup file descriptor fail, errorMessage" + error.message);
+ }
```
-
-### containFileDescriptors8+
+### containFileDescriptors
containFileDescriptors(): boolean
-检查此MessageParcel对象是否包含文件描述符。
+检查此MessageSequence对象是否包含文件描述符。
**系统能力**:SystemCapability.Communication.IPC.Core
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
- | boolean | 如果此MessageParcel对象包含文件描述符,则返回true;否则返回false。 |
+ | 类型 | 说明 |
+ | ------- | -------------------------------------------------------------------- |
+ | boolean | 如果此MessageSequence对象包含文件描述符,则返回true;否则返回false。 |
**示例:**
+
```
import fileio from '@ohos.fileio';
- let parcel = new rpc.MessageParcel();
+ let sequence = new rpc.MessageSequence();
let filePath = "path/to/file";
- let r1 = parcel.containFileDescriptors();
+ let r1 = sequence.containFileDescriptors();
let fd = fileio.openSync(filePath, 0o2| 0o100, 0o666);
- let writeResult = parcel.writeFileDescriptor(fd);
- console.log("RpcTest: parcel writeFd result is : " + writeResult);
- let containFD = parcel.containFileDescriptors();
- console.log("RpcTest: parcel after write fd containFd result is : " + containFD);
+ try {
+ sequence.writeFileDescriptor(fd);
+ } catch(error) {
+ console.info("rpc write file descriptor fail, errorCode " + error.code);
+ console.info("rpc write file descriptor fail, errorMessage" + error.message);
+ }
+ try {
+ let containFD = sequence.containFileDescriptors();
+ } catch(error) {
+ console.info("rpc contain file descriptor fail, errorCode " + error.code);
+ console.info("rpc contain file descriptor fail, errorMessage" + error.message);
+ }
+ console.log("RpcTest: sequence after write fd containFd result is : " + containFD);
```
+### writeFileDescriptor
-### writeFileDescriptor8+
-
-writeFileDescriptor(fd: number): boolean
+writeFileDescriptor(fd: number): void
-写入文件描述符到MessageParcel。
+写入文件描述符到MessageSequence。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | fd | number | 是 | 文件描述符。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | ------ | ---- | ------------ |
+ | fd | number | 是 | 文件描述符。 |
-**返回值:**
+**异常:**
- | 类型 | 说明 |
- | -------- | -------- |
- | boolean | 如果操作成功,则返回true;否则返回false。 |
+ | 错误码 | 说明 |
+ | ------------------------------------ | ----------------------- |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
+ | WRITE_DATA_TO_MESSAGE_SEQUENCE_ERROR | 写入MessageSequence失败 |
**示例:**
```
import fileio from '@ohos.fileio';
- let parcel = new rpc.MessageParcel();
+ let sequence = new rpc.MessageSequence();
let filePath = "path/to/file";
let fd = fileio.openSync(filePath, 0o2| 0o100, 0o666);
- let writeResult = parcel.writeFileDescriptor(fd);
- console.log("RpcTest: parcel writeFd result is : " + writeResult);
+ try {
+ sequence.writeFileDescriptor(fd);
+ } catch(error) {
+ console.info("rpc write file descriptor fail, errorCode " + error.code);
+ console.info("rpc write file descriptor fail, errorMessage" + error.message);
+ }
```
-### readFileDescriptor8+
+### readFileDescriptor
readFileDescriptor(): number
-从MessageParcel中读取文件描述符。
+从MessageSequence中读取文件描述符。
**系统能力**:SystemCapability.Communication.IPC.Core
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
+ | 类型 | 说明 |
+ | ------ | ---------------- |
| number | 返回文件描述符。 |
+**异常:**
+
+ | 错误码 | 说明 |
+ | ------------------------------------- | --------------------------- |
+ | READ_DATA_FROM_MESSAGE_SEQUENCE_ERROR | 读取MessageSequence数据失败 |
+
**示例:**
```
import fileio from '@ohos.fileio';
- let parcel = new rpc.MessageParcel();
+ let sequence = new rpc.MessageSequence();
let filePath = "path/to/file";
let fd = fileio.openSync(filePath, 0o2| 0o100, 0o666);
- let writeResult = parcel.writeFileDescriptor(fd);
- let readFD = parcel.readFileDescriptor();
- console.log("RpcTest: parcel read fd is : " + readFD);
+ try {
+ sequence.writeFileDescriptor(fd);
+ } catch(error) {
+ console.info("rpc write file descriptor fail, errorCode " + error.code);
+ console.info("rpc write file descriptor fail, errorMessage" + error.message);
+ }
+ try {
+ let readFD = sequence.readFileDescriptor();
+ } catch(error) {
+ console.info("rpc read file descriptor fail, errorCode " + error.code);
+ console.info("rpc read file descriptor fail, errorMessage" + error.message);
+ }
```
-### writeAshmem8+
+### writeAshmem
-writeAshmem(ashmem: Ashmem): boolean
+writeAshmem(ashmem: Ashmem): void
-将指定的匿名共享对象写入此MessageParcel。
+将指定的匿名共享对象写入此MessageSequence。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | ashmem | Ashmem | 是 | 要写入MessageParcel的匿名共享对象。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | ------ | ---- | ------------------------------------- |
+ | ashmem | Ashmem | 是 | 要写入MessageSequence的匿名共享对象。 |
-**返回值:**
+**异常:**
- | 类型 | 说明 |
- | -------- | -------- |
- | boolean | 如果匿名共享对象成功写入此MessageParcel,则返回true;否则返回false。 |
+ | 错误码 | 说明 |
+ | ------------------------------------ | ----------------------- |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
+ | WRITE_DATA_TO_MESSAGE_SEQUENCE_ERROR | 写入MessageSequence失败 |
**示例:**
```
- let parcel = new rpc.MessageParcel();
- let ashmem = rpc.Ashmem.createAshmem("ashmem", 1024);
- let isWriteSuccess = parcel.writeAshmem(ashmem);
- console.log("RpcTest: write ashmem to result is : " + isWriteSuccess);
+ let sequence = new rpc.MessageSequence();
+ try {
+ let ashmem = rpc.Ashmem.create("ashmem", 1024);
+ } catch(error) {
+ console.info("rpc create ashmem fail, errorCode " + error.code);
+ console.info("rpc creat ashmem fail, errorMessage" + error.message);
+ }
+ try {
+ sequence.writeAshmem(ashmem);
+ } catch(error) {
+ console.info("rpc write ashmem fail, errorCode " + error.code);
+ console.info("rpc write ashmem fail, errorMessage" + error.message);
+ }
```
-### readAshmem8+
+### readAshmem
readAshmem(): Ashmem
-从MessageParcel读取匿名共享对象。
+从MessageSequence读取匿名共享对象。
**系统能力**:SystemCapability.Communication.IPC.Core
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
+ | 类型 | 说明 |
+ | ------ | ------------------ |
| Ashmem | 返回匿名共享对象。 |
+**异常:**
+
+ | 错误码 | 说明 |
+ | ------------------------------------- | --------------------------- |
+ | READ_DATA_FROM_MESSAGE_SEQUENCE_ERROR | 读取MessageSequence数据失败 |
+
**示例:**
```
- let parcel = new rpc.MessageParcel();
- let ashmem = rpc.Ashmem.createAshmem("ashmem", 1024);
- let isWriteSuccess = parcel.writeAshmem(ashmem);
- console.log("RpcTest: write ashmem to result is : " + isWriteSuccess);
- let readAshmem = parcel.readAshmem();
+ let sequence = new rpc.MessageSequence();
+ try {
+ let ashmem = rpc.Ashmem.create("ashmem", 1024);
+ } catch(error) {
+ console.info("rpc create ashmem fail, errorCode " + error.code);
+ console.info("rpc creat ashmem fail, errorMessage" + error.message);
+ }
+ try {
+ sequence.writeAshmem(ashmem);
+ } catch(error) {
+ console.info("rpc write ashmem fail, errorCode " + error.code);
+ console.info("rpc write ashmem fail, errorMessage" + error.message);
+ }
+ try {
+ let readAshmem = sequence.readAshmem();
+ } catch(error) {
+ console.info("rpc read ashmem fail, errorCode " + error.code);
+ console.info("rpc read ashmem fail, errorMessage" + error.message);
+ }
console.log("RpcTest: read ashmem to result is : " + readAshmem);
```
-### getRawDataCapacity8+
+### getRawDataCapacity
getRawDataCapacity(): number
-获取MessageParcel可以容纳的最大原始数据量。
+获取MessageSequence可以容纳的最大原始数据量。
**系统能力**:SystemCapability.Communication.IPC.Core
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
- | number | 返回MessageParcel可以容纳的最大原始数据量,即128 Mb。 |
+ | 类型 | 说明 |
+ | ------ | ------------------------------------------------------------ |
+ | number | 返回MessageSequence可以容纳的最大原始数据量,即128 Mb。 |
**示例:**
```
- let parcel = new rpc.MessageParcel();
- let result = parcel.getRawDataCapacity();
- console.log("RpcTest: parcel get RawDataCapacity result is : " + result);
+ let sequence = new rpc.MessageSequence();
+ let result = sequence.getRawDataCapacity();
+ console.log("RpcTest: sequence get RawDataCapacity result is : " + result);
```
-### writeRawData8+
+### writeRawData
-writeRawData(rawData: number[], size: number): boolean
+writeRawData(rawData: number[], size: number): void
-将原始数据写入MessageParcel对象。
+将原始数据写入MessageSequence对象。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | rawData | number[] | 是 | 要写入的原始数据。 |
- | size | number | 是 | 发送的原始数据大小,以字节为单位。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------- | -------- | ---- | ---------------------------------- |
+ | rawData | number[] | 是 | 要写入的原始数据。 |
+ | size | number | 是 | 发送的原始数据大小,以字节为单位。 |
-**返回值:**
+**异常:**
- | 类型 | 说明 |
- | -------- | -------- |
- | boolean | 如果操作成功,则返回true;否则返回false。 |
+ | 错误码 | 说明 |
+ | ------------------------------------ | ----------------------- |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
+ | WRITE_DATA_TO_MESSAGE_SEQUENCE_ERROR | 写入MessageSequence失败 |
**示例:**
```
- let parcel = new rpc.MessageParcel();
+ let sequence = new rpc.MessageSequence();
let arr = [1, 2, 3, 4, 5];
- let isWriteSuccess = parcel.writeRawData(arr, arr.length);
- console.log("RpcTest: parcel write raw data result is : " + isWriteSuccess);
+ try {
+ sequence.writeRawData(arr, arr.length);
+ } catch(error) {
+ console.info("rpc write rawdata fail, errorCode " + error.code);
+ console.info("rpc write rawdata fail, errorMessage" + error.message);
+ }
```
-### readRawData8+
+### readRawData
readRawData(size: number): number[]
-从MessageParcel读取原始数据。
+从MessageSequence读取原始数据。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | size | number | 是 | 要读取的原始数据的大小。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | ------ | ---- | ------------------------ |
+ | size | number | 是 | 要读取的原始数据的大小。 |
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
+ | 类型 | 说明 |
+ | -------- | ------------------------------ |
| number[] | 返回原始数据(以字节为单位)。 |
+**异常:**
+
+ | 错误码 | 说明 |
+ | ------------------------------------- | --------------------------- |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
+ | READ_DATA_FROM_MESSAGE_SEQUENCE_ERROR | 读取MessageSequence数据失败 |
+
**示例:**
```
- let parcel = new rpc.MessageParcel();
+ let sequence = new rpc.MessageSequence();
let arr = [1, 2, 3, 4, 5];
- let isWriteSuccess = parcel.writeRawData(arr, arr.length);
- console.log("RpcTest: parcel write raw data result is : " + isWriteSuccess);
- let result = parcel.readRawData(5);
- console.log("RpcTest: parcel read raw data result is : " + result);
+ try {
+ sequence.writeRawData(arr, arr.length);
+ } catch(error) {
+ console.info("rpc write rawdata fail, errorCode " + error.code);
+ console.info("rpc write rawdata fail, errorMessage" + error.message);
+ }
+ try {
+ let result = sequence.readRawData(5);
+ } catch(error) {
+ console.info("rpc read rawdata fail, errorCode " + error.code);
+ console.info("rpc read rawdata fail, errorMessage" + error.message);
+ }
+ console.log("RpcTest: sequence read raw data result is : " + result);
```
-## Sequenceable
+## MessageParceldeprecated
-在进程间通信(IPC)期间,将类的对象写入MessageParcel并从MessageParcel中恢复它们。
+在RPC过程中,发送方可以使用MessageParcel提供的写方法,将待发送的数据以特定格式写入该对象。接收方可以使用MessageParcel提供的读方法从该对象中读取特定格式的数据。数据格式包括:基础类型及数组、IPC对象、接口描述符和自定义序列化对象。建议后续使用MessageSequence类替代。
+### create
-### marshalling
-
-marshalling(dataOut: MessageParcel): boolean
+create(): MessageParcel
-将此可序列对象封送到MessageParcel中。
+静态方法,创建MessageParcel对象。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
-
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | dataOut | [MessageParcel](#messageparcel) | 是 | 可序列对象将被封送到的MessageParcel对象。 |
-
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
- | boolean | 如果封送成功,则返回true;否则返回false。 |
+ | 类型 | 说明 |
+ | ------------- | ----------------------------- |
+ | MessageParcel | 返回创建的MessageParcel对象。 |
**示例:**
```
- class MySequenceable {
- num: number;
- str: string;
- constructor(num, str) {
- this.num = num;
- this.str = str;
- }
- marshalling(messageParcel) {
- messageParcel.writeInt(this.num);
- messageParcel.writeString(this.str);
- return true;
- }
- unmarshalling(messageParcel) {
- this.num = messageParcel.readInt();
- this.str = messageParcel.readString();
- return true;
- }
- }
- let sequenceable = new MySequenceable(1, "aaa");
let data = rpc.MessageParcel.create();
- let result = data.writeSequenceable(sequenceable);
- console.log("RpcClient: writeSequenceable is " + result);
- let ret = new MySequenceable(0, "");
- let result2 = data.readSequenceable(ret);
- console.log("RpcClient: readSequenceable is " + result2);
+ console.log("RpcClient: data is " + data);
```
+### reclaim
-### unmarshalling
+reclaim(): void
-unmarshalling(dataIn: MessageParcel) : boolean
+释放不再使用的MessageParcel对象。
-从MessageParcel中解封此可序列对象。
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**示例:**
+
+ ```
+ let reply = rpc.MessageParcel.create();
+ reply.reclaim();
+ ```
+
+### writeRemoteObject
+
+writeRemoteObject(object: [IRemoteObject](#iremoteobject)): boolean
+
+序列化远程对象并将其写入MessageParcel对象。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | dataIn | [MessageParcel](#messageparcel) | 是 | 已将可序列对象封送到其中的MessageParcel对象。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | ------------------------------- | ---- | --------------------------------------- |
+ | object | [IRemoteObject](#iremoteobject) | 是 | 要序列化并写入MessageParcel的远程对象。 |
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
- | boolean | 如果可序列化成功,则返回true;否则返回false。 |
+ | 类型 | 说明 |
+ | ------- | ----------------------------------------- |
+ | boolean | 如果操作成功,则返回true;否则返回false。 |
**示例:**
```
- class MySequenceable {
- num: number;
- str: string;
- constructor(num, str) {
- this.num = num;
- this.str = str;
+ class MyDeathRecipient {
+ onRemoteDied() {
+ console.log("server died");
}
- marshalling(messageParcel) {
- messageParcel.writeInt(this.num);
- messageParcel.writeString(this.str);
+ }
+ class TestRemoteObject extends rpc.RemoteObject {
+ constructor(descriptor) {
+ super(descriptor);
+ }
+ addDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
return true;
}
- unmarshalling(messageParcel) {
- this.num = messageParcel.readInt();
- this.str = messageParcel.readString();
+ removeDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
return true;
}
+ isObjectDead(): boolean {
+ return false;
+ }
}
- let sequenceable = new MySequenceable(1, "aaa");
let data = rpc.MessageParcel.create();
- let result = data.writeSequenceable(sequenceable);
- console.log("RpcClient: writeSequenceable is " + result);
- let ret = new MySequenceable(0, "");
- let result2 = data.readSequenceable(ret);
- console.log("RpcClient: readSequenceable is " + result2);
+ let testRemoteObject = new TestRemoteObject("testObject");
+ data.writeRemoteObject(testRemoteObject);
```
+### readRemoteObject
-## IRemoteBroker
-
-远端对象的代理持有者。用于获取代理对象。
-
-
-### asObject
-
-asObject(): IRemoteObject
+readRemoteObject(): IRemoteObject
-需派生类实现,获取代理或远端对象。
+从MessageParcel读取远程对象。此方法用于反序列化MessageParcel对象以生成IRemoteObject。远程对象按写入MessageParcel的顺序读取。
**系统能力**:SystemCapability.Communication.IPC.Core
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
- | [IRemoteObject](#iremoteobject) | 如果调用者是[RemoteObject](#ashmem8)对象,则直接返回本身;如果调用者是[RemoteProxy](#remoteproxy)对象,则返回它的持有者[IRemoteObject](#iremoteobject)。 |
+ | 类型 | 说明 |
+ | ------------------------------- | ------------------ |
+ | [IRemoteObject](#iremoteobject) | 读取到的远程对象。 |
**示例:**
```
- class TestAbility extends rpc.RemoteObject {
- asObject() {
- return this;
+ class MyDeathRecipient {
+ onRemoteDied() {
+ console.log("server died");
}
}
- ```
-
-**示例:**
-
- ```
- class TestProxy {
- remote: rpc.RemoteObject;
- constructor(remote) {
- this.remote = remote;
+ class TestRemoteObject extends rpc.RemoteObject {
+ constructor(descriptor) {
+ super(descriptor);
}
- asObject() {
- return this.remote;
+ addDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
+ return true;
+ }
+ removeDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
+ return true;
+ }
+ isObjectDead(): boolean {
+ return false;
}
}
+ let data = rpc.MessageParcel.create();
+ let testRemoteObject = new TestRemoteObject("testObject");
+ data.writeRemoteObject(testRemoteObject);
+ let proxy = data.readRemoteObject();
```
+### writeInterfaceToken
-## DeathRecipient
+writeInterfaceToken(token: string): boolean
-用于订阅远端对象的死亡通知。当被订阅该通知的远端对象死亡时,本端可收到消息,调用[onRemoteDied](#onremotedied)接口。远端对象死亡可以为远端对象所在进程死亡,远端对象所在设备关机或重启,当远端对象与本端对象属于不同设备时,也可为远端对象离开组网时。
+将接口描述符写入MessageParcel对象,远端对象可使用该信息校验本次通信。
+**系统能力**:SystemCapability.Communication.IPC.Core
-### onRemoteDied
+**参数**
-onRemoteDied(): void
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | ------ | ---- | ------------------ |
+ | token | string | 是 | 字符串类型描述符。 |
-在成功添加死亡通知订阅后,当远端对象死亡时,将自动调用本方法。
+**返回值:**
-**系统能力**:SystemCapability.Communication.IPC.Core
+ | 类型 | 说明 |
+ | ------- | ----------------------------------------- |
+ | boolean | 如果操作成功,则返回true;否则返回false。 |
**示例:**
```
- class MyDeathRecipient {
- onRemoteDied() {
- console.log("server died");
- }
- }
+ let data = rpc.MessageParcel.create();
+ let result = data.writeInterfaceToken("aaa");
+ console.log("RpcServer: writeInterfaceToken is " + result);
```
-## SendRequestResult8+
-
-发送请求的响应结果。
+### readInterfaceToken
-**系统能力**:以下各项对应的系统能力均为SystemCapability.Communication.IPC.Core。
+readInterfaceToken(): string
- | 参数 | 值 | 说明 |
-| -------- | -------- | -------- |
-| errCode | number | 错误码。 |
-| code | number | 消息代码。 |
-| data | MessageParcel | 发送给对端进程的MessageParcel对象。 |
-| reply | MessageParcel | 对端进程返回的MessageParcel对象。 |
+从MessageParcel中读取接口描述符,接口描述符按写入MessageParcel的顺序读取,本地对象可使用该信息检验本次通信。
+**系统能力**:SystemCapability.Communication.IPC.Core
-## IRemoteObject
+**返回值:**
-该接口可用于查询或获取接口描述符、添加或删除死亡通知、转储对象状态到特定文件、发送消息。
+ | 类型 | 说明 |
+ | ------ | ------------------------ |
+ | string | 返回读取到的接口描述符。 |
+**示例:**
-### queryLocalInterface
+ ```
+ class Stub extends rpc.RemoteObject {
+ onRemoteRequestEx(code, data, reply, option) {
+ let interfaceToken = data.readInterfaceToken();
+ console.log("RpcServer: interfaceToken is " + interfaceToken);
+ return true;
+ }
+ }
+ ```
-queryLocalInterface(descriptor: string): IRemoteBroker
-查询接口。
+### getSize
-**系统能力**:SystemCapability.Communication.IPC.Core
+getSize(): number
-**参数:**
+获取当前MessageParcel的数据大小。
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | descriptor | string | 是 | 接口描述符的字符串。 |
+**系统能力**:SystemCapability.Communication.IPC.Core
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
- | IRemoteBroker | 返回绑定到指定接口描述符的IRemoteBroker对象。 |
-
+ | 类型 | 说明 |
+ | ------ | --------------------------------------------- |
+ | number | 获取的MessageParcel的数据大小。以字节为单位。 |
-### sendRequest(deprecated)
+**示例:**
-sendRequest(code : number, data : MessageParcel, reply : MessageParcel, options : MessageOption): boolean
+ ```
+ let data = rpc.MessageParcel.create();
+ let size = data.getSize();
+ console.log("RpcClient: size is " + size);
+ ```
-> **说明:**
-> 从 API Version 8 开始废弃,建议使用[sendRequestAsync9+](#sendrequestasync9)替代。
-以同步或异步方式向对端进程发送MessageParcel消息。如果为选项设置了异步模式,则期约立即兑现,reply报文里没有内容。如果为选项设置了同步模式,则期约将在sendRequest返回时兑现,回复内容在reply报文里。
+### getCapacity
-**系统能力**:SystemCapability.Communication.IPC.Core
+getCapacity(): number
-**参数:**
+获取当前MessageParcel的容量。
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | code | number | 是 | 本次请求调用的消息码,由通信双方确定。如果接口由IDL工具生成,则消息代码由IDL自动生成。 |
- | data | [MessageParcel](#messageparcel) | 是 | 保存待发送数据的 MessageParcel对象。 |
- | reply | [MessageParcel](#messageparcel) | 是 | 接收应答数据的MessageParcel对象。 |
- | options | [MessageOption](#messageoption) | 是 | 本次请求的同异步模式,默认同步调用。 |
+**系统能力**:SystemCapability.Communication.IPC.Core
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
- | boolean | 返回一个布尔值,true表示成功,false表示失败。|
+ | 类型 | 说明 |
+ | ------ | --------------------------------------------- |
+ | number | 获取的MessageParcel的容量大小。以字节为单位。 |
+**示例:**
-### sendRequest8+(deprecated)
+ ```
+ let data = rpc.MessageParcel.create();
+ let result = data.getCapacity();
+ console.log("RpcClient: capacity is " + result);
+ ```
-sendRequest(code : number, data : MessageParcel, reply : MessageParcel, options : MessageOption): Promise<SendRequestResult>
-> **说明:**
-> 从 API Version 9 开始废弃,建议使用[sendRequestAsync9+](#sendrequestasync9)替代。
+### setSize
-以同步或异步方式向对端进程发送MessageParcel消息。如果为选项设置了异步模式,则期约立即兑现,reply报文里没有内容。如果为选项设置了同步模式,则期约将在sendRequest返回时兑现,回复内容在reply报文里。
+setSize(size: number): boolean
+
+设置MessageParcel实例中包含的数据大小。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | code | number | 是 | 本次请求调用的消息码,由通信双方确定。如果接口由IDL工具生成,则消息代码由IDL自动生成。 |
- | data | [MessageParcel](#messageparcel) | 是 | 保存待发送数据的 MessageParcel对象。 |
- | reply | [MessageParcel](#messageparcel) | 是 | 接收应答数据的MessageParcel对象。 |
- | options | [MessageOption](#messageoption) | 是 | 本次请求的同异步模式,默认同步调用。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | ------ | ---- | ------------------------------------------- |
+ | size | number | 是 | MessageParcel实例的数据大小。以字节为单位。 |
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
- | Promise<SendRequestResult> | 返回一个期约,兑现值是sendRequestResult实例。|
-
-### sendRequestAsync9+
+ | 类型 | 说明 |
+ | ------- | --------------------------------- |
+ | boolean | 设置成功返回true,否则返回false。 |
-sendRequestAsync(code : number, data : MessageParcel, reply : MessageParcel, options : MessageOption): Promise<SendRequestResult>
+**示例:**
-以同步或异步方式向对端进程发送MessageParcel消息。如果为选项设置了异步模式,则期约立即兑现,reply报文里没有内容。如果为选项设置了同步模式,则期约将在sendRequestAsync返回时兑现,回复内容在reply报文里。
+ ```
+ let data = rpc.MessageParcel.create();
+ let setSize = data.setSize(16);
+ console.log("RpcClient: setSize is " + setSize);
+ ```
-**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+### setCapacity
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | code | number | 是 | 本次请求调用的消息码,由通信双方确定。如果接口由IDL工具生成,则消息代码由IDL自动生成。 |
- | data | [MessageParcel](#messageparcel) | 是 | 保存待发送数据的 MessageParcel对象。 |
- | reply | [MessageParcel](#messageparcel) | 是 | 接收应答数据的MessageParcel对象。 |
- | options | [MessageOption](#messageoption) | 是 | 本次请求的同异步模式,默认同步调用。 |
+setCapacity(size: number): boolean
-**返回值:**
+设置MessageParcel实例的存储容量。
- | 类型 | 说明 |
- | -------- | -------- |
- | Promise<SendRequestResult> | 返回一个期约,兑现值是sendRequestResult实例。|
+**系统能力**:SystemCapability.Communication.IPC.Core
-### sendRequest8+
+**参数**
-sendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption, callback: AsyncCallback<SendRequestResult>): void
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | ------ | ---- | ------------------------------------------- |
+ | size | number | 是 | MessageParcel实例的存储容量。以字节为单位。 |
-以同步或异步方式向对端进程发送MessageParcel消息。如果为选项设置了异步模式,则立即收到回调,reply报文里没有内容。如果为选项设置了同步模式,则将在sendRequest返回时收到回调,回复内容在reply报文里。
+**返回值:**
-**系统能力**:SystemCapability.Communication.IPC.Core
+ | 类型 | 说明 |
+ | ------- | --------------------------------- |
+ | boolean | 设置成功返回true,否则返回false。 |
-**参数:**
+**示例:**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | code | number | 是 | 本次请求调用的消息码,由通信双方确定。如果接口由IDL工具生成,则消息代码由IDL自动生成。 |
- | data | [MessageParcel](#messageparcel) | 是 | 保存待发送数据的 MessageParcel对象。 |
- | reply | [MessageParcel](#messageparcel) | 是 | 接收应答数据的MessageParcel对象。 |
- | options | [MessageOption](#messageoption) | 是 | 本次请求的同异步模式,默认同步调用。 |
- | callback | AsyncCallback<SendRequestResult> | 是 | 接收发送结果的回调。 |
+ ```
+ let data = rpc.MessageParcel.create();
+ let result = data.setCapacity(100);
+ console.log("RpcClient: setCapacity is " + result);
+ ```
-### addDeathrecipient
+### getWritableBytes
-addDeathRecipient(recipient: DeathRecipient, flags: number): boolean
+getWritableBytes(): number
-注册用于接收远程对象死亡通知的回调。如果与RemoteProxy对象匹配的远程对象进程死亡,则调用此方法。
+获取MessageParcel的可写字节空间。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**返回值:**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | recipient | [DeathRecipient](#deathrecipient) | 是 | 要注册的回调。 |
- | flags | number | 是 | 死亡通知标志。 |
+ | 类型 | 说明 |
+ | ------ | --------------------------------------------------- |
+ | number | 获取到的MessageParcel的可写字节空间。以字节为单位。 |
-**返回值:**
+**示例:**
- | 类型 | 说明 |
- | -------- | -------- |
- | boolean | 如果回调注册成功,则返回true;否则返回false。 |
+ ```
+ class Stub extends rpc.RemoteObject {
+ onRemoteRequestEx(code, data, reply, option) {
+ let getWritableBytes = data.getWritableBytes();
+ console.log("RpcServer: getWritableBytes is " + getWritableBytes);
+ return true;
+ }
+ }
+ ```
-### removeDeathRecipient
+### getReadableBytes
-removeDeathRecipient(recipient: DeathRecipient, flags: number): boolean
+getReadableBytes(): number
-注销用于接收远程对象死亡通知的回调。
+获取MessageParcel的可读字节空间。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**返回值:**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | recipient | [DeathRecipient](#deathrecipient) | 是 | 要注销的回调。 |
- | flags | number | 是 | 死亡通知标志。 |
+ | 类型 | 说明 |
+ | ------ | --------------------------------------------------- |
+ | number | 获取到的MessageParcel的可读字节空间。以字节为单位。 |
-**返回值:**
+**示例:**
- | 类型 | 说明 |
- | -------- | -------- |
- | boolean | 如果回调成功注销,则返回true;否则返回false。 |
+ ```
+ class Stub extends rpc.RemoteObject {
+ onRemoteRequest(code, data, reply, option) {
+ let result = data.getReadableBytes();
+ console.log("RpcServer: getReadableBytes is " + result);
+ return true;
+ }
+ }
+ ```
-### getInterfaceDescriptor
+### getReadPosition
-getInterfaceDescriptor(): string
+getReadPosition(): number
-获取对象的接口描述符。接口描述符为字符串。
+获取MessageParcel的读位置。
**系统能力**:SystemCapability.Communication.IPC.Core
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
- | string | 返回接口描述符。 |
+ | 类型 | 说明 |
+ | ------ | --------------------------------------- |
+ | number | 返回MessageParcel实例中的当前读取位置。 |
+**示例:**
-### isObjectDead
+ ```
+ let data = rpc.MessageParcel.create();
+ let readPos = data.getReadPosition();
+ console.log("RpcClient: readPos is " + readPos);
+ ```
-isObjectDead(): boolean
-检查当前对象是否死亡。
+### getWritePosition
+
+getWritePosition(): number
+
+获取MessageParcel的写位置。
**系统能力**:SystemCapability.Communication.IPC.Core
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
- | boolean | 如果对象已死亡,则返回true;否则返回false。 |
+ | 类型 | 说明 |
+ | ------ | --------------------------------------- |
+ | number | 返回MessageParcel实例中的当前写入位置。 |
+**示例:**
-## RemoteProxy
+ ```
+ let data = rpc.MessageParcel.create();
+ data.writeInt(10);
+ let bwPos = data.getWritePosition();
+ console.log("RpcClient: bwPos is " + bwPos);
+ ```
-实现IRemoteObject代理对象。
-**系统能力**:以下各项对应的系统能力均为SystemCapability.Communication.IPC.Core。
+### rewindRead
-| 参数 | 值 | 说明 |
-| --------------------- | ----------------------- | --------------------------------- |
-| PING_TRANSACTION | 1599098439 (0x5f504e47) | 内部指令码,用于测试IPC服务正常。 |
-| DUMP_TRANSACTION | 1598311760 (0x5f444d50) | 内部指令码,获取Binder内部状态。 |
-| INTERFACE_TRANSACTION | 1598968902 (0x5f4e5446) | 内部指令码,获取对端接口描述符。 |
-| MIN_TRANSACTION_ID | 1 (0x00000001) | 最小有效指令码。 |
-| MAX_TRANSACTION_ID | 16777215 (0x00FFFFFF) | 最大有效指令码。 |
+rewindRead(pos: number): boolean
+重新偏移读取位置到指定的位置。
+**系统能力**:SystemCapability.Communication.IPC.Core
+**参数**
-### sendRequest(deprecated)
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | ------ | ---- | ------------------------ |
+ | pos | number | 是 | 开始读取数据的目标位置。 |
-sendRequest(code : number, data : MessageParcel, reply : MessageParcel, options : MessageOption): boolean
+**返回值:**
-> **说明:**
-> 从 API Version 8 开始废弃,建议使用[sendRequestAsync9+](#sendrequestasync9-1)替代。
+ | 类型 | 说明 |
+ | ------- | ------------------------------------------------- |
+ | boolean | 如果读取位置发生更改,则返回true;否则返回false。 |
-以同步或异步方式向对端进程发送MessageParcel消息。如果为选项设置了异步模式,则期约立即兑现,reply报文里没有内容。如果为选项设置了同步模式,则期约将在sendRequest返回时兑现,回复内容在reply报文里。
+**示例:**
+
+ ```
+ let data = rpc.MessageParcel.create();
+ data.writeInt(12);
+ data.writeString("parcel");
+ let number = data.readInt();
+ console.log("RpcClient: number is " + number);
+ data.rewindRead(0);
+ let number2 = data.readInt();
+ console.log("RpcClient: rewindRead is " + number2);
+ ```
+
+
+### rewindWrite
+
+rewindWrite(pos: number): boolean
+
+重新偏移写位置到指定的位置。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | ------ | ---- | ------------------------ |
+ | pos | number | 是 | 开始写入数据的目标位置。 |
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------- | --------------------------------------------- |
+ | boolean | 如果写入位置更改,则返回true;否则返回false。 |
+
+**示例:**
+
+ ```
+ let data = rpc.MessageParcel.create();
+ data.writeInt(4);
+ data.rewindWrite(0);
+ data.writeInt(5);
+ let number = data.readInt();
+ console.log("RpcClient: rewindWrite is: " + number);
+ ```
+
+
+### writeByte
+
+writeByte(val: number): boolean
+
+将字节值写入MessageParcel实例。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | ------ | ---- | ---------------- |
+ | val | number | 是 | 要写入的字节值。 |
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------- | ----------------------------- |
+ | boolean | 写入返回成功,否则返回false。 |
+
+**示例:**
+
+ ```
+ let data = rpc.MessageParcel.create();
+ let result = data.writeByte(2);
+ console.log("RpcClient: writeByte is: " + result);
+ ```
+
+
+### readByte
+
+readByte(): number
+
+从MessageParcel实例读取字节值。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------ | ------------ |
+ | number | 返回字节值。 |
+
+**示例:**
+
+ ```
+ let data = rpc.MessageParcel.create();
+ let result = data.writeByte(2);
+ console.log("RpcClient: writeByte is: " + result);
+ let ret = data.readByte();
+ console.log("RpcClient: readByte is: " + ret);
+ ```
+
+
+### writeShort
+
+writeShort(val: number): boolean
+
+将短整数值写入MessageParcel实例。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | ------ | ---- | ------------------ |
+ | val | number | 是 | 要写入的短整数值。 |
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------- | ----------------------------- |
+ | boolean | 写入返回true,否则返回false。 |
+
+**示例:**
+
+ ```
+ let data = rpc.MessageParcel.create();
+ let result = data.writeShort(8);
+ console.log("RpcClient: writeShort is: " + result);
+ ```
+
+
+### readShort
+
+readShort(): number
+
+从MessageParcel实例读取短整数值。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------ | -------------- |
+ | number | 返回短整数值。 |
+
+**示例:**
+
+ ```
+ let data = rpc.MessageParcel.create();
+ let result = data.writeShort(8);
+ console.log("RpcClient: writeShort is: " + result);
+ let ret = data.readShort();
+ console.log("RpcClient: readShort is: " + ret);
+ ```
+
+
+### writeInt
+
+writeInt(val: number): boolean
+
+将整数值写入MessageParcel实例。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | ------ | ---- | ---------------- |
+ | val | number | 是 | 要写入的整数值。 |
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------- | ----------------------------- |
+ | boolean | 写入返回成功,否则返回false。 |
+
+**示例:**
+
+ ```
+ let data = rpc.MessageParcel.create();
+ let result = data.writeInt(10);
+ console.log("RpcClient: writeInt is " + result);
+ ```
+
+
+### readInt
+
+readInt(): number
+
+从MessageParcel实例读取整数值。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------ | ------------ |
+ | number | 返回整数值。 |
+
+**示例:**
+
+ ```
+ let data = rpc.MessageParcel.create();
+ let result = data.writeInt(10);
+ console.log("RpcClient: writeInt is " + result);
+ let ret = data.readInt();
+ console.log("RpcClient: readInt is " + ret);
+ ```
+
+
+### writeLong
+
+writeLong(val: number): boolean
+
+将长整数值写入MessageParcel实例。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | ------ | ---- | ---------------- |
+ | val | number | 是 | 要写入的长整数值 |
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------- | --------------------------------- |
+ | boolean | 写入成功返回true,否则返回false。 |
+
+**示例:**
+
+ ```
+ let data = rpc.MessageParcel.create();
+ let result = data.writeLong(10000);
+ console.log("RpcClient: writeLong is " + result);
+ ```
+
+
+### readLong
+
+readLong(): number
+
+从MessageParcel实例中读取长整数值。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------ | -------------- |
+ | number | 返回长整数值。 |
+
+**示例:**
+
+ ```
+ let data = rpc.MessageParcel.create();
+ let result = data.writeLong(10000);
+ console.log("RpcClient: writeLong is " + result);
+ let ret = data.readLong();
+ console.log("RpcClient: readLong is " + ret);
+ ```
+
+
+### writeFloat
+
+writeFloat(val: number): boolean
+
+将浮点值写入MessageParcel实例。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | ------ | ---- | ---------------- |
+ | val | number | 是 | 要写入的浮点值。 |
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------- | --------------------------------- |
+ | boolean | 写入成功返回true,否则返回false。 |
+
+**示例:**
+
+ ```
+ let data = rpc.MessageParcel.create();
+ let result = data.writeFloat(1.2);
+ console.log("RpcClient: writeFloat is " + result);
+ ```
+
+
+### readFloat
+
+readFloat(): number
+
+从MessageParcel实例中读取浮点值。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------ | ------------ |
+ | number | 返回浮点值。 |
+
+**示例:**
+
+ ```
+ let data = rpc.MessageParcel.create();
+ let result = data.writeFloat(1.2);
+ console.log("RpcClient: writeFloat is " + result);
+ let ret = data.readFloat();
+ console.log("RpcClient: readFloat is " + ret);
+ ```
+
+
+### writeDouble
+
+writeDouble(val: number): boolean
+
+将双精度浮点值写入MessageParcel实例。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | ------ | ---- | ---------------------- |
+ | val | number | 是 | 要写入的双精度浮点值。 |
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------- | --------------------------------- |
+ | boolean | 写入成功返回true,否则返回false。 |
+
+**示例:**
+
+ ```
+ let data = rpc.MessageParcel.create();
+ let result = data.writeDouble(10.2);
+ console.log("RpcClient: writeDouble is " + result);
+ ```
+
+
+### readDouble
+
+readDouble(): number
+
+从MessageParcel实例读取双精度浮点值。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------ | ------------------ |
+ | number | 返回双精度浮点值。 |
+
+**示例:**
+
+ ```
+ let data = rpc.MessageParcel.create();
+ let result = data.writeDouble(10.2);
+ console.log("RpcClient: writeDouble is " + result);
+ let ret = data.readDouble();
+ console.log("RpcClient: readDouble is " + ret);
+ ```
+
+### writeBoolean
+
+writeBoolean(val: boolean): boolean
+
+将布尔值写入MessageParcel实例。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | ------- | ---- | ---------------- |
+ | val | boolean | 是 | 要写入的布尔值。 |
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------- | --------------------------------- |
+ | boolean | 写入成功返回true,否则返回false。 |
+
+**示例:**
+
+ ```
+ let data = rpc.MessageParcel.create();
+ let result = data.writeBoolean(false);
+ console.log("RpcClient: writeBoolean is " + result);
+ ```
+
+
+### readBoolean
+
+readBoolean(): boolean
+
+从MessageParcel实例读取布尔值。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------- | -------------------- |
+ | boolean | 返回读取到的布尔值。 |
+
+**示例:**
+
+ ```
+ let data = rpc.MessageParcel.create();
+ let result = data.writeBoolean(false);
+ console.log("RpcClient: writeBoolean is " + result);
+ let ret = data.readBoolean();
+ console.log("RpcClient: readBoolean is " + ret);
+ ```
+
+
+### writeChar
+
+writeChar(val: number): boolean
+
+将单个字符值写入MessageParcel实例。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | ------ | ---- | -------------------- |
+ | val | number | 是 | 要写入的单个字符值。 |
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------- | ----------------------------- |
+ | boolean | 写入返回true,否则返回false。 |
+
+**示例:**
+
+ ```
+ let data = rpc.MessageParcel.create();
+ let result = data.writeChar(97);
+ console.log("RpcClient: writeChar is " + result);
+ ```
+
+
+### readChar
+
+readChar(): number
+
+从MessageParcel实例中读取单个字符值。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------ | ---------------- |
+ | number | 返回单个字符值。 |
+
+**示例:**
+
+ ```
+ let data = rpc.MessageParcel.create();
+ let result = data.writeChar(97);
+ console.log("RpcClient: writeChar is " + result);
+ let ret = data.readChar();
+ console.log("RpcClient: readChar is " + ret);
+ ```
+
+
+### writeString
+
+writeString(val: string): boolean
+
+将字符串值写入MessageParcel实例。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+**参数**
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | ------ | ---- | ----------------------------------------- |
+ | val | string | 是 | 要写入的字符串值,其长度应小于40960字节。 |
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------- | --------------------------------- |
+ | boolean | 写入成功返回true,否则返回false。 |
+
+**示例:**
+
+ ```
+ let data = rpc.MessageParcel.create();
+ let result = data.writeString('abc');
+ console.log("RpcClient: writeString is " + result);
+ ```
+
+
+### readString
+
+readString(): string
+
+从MessageParcel实例读取字符串值。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------ | -------------- |
+ | string | 返回字符串值。 |
+
+**示例:**
+
+ ```
+ let data = rpc.MessageParcel.create();
+ let result = data.writeString('abc');
+ console.log("RpcClient: writeString is " + result);
+ let ret = data.readString();
+ console.log("RpcClient: readString is " + ret);
+ ```
+
+
+### writeSequenceable
+
+writeSequenceable(val: Sequenceable): boolean
+
+将自定义序列化对象写入MessageParcel实例。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | ----------------------------- | ---- | -------------------- |
+ | val | [Sequenceable](#sequenceable) | 是 | 要写入的可序列对象。 |
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------- | --------------------------------- |
+ | boolean | 写入成功返回true,否则返回false。 |
+
+**示例:**
+
+ ```
+ class MySequenceable {
+ num: number;
+ str: string;
+ constructor(num, str) {
+ this.num = num;
+ this.str = str;
+ }
+ marshalling(messageParcel) {
+ messageParcel.writeInt(this.num);
+ messageParcel.writeString(this.str);
+ return true;
+ }
+ unmarshalling(messageParcel) {
+ this.num = messageParcel.readInt();
+ this.str = messageParcel.readString();
+ return true;
+ }
+ }
+ let sequenceable = new MySequenceable(1, "aaa");
+ let data = rpc.MessageParcel.create();
+ let result = data.writeSequenceable(sequenceable);
+ console.log("RpcClient: writeSequenceable is " + result);
+ ```
+
+
+### readSequenceable
+
+readSequenceable(dataIn: Sequenceable) : boolean
+
+从MessageParcel实例中读取成员变量到指定的对象(dataIn)。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | ----------------------------- | ---- | --------------------------------------- |
+ | dataIn | [Sequenceable](#sequenceable) | 是 | 需要从MessageParcel读取成员变量的对象。 |
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------- | ------------------------------------------- |
+ | boolean | 如果反序列成功,则返回true;否则返回false。 |
+
+**示例:**
+
+ ```
+ class MySequenceable {
+ num: number;
+ str: string;
+ constructor(num, str) {
+ this.num = num;
+ this.str = str;
+ }
+ marshalling(messageParcel) {
+ messageParcel.writeInt(this.num);
+ messageParcel.writeString(this.str);
+ return true;
+ }
+ unmarshalling(messageParcel) {
+ this.num = messageParcel.readInt();
+ this.str = messageParcel.readString();
+ return true;
+ }
+ }
+ let sequenceable = new MySequenceable(1, "aaa");
+ let data = rpc.MessageParcel.create();
+ let result = data.writeSequenceable(sequenceable);
+ console.log("RpcClient: writeSequenceable is " + result);
+ let ret = new MySequenceable(0, "");
+ let result2 = data.readSequenceable(ret);
+ console.log("RpcClient: writeSequenceable is " + result2);
+ ```
+
+
+### writeByteArray
+
+writeByteArray(byteArray: number[]): boolean
+
+将字节数组写入MessageParcel实例。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | --------- | -------- | ---- | ------------------ |
+ | byteArray | number[] | 是 | 要写入的字节数组。 |
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------- | --------------------------------- |
+ | boolean | 写入成功返回true,否则返回false。 |
+
+**示例:**
+
+ ```
+ let data = rpc.MessageParcel.create();
+ let ByteArrayVar = [1, 2, 3, 4, 5];
+ let result = data.writeByteArray(ByteArrayVar);
+ console.log("RpcClient: writeByteArray is " + result);
+ ```
+
+
+### readByteArray
+
+readByteArray(dataIn: number[]) : void
+
+从MessageParcel实例读取字节数组。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | -------- | ---- | ------------------ |
+ | dataIn | number[] | 是 | 要读取的字节数组。 |
+
+**示例:**
+
+ ```
+ let data = rpc.MessageParcel.create();
+ let ByteArrayVar = [1, 2, 3, 4, 5];
+ let result = data.writeByteArray(ByteArrayVar);
+ console.log("RpcClient: writeByteArray is " + result);
+ let array = new Array(5);
+ data.readByteArray(array);
+ ```
+
+
+### readByteArray
+
+readByteArray(): number[]
+
+从MessageParcel实例中读取字节数组。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | -------- | -------------- |
+ | number[] | 返回字节数组。 |
+
+**示例:**
+
+ ```
+ let data = rpc.MessageParcel.create();
+ let ByteArrayVar = [1, 2, 3, 4, 5];
+ let result = data.writeByteArray(ByteArrayVar);
+ console.log("RpcClient: writeByteArray is " + result);
+ let array = data.readByteArray();
+ console.log("RpcClient: readByteArray is " + array);
+ ```
+
+
+### writeShortArray
+
+writeShortArray(shortArray: number[]): boolean
+
+将短整数数组写入MessageParcel实例。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ---------- | -------- | ---- | -------------------- |
+ | shortArray | number[] | 是 | 要写入的短整数数组。 |
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------- | ----------------------------- |
+ | boolean | 写入返回true,否则返回false。 |
+
+**示例:**
+
+ ```
+ let data = rpc.MessageParcel.create();
+ let result = data.writeShortArray([11, 12, 13]);
+ console.log("RpcClient: writeShortArray is " + result);
+ ```
+
+
+### readShortArray
+
+readShortArray(dataIn: number[]) : void
+
+从MessageParcel实例中读取短整数数组。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | -------- | ---- | -------------------- |
+ | dataIn | number[] | 是 | 要读取的短整数数组。 |
+
+**示例:**
+
+ ```
+ let data = rpc.MessageParcel.create();
+ let result = data.writeShortArray([11, 12, 13]);
+ console.log("RpcClient: writeShortArray is " + result);
+ let array = new Array(3);
+ data.readShortArray(array);
+ ```
+
+
+### readShortArray
+
+readShortArray(): number[]
+
+从MessageParcel实例中读取短整数数组。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | -------- | ---------------- |
+ | number[] | 返回短整数数组。 |
+
+**示例:**
+
+ ```
+ let data = rpc.MessageParcel.create();
+ let result = data.writeShortArray([11, 12, 13]);
+ console.log("RpcClient: writeShortArray is " + result);
+ let array = data.readShortArray();
+ console.log("RpcClient: readShortArray is " + array);
+ ```
+
+
+### writeIntArray
+
+writeIntArray(intArray: number[]): boolean
+
+将整数数组写入MessageParcel实例。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | -------- | -------- | ---- | ------------------ |
+ | intArray | number[] | 是 | 要写入的整数数组。 |
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------- | ----------------------------- |
+ | boolean | 写入返回true,否则返回false。 |
+
+**示例:**
+
+ ```
+ let data = rpc.MessageParcel.create();
+ let result = data.writeIntArray([100, 111, 112]);
+ console.log("RpcClient: writeIntArray is " + result);
+ ```
+
+
+### readIntArray
+
+readIntArray(dataIn: number[]) : void
+
+从MessageParcel实例中读取整数数组。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | -------- | ---- | ------------------ |
+ | dataIn | number[] | 是 | 要读取的整数数组。 |
+
+**示例:**
+
+ ```
+ let data = rpc.MessageParcel.create();
+ let result = data.writeIntArray([100, 111, 112]);
+ console.log("RpcClient: writeIntArray is " + result);
+ let array = new Array(3);
+ data.readIntArray(array);
+ ```
+
+
+### readIntArray
+
+readIntArray(): number[]
+
+从MessageParcel实例中读取整数数组。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | -------- | -------------- |
+ | number[] | 返回整数数组。 |
+
+**示例:**
+
+ ```
+ let data = rpc.MessageParcel.create();
+ let result = data.writeIntArray([100, 111, 112]);
+ console.log("RpcClient: writeIntArray is " + result);
+ let array = data.readIntArray();
+ console.log("RpcClient: readIntArray is " + array);
+ ```
+
+
+### writeLongArray
+
+writeLongArray(longArray: number[]): boolean
+
+将长整数数组写入MessageParcel实例。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | --------- | -------- | ---- | -------------------- |
+ | longArray | number[] | 是 | 要写入的长整数数组。 |
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------- | ----------------------------- |
+ | boolean | 写入返回true,否则返回false。 |
+
+**示例:**
+
+ ```
+ let data = rpc.MessageParcel.create();
+ let result = data.writeLongArray([1111, 1112, 1113]);
+ console.log("RpcClient: writeLongArray is " + result);
+ ```
+
+
+### readLongArray
+
+readLongArray(dataIn: number[]) : void
+
+从MessageParcel实例读取长整数数组。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | -------- | ---- | -------------------- |
+ | dataIn | number[] | 是 | 要读取的长整数数组。 |
+
+**示例:**
+
+ ```
+ let data = rpc.MessageParcel.create();
+ let result = data.writeLongArray([1111, 1112, 1113]);
+ console.log("RpcClient: writeLongArray is " + result);
+ let array = new Array(3);
+ data.readLongArray(array);
+ ```
+
+
+### readLongArray
+
+readLongArray(): number[]
+
+从MessageParcel实例中读取长整数数组。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | -------- | ---------------- |
+ | number[] | 返回长整数数组。 |
+
+**示例:**
+
+ ```
+ let data = rpc.MessageParcel.create();
+ let result = data.writeLongArray([1111, 1112, 1113]);
+ console.log("RpcClient: writeLongArray is " + result);
+ let array = data.readLongArray();
+ console.log("RpcClient: readLongArray is " + array);
+ ```
+
+
+### writeFloatArray
+
+writeFloatArray(floatArray: number[]): boolean
+
+将浮点数组写入MessageParcel实例。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ---------- | -------- | ---- | --- |
+ | floatArray | number[] | 是 | 要写入的浮点数组。由于系统内部对float类型的数据是按照double处理的,使用时对于数组所占的总字节数应按照double类型来计算。 |
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------- | ----------------------------- |
+ | boolean | 写入返回true,否则返回false。 |
+
+**示例:**
+
+ ```
+ let data = rpc.MessageParcel.create();
+ let result = data.writeFloatArray([1.2, 1.3, 1.4]);
+ console.log("RpcClient: writeFloatArray is " + result);
+ ```
+
+
+### readFloatArray
+
+readFloatArray(dataIn: number[]) : void
+
+从MessageParcel实例中读取浮点数组。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | -------- | ---- | ------ |
+ | dataIn | number[] | 是 | 要读取的浮点数组。由于系统内部对float类型的数据是按照double处理的,使用时对于数组所占的总字节数应按照double类型来计算。 |
+
+**示例:**
+
+ ```
+ let data = rpc.MessageParcel.create();
+ let result = data.writeFloatArray([1.2, 1.3, 1.4]);
+ console.log("RpcClient: writeFloatArray is " + result);
+ let array = new Array(3);
+ data.readFloatArray(array);
+ ```
+
+
+### readFloatArray
+
+readFloatArray(): number[]
+
+从MessageParcel实例中读取浮点数组。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | -------- | -------------- |
+ | number[] | 返回浮点数组。 |
+
+**示例:**
+
+ ```
+ let data = rpc.MessageParcel.create();
+ let result = data.writeFloatArray([1.2, 1.3, 1.4]);
+ console.log("RpcClient: writeFloatArray is " + result);
+ let array = data.readFloatArray();
+ console.log("RpcClient: readFloatArray is " + array);
+ ```
+
+
+### writeDoubleArray
+
+writeDoubleArray(doubleArray: number[]): boolean
+
+将双精度浮点数组写入MessageParcel实例。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ----------- | -------- | ---- | ------------------------ |
+ | doubleArray | number[] | 是 | 要写入的双精度浮点数组。 |
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------- | ----------------------------- |
+ | boolean | 写入返回true,否则返回false。 |
+
+**示例:**
+
+ ```
+ let data = rpc.MessageParcel.create();
+ let result = data.writeDoubleArray([11.1, 12.2, 13.3]);
+ console.log("RpcClient: writeDoubleArray is " + result);
+ ```
+
+
+### readDoubleArray
+
+readDoubleArray(dataIn: number[]) : void
+
+从MessageParcel实例中读取双精度浮点数组。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | -------- | ---- | ------------------------ |
+ | dataIn | number[] | 是 | 要读取的双精度浮点数组。 |
+
+**示例:**
+
+ ```
+ let data = rpc.MessageParcel.create();
+ let result = data.writeDoubleArray([11.1, 12.2, 13.3]);
+ console.log("RpcClient: writeDoubleArray is " + result);
+ let array = new Array(3);
+ data.readDoubleArray(array);
+ ```
+
+
+### readDoubleArray
+
+readDoubleArray(): number[]
+
+从MessageParcel实例读取双精度浮点数组。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | -------- | -------------------- |
+ | number[] | 返回双精度浮点数组。 |
+
+**示例:**
+
+ ```
+ let data = rpc.MessageParcel.create();
+ let result = data.writeDoubleArray([11.1, 12.2, 13.3]);
+ console.log("RpcClient: writeDoubleArray is " + result);
+ let array = data.readDoubleArray();
+ console.log("RpcClient: readDoubleArray is " + array);
+ ```
+
+
+### writeBooleanArray
+
+writeBooleanArray(booleanArray: boolean[]): boolean
+
+将布尔数组写入MessageParcel实例。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------------ | --------- | ---- | ------------------ |
+ | booleanArray | boolean[] | 是 | 要写入的布尔数组。 |
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------- | --------------------------------- |
+ | boolean | 写入成功返回true,否则返回false。 |
+
+**示例:**
+
+ ```
+ let data = rpc.MessageParcel.create();
+ let result = data.writeBooleanArray([false, true, false]);
+ console.log("RpcClient: writeBooleanArray is " + result);
+ ```
+
+
+### readBooleanArray
+
+readBooleanArray(dataIn: boolean[]) : void
+
+从MessageParcel实例中读取布尔数组。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | --------- | ---- | ------------------ |
+ | dataIn | boolean[] | 是 | 要读取的布尔数组。 |
+
+**示例:**
+
+ ```
+ let data = rpc.MessageParcel.create();
+ let result = data.writeBooleanArray([false, true, false]);
+ console.log("RpcClient: writeBooleanArray is " + result);
+ let array = new Array(3);
+ data.readBooleanArray(array);
+ ```
+
+
+### readBooleanArray
+
+readBooleanArray(): boolean[]
+
+从MessageParcel实例中读取布尔数组。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | --------- | -------------- |
+ | boolean[] | 返回布尔数组。 |
+
+**示例:**
+
+ ```
+ let data = rpc.MessageParcel.create();
+ let result = data.writeBooleanArray([false, true, false]);
+ console.log("RpcClient: writeBooleanArray is " + result);
+ let array = data.readBooleanArray();
+ console.log("RpcClient: readBooleanArray is " + array);
+ ```
+
+
+### writeCharArray
+
+writeCharArray(charArray: number[]): boolean
+
+将单个字符数组写入MessageParcel实例。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | --------- | -------- | ---- | ---------------------- |
+ | charArray | number[] | 是 | 要写入的单个字符数组。 |
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------- | --------------------------------- |
+ | boolean | 写入成功返回true,否则返回false。 |
+
+**示例:**
+
+ ```
+ let data = rpc.MessageParcel.create();
+ let result = data.writeCharArray([97, 98, 88]);
+ console.log("RpcClient: writeCharArray is " + result);
+ ```
+
+
+### readCharArray
+
+readCharArray(dataIn: number[]) : void
+
+从MessageParcel实例中读取单个字符数组。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | -------- | ---- | ---------------------- |
+ | dataIn | number[] | 是 | 要读取的单个字符数组。 |
+
+**示例:**
+
+ ```
+ let data = rpc.MessageParcel.create();
+ let result = data.writeCharArray([97, 98, 99]);
+ console.log("RpcClient: writeCharArray is " + result);
+ let array = new Array(3);
+ data.readCharArray(array);
+ ```
+
+
+### readCharArray
+
+readCharArray(): number[]
+
+从MessageParcel实例读取单个字符数组。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | -------- | ------------------ |
+ | number[] | 返回单个字符数组。 |
+
+**示例:**
+
+ ```
+ let data = rpc.MessageParcel.create();
+ let result = data.writeCharArray([97, 98, 99]);
+ console.log("RpcClient: writeCharArray is " + result);
+ let array = data.readCharArray();
+ console.log("RpcClient: readCharArray is " + array);
+ ```
+
+
+### writeStringArray
+
+writeStringArray(stringArray: string[]): boolean
+
+将字符串数组写入MessageParcel实例。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ----------- | -------- | ---- | ---------------- |
+ | stringArray | string[] | 是 | 要写入的字符串数组,数组单个元素的长度应小于40960字节。 |
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------- | --------------------------------- |
+ | boolean | 写入成功返回true,否则返回false。 |
+
+**示例:**
+
+ ```
+ let data = rpc.MessageParcel.create();
+ let result = data.writeStringArray(["abc", "def"]);
+ console.log("RpcClient: writeStringArray is " + result);
+ ```
+
+
+### readStringArray
+
+readStringArray(dataIn: string[]) : void
+
+从MessageParcel实例读取字符串数组。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | -------- | ---- | -------------------- |
+ | dataIn | string[] | 是 | 要读取的字符串数组。 |
+
+**示例:**
+
+ ```
+ let data = rpc.MessageParcel.create();
+ let result = data.writeStringArray(["abc", "def"]);
+ console.log("RpcClient: writeStringArray is " + result);
+ let array = new Array(2);
+ data.readStringArray(array);
+ ```
+
+
+### readStringArray
+
+readStringArray(): string[]
+
+从MessageParcel实例读取字符串数组。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | -------- | ---------------- |
+ | string[] | 返回字符串数组。 |
+
+**示例:**
+
+ ```
+ let data = rpc.MessageParcel.create();
+ let result = data.writeStringArray(["abc", "def"]);
+ console.log("RpcClient: writeStringArray is " + result);
+ let array = data.readStringArray();
+ console.log("RpcClient: readStringArray is " + array);
+ ```
+
+
+### writeNoException8+
+
+writeNoException(): void
+
+向MessageParcel写入“指示未发生异常”的信息。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**示例:**
+
+ ```
+ class MyDeathRecipient {
+ onRemoteDied() {
+ console.log("server died");
+ }
+ }
+ class TestRemoteObject extends rpc.RemoteObject {
+ constructor(descriptor) {
+ super(descriptor);
+ }
+ addDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
+ return true;
+ }
+ removeDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
+ return true;
+ }
+ isObjectDead(): boolean {
+ return false;
+ }
+ onRemoteRequest(code, data, reply, option) {
+ if (code === 1) {
+ console.log("RpcServer: onRemoteRequest called");
+ reply.writeNoException();
+ return true;
+ } else {
+ console.log("RpcServer: unknown code: " + code);
+ return false;
+ }
+ }
+ }
+ ```
+
+### readException8+
+
+readException(): void
+
+从MessageParcel中读取异常。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**示例:**
+
+ ```
+ import FA from "@ohos.ability.featureAbility";
+ let proxy;
+ let connect = {
+ onConnect: function(elementName, remoteProxy) {
+ console.log("RpcClient: js onConnect called.");
+ proxy = remoteProxy;
+ },
+ onDisconnect: function(elementName) {
+ console.log("RpcClient: onDisconnect");
+ },
+ onFailed: function() {
+ console.log("RpcClient: onFailed");
+ }
+ };
+ let want = {
+ "bundleName": "com.ohos.server",
+ "abilityName": "com.ohos.server.MainAbility",
+ };
+ FA.connectAbility(want, connect);
+ let option = new rpc.MessageOption();
+ let data = rpc.MessageParcel.create();
+ let reply = rpc.MessageParcel.create();
+ data.writeInt(1);
+ data.writeString("hello");
+ proxy.sendRequestAsync(1, data, reply, option)
+ .then(function(errCode) {
+ if (errCode === 0) {
+ console.log("sendRequestAsync got result");
+ reply.readException();
+ let msg = reply.readString();
+ console.log("RPCTest: reply msg: " + msg);
+ } else {
+ console.log("RPCTest: sendRequestAsync failed, errCode: " + errCode);
+ }
+ }).catch(function(e) {
+ console.log("RPCTest: sendRequestAsync got exception: " + e.message);
+ }).finally (() => {
+ console.log("RPCTest: sendRequestAsync ends, reclaim parcel");
+ data.reclaim();
+ reply.reclaim();
+ });
+ ```
+
+### writeSequenceableArray
+
+writeSequenceableArray(sequenceableArray: Sequenceable[]): boolean
+
+将可序列化对象数组写入MessageParcel实例。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ----------------- | -------------- | ---- | -------------------------- |
+ | sequenceableArray | Sequenceable[] | 是 | 要写入的可序列化对象数组。 |
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------- | --------------------------------- |
+ | boolean | 写入成功返回true,否则返回false。 |
+
+**示例:**
+
+ ```
+ class MySequenceable {
+ num: number;
+ str: string;
+ constructor(num, str) {
+ this.num = num;
+ this.str = str;
+ }
+ marshalling(messageParcel) {
+ messageParcel.writeInt(this.num);
+ messageParcel.writeString(this.str);
+ return true;
+ }
+ unmarshalling(messageParcel) {
+ this.num = messageParcel.readInt();
+ this.str = messageParcel.readString();
+ return true;
+ }
+ }
+ let sequenceable = new MySequenceable(1, "aaa");
+ let sequenceable2 = new MySequenceable(2, "bbb");
+ let sequenceable3 = new MySequenceable(3, "ccc");
+ let a = [sequenceable, sequenceable2, sequenceable3];
+ let data = rpc.MessageParcel.create();
+ let result = data.writeSequenceableArray(a);
+ console.log("RpcClient: writeSequenceableArray is " + result);
+ ```
+
+
+### readSequenceableArray8+
+
+readSequenceableArray(sequenceableArray: Sequenceable[]): void
+
+从MessageParcel实例读取可序列化对象数组。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ----------------- | -------------- | ---- | -------------------------- |
+ | sequenceableArray | Sequenceable[] | 是 | 要读取的可序列化对象数组。 |
+
+**示例:**
+
+ ```
+ class MySequenceable {
+ num: number;
+ str: string;
+ constructor(num, str) {
+ this.num = num;
+ this.str = str;
+ }
+ marshalling(messageParcel) {
+ messageParcel.writeInt(this.num);
+ messageParcel.writeString(this.str);
+ return true;
+ }
+ unmarshalling(messageParcel) {
+ this.num = messageParcel.readInt();
+ this.str = messageParcel.readString();
+ return true;
+ }
+ }
+ let sequenceable = new MySequenceable(1, "aaa");
+ let sequenceable2 = new MySequenceable(2, "bbb");
+ let sequenceable3 = new MySequenceable(3, "ccc");
+ let a = [sequenceable, sequenceable2, sequenceable3];
+ let data = rpc.MessageParcel.create();
+ let result = data.writeSequenceableArray(a);
+ console.log("RpcClient: writeSequenceableArray is " + result);
+ let b = [new MySequenceable(0, ""), new MySequenceable(0, ""), new MySequenceable(0, "")];
+ data.readSequenceableArray(b);
+ ```
+
+
+### writeRemoteObjectArray8+
+
+writeRemoteObjectArray(objectArray: IRemoteObject[]): boolean
+
+将IRemoteObject对象数组写入MessageParcel。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ----------- | --------------- | ---- | ----- |
+ | objectArray | IRemoteObject[] | 是 | 要写入MessageParcel的IRemoteObject对象数组。 |
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------- | -------------------------------------------------------------------------------------------------------------------- |
+ | boolean | 如果IRemoteObject对象数组成功写入MessageParcel,则返回true;如果对象为null或数组写入MessageParcel失败,则返回false。 |
+
+**示例:**
+
+ ```
+ class MyDeathRecipient {
+ onRemoteDied() {
+ console.log("server died");
+ }
+ }
+ class TestRemoteObject extends rpc.RemoteObject {
+ constructor(descriptor) {
+ super(descriptor);
+ this.attachLocalInterface(this, descriptor);
+ }
+ addDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
+ return true;
+ }
+ removeDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
+ return true;
+ }
+ isObjectDead(): boolean {
+ return false;
+ }
+ asObject(): rpc.IRemoteObject {
+ return this;
+ }
+ }
+ let a = [new TestRemoteObject("testObject1"), new TestRemoteObject("testObject2"), new TestRemoteObject("testObject3")];
+ let data = rpc.MessageParcel.create();
+ let result = data.writeRemoteObjectArray(a);
+ console.log("RpcClient: writeRemoteObjectArray is " + result);
+ ```
+
+
+### readRemoteObjectArray8+
+
+readRemoteObjectArray(objects: IRemoteObject[]): void
+
+从MessageParcel读取IRemoteObject对象数组。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------- | --------------- | ---- | --------- |
+ | objects | IRemoteObject[] | 是 | 从MessageParcel读取的IRemoteObject对象数组。 |
+
+**示例:**
+
+ ```
+ class MyDeathRecipient {
+ onRemoteDied() {
+ console.log("server died");
+ }
+ }
+ class TestRemoteObject extends rpc.RemoteObject {
+ constructor(descriptor) {
+ super(descriptor);
+ this.attachLocalInterface(this, descriptor);
+ }
+ addDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
+ return true;
+ }
+ removeDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
+ return true;
+ }
+ isObjectDead(): boolean {
+ return false;
+ }
+ asObject(): rpc.IRemoteObject {
+ return this;
+ }
+ }
+ let a = [new TestRemoteObject("testObject1"), new TestRemoteObject("testObject2"), new TestRemoteObject("testObject3")];
+ let data = rpc.MessageParcel.create();
+ let result = data.writeRemoteObjectArray(a);
+ let b = new Array(3);
+ data.readRemoteObjectArray(b);
+ ```
+
+
+### readRemoteObjectArray8+
+
+readRemoteObjectArray(): IRemoteObject[]
+
+从MessageParcel读取IRemoteObject对象数组。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | --------------- | -------- |
+ | IRemoteObject[] | 返回IRemoteObject对象数组。 |
+
+**示例:**
+
+ ```
+ class MyDeathRecipient {
+ onRemoteDied() {
+ console.log("server died");
+ }
+ }
+ class TestRemoteObject extends rpc.RemoteObject {
+ constructor(descriptor) {
+ super(descriptor);
+ this.attachLocalInterface(this, descriptor);
+ }
+ addDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
+ return true;
+ }
+ removeDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
+ return true;
+ }
+ isObjectDead(): boolean {
+ return false;
+ }
+ asObject(): rpc.IRemoteObject {
+ return this;
+ }
+ }
+ let a = [new TestRemoteObject("testObject1"), new TestRemoteObject("testObject2"), new TestRemoteObject("testObject3")];
+ let data = rpc.MessageParcel.create();
+ let result = data.writeRemoteObjectArray(a);
+ console.log("RpcClient: readRemoteObjectArray is " + result);
+ let b = data.readRemoteObjectArray();
+ console.log("RpcClient: readRemoteObjectArray is " + b);
+ ```
+
+
+### closeFileDescriptor8+
+
+static closeFileDescriptor(fd: number): void
+
+关闭给定的文件描述符。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | ------ | ---- | -------------------- |
+ | fd | number | 是 | 要关闭的文件描述符。 |
+
+**示例:**
+
+ ```
+ import fileio from '@ohos.fileio';
+ let filePath = "path/to/file";
+ let fd = fileio.openSync(filePath, 0o2| 0o100, 0o666);
+ rpc.MessageParcel.closeFileDescriptor(fd);
+ ```
+
+
+### dupFileDescriptor8+
+
+static dupFileDescriptor(fd: number) :number
+
+复制给定的文件描述符。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | ------ | ---- | ------------------------ |
+ | fd | number | 是 | 表示已存在的文件描述符。 |
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------ | -------------------- |
+ | number | 返回新的文件描述符。 |
+
+**示例:**
+
+ ```
+ import fileio from '@ohos.fileio';
+ let filePath = "path/to/file";
+ let fd = fileio.openSync(filePath, 0o2| 0o100, 0o666);
+ let newFd = rpc.MessageParcel.dupFileDescriptor(fd);
+ ```
+
+
+### containFileDescriptors8+
+
+containFileDescriptors(): boolean
+
+检查此MessageParcel对象是否包含文件描述符。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------- | ------------------------------------------------------------------ |
+ | boolean | 如果此MessageParcel对象包含文件描述符,则返回true;否则返回false。 |
+
+**示例:**
+
+ ```
+ import fileio from '@ohos.fileio';
+ let parcel = new rpc.MessageParcel();
+ let filePath = "path/to/file";
+ let r1 = parcel.containFileDescriptors();
+ let fd = fileio.openSync(filePath, 0o2| 0o100, 0o666);
+ let writeResult = parcel.writeFileDescriptor(fd);
+ console.log("RpcTest: parcel writeFd result is : " + writeResult);
+ let containFD = parcel.containFileDescriptors();
+ console.log("RpcTest: parcel after write fd containFd result is : " + containFD);
+ ```
+
+
+### writeFileDescriptor8+
+
+writeFileDescriptor(fd: number): boolean
+
+写入文件描述符到MessageParcel。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | ------ | ---- | ------------ |
+ | fd | number | 是 | 文件描述符。 |
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------- | ----------------------------------------- |
+ | boolean | 如果操作成功,则返回true;否则返回false。 |
+
+**示例:**
+
+ ```
+ import fileio from '@ohos.fileio';
+ let parcel = new rpc.MessageParcel();
+ let filePath = "path/to/file";
+ let fd = fileio.openSync(filePath, 0o2| 0o100, 0o666);
+ let writeResult = parcel.writeFileDescriptor(fd);
+ console.log("RpcTest: parcel writeFd result is : " + writeResult);
+ ```
+
+
+### readFileDescriptor8+
+
+readFileDescriptor(): number
+
+从MessageParcel中读取文件描述符。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------ | ---------------- |
+ | number | 返回文件描述符。 |
+
+**示例:**
+
+ ```
+ import fileio from '@ohos.fileio';
+ let parcel = new rpc.MessageParcel();
+ let filePath = "path/to/file";
+ let fd = fileio.openSync(filePath, 0o2| 0o100, 0o666);
+ let writeResult = parcel.writeFileDescriptor(fd);
+ let readFD = parcel.readFileDescriptor();
+ console.log("RpcTest: parcel read fd is : " + readFD);
+ ```
+
+
+### writeAshmem8+
+
+writeAshmem(ashmem: Ashmem): boolean
+
+将指定的匿名共享对象写入此MessageParcel。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | ------ | ---- | ----------------------------------- |
+ | ashmem | Ashmem | 是 | 要写入MessageParcel的匿名共享对象。 |
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------- | -------------------------------------------------------------------- |
+ | boolean | 如果匿名共享对象成功写入此MessageParcel,则返回true;否则返回false。 |
+
+**示例:**
+
+ ```
+ let parcel = new rpc.MessageParcel();
+ let ashmem = rpc.Ashmem.createAshmem("ashmem", 1024);
+ let isWriteSuccess = parcel.writeAshmem(ashmem);
+ console.log("RpcTest: write ashmem to result is : " + isWriteSuccess);
+ ```
+
+
+### readAshmem8+
+
+readAshmem(): Ashmem
+
+从MessageParcel读取匿名共享对象。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------ | ------------------ |
+ | Ashmem | 返回匿名共享对象。 |
+
+**示例:**
+
+ ```
+ let parcel = new rpc.MessageParcel();
+ let ashmem = rpc.Ashmem.createAshmem("ashmem", 1024);
+ let isWriteSuccess = parcel.writeAshmem(ashmem);
+ console.log("RpcTest: write ashmem to result is : " + isWriteSuccess);
+ let readAshmem = parcel.readAshmem();
+ console.log("RpcTest: read ashmem to result is : " + readAshmem);
+ ```
+
+
+### getRawDataCapacity8+
+
+getRawDataCapacity(): number
+
+获取MessageParcel可以容纳的最大原始数据量。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------ | ---------------------------------------------------------- |
+ | number | 返回MessageParcel可以容纳的最大原始数据量,即128 Mb。 |
+
+**示例:**
+
+ ```
+ let parcel = new rpc.MessageParcel();
+ let result = parcel.getRawDataCapacity();
+ console.log("RpcTest: parcel get RawDataCapacity result is : " + result);
+ ```
+
+
+### writeRawData8+
+
+writeRawData(rawData: number[], size: number): boolean
+
+将原始数据写入MessageParcel对象。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------- | -------- | ---- | ---------------------------------- |
+ | rawData | number[] | 是 | 要写入的原始数据。 |
+ | size | number | 是 | 发送的原始数据大小,以字节为单位。 |
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------- | ----------------------------------------- |
+ | boolean | 如果操作成功,则返回true;否则返回false。 |
+
+**示例:**
+
+ ```
+ let parcel = new rpc.MessageParcel();
+ let arr = [1, 2, 3, 4, 5];
+ let isWriteSuccess = parcel.writeRawData(arr, arr.length);
+ console.log("RpcTest: parcel write raw data result is : " + isWriteSuccess);
+ ```
+
+
+### readRawData8+
+
+readRawData(size: number): number[]
+
+从MessageParcel读取原始数据。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | ------ | ---- | ------------------------ |
+ | size | number | 是 | 要读取的原始数据的大小。 |
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | -------- | ------------------------------ |
+ | number[] | 返回原始数据(以字节为单位)。 |
+
+**示例:**
+
+ ```
+ let parcel = new rpc.MessageParcel();
+ let arr = [1, 2, 3, 4, 5];
+ let isWriteSuccess = parcel.writeRawData(arr, arr.length);
+ console.log("RpcTest: parcel write raw data result is : " + isWriteSuccess);
+ let result = parcel.readRawData(5);
+ console.log("RpcTest: parcel read raw data result is : " + result);
+ ```
+
+
+## Parcelable9+
+
+> **说明:**
+> 本类从API version 9开始启用,代替Sequenceable类。
+
+在进程间通信(IPC)期间,将类的对象写入MessageSequence并从MessageSequence中恢复它们。
+
+### marshalling
+
+marshalling(dataOut: MessageSequence): boolean
+
+将此可序列对象封送到MessageSequence中。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------- | --------------- | ---- | ------------------------------------------- |
+ | dataOut | MessageSequence | 是 | 可序列对象将被封送到的MessageSequence对象。 |
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------- | ----------------------------------------- |
+ | boolean | 如果封送成功,则返回true;否则返回false。 |
+
+**示例:**
+
+ ```
+ class MyParcelable {
+ num: number;
+ str: string;
+ constructor(num, str) {
+ this.num = num;
+ this.str = str;
+ }
+ marshalling(messageSequence) {
+ messageSequence.writeInt(this.num);
+ messageSequence.writeString(this.str);
+ return true;
+ }
+ unmarshalling(messageSequence) {
+ this.num = messageSequence.readInt();
+ this.str = messageSequence.readString();
+ return true;
+ }
+ }
+ let parcelable = new MyParcelable(1, "aaa");
+ let data = rpc.MessageSequence.create();
+ let result = data.writeParcelable(parcelable);
+ console.log("RpcClient: writeParcelable is " + result);
+ let ret = new MyParcelable(0, "");
+ let result2 = data.readParcelable(ret);
+ console.log("RpcClient: readParcelable is " + result2);
+ ```
+
+
+### unmarshalling
+
+unmarshalling(dataIn: MessageSequence) : boolean
+
+从MessageSequence中解封此可序列对象。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | --------------- | ---- | ----------------------------------------------- |
+ | dataIn | MessageSequence | 是 | 已将可序列对象封送到其中的MessageSequence对象。 |
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------- | --------------------------------------------- |
+ | boolean | 如果可序列化成功,则返回true;否则返回false。 |
+
+**示例:**
+
+ ```
+ class MyParcelable {
+ num: number;
+ str: string;
+ constructor(num, str) {
+ this.num = num;
+ this.str = str;
+ }
+ marshalling(messageSequence) {
+ messageSequence.writeInt(this.num);
+ messageSequence.writeString(this.str);
+ return true;
+ }
+ unmarshalling(messageSequence) {
+ this.num = messageSequence.readInt();
+ this.str = messageSequence.readString();
+ return true;
+ }
+ }
+ let parcelable = new MyParcelable(1, "aaa");
+ let data = rpc.MessageSequence.create();
+ let result = data.writeParcelable(parcelable);
+ console.log("RpcClient: writeParcelable is " + result);
+ let ret = new MyParcelable(0, "");
+ let result2 = data.readParcelable(ret);
+ console.log("RpcClient: readParcelable is " + result2);
+ ```
+
+
+## Sequenceabledeprecated
+
+在进程间通信(IPC)期间,将类的对象写入MessageParcel并从MessageParcel中恢复它们。后续使用Parcelable类替代。
+
+### marshalling
+
+marshalling(dataOut: MessageParcel): boolean
+
+将此可序列对象封送到MessageParcel中。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------- | ------------------------------- | ---- | ----------------------------------------- |
+ | dataOut | [MessageParcel](#messageparcel) | 是 | 可序列对象将被封送到的MessageParcel对象。 |
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------- | ----------------------------------------- |
+ | boolean | 如果封送成功,则返回true;否则返回false。 |
+
+**示例:**
+
+ ```
+ class MySequenceable {
+ num: number;
+ str: string;
+ constructor(num, str) {
+ this.num = num;
+ this.str = str;
+ }
+ marshalling(messageParcel) {
+ messageParcel.writeInt(this.num);
+ messageParcel.writeString(this.str);
+ return true;
+ }
+ unmarshalling(messageParcel) {
+ this.num = messageParcel.readInt();
+ this.str = messageParcel.readString();
+ return true;
+ }
+ }
+ let sequenceable = new MySequenceable(1, "aaa");
+ let data = rpc.MessageParcel.create();
+ let result = data.writeSequenceable(sequenceable);
+ console.log("RpcClient: writeSequenceable is " + result);
+ let ret = new MySequenceable(0, "");
+ let result2 = data.readSequenceable(ret);
+ console.log("RpcClient: readSequenceable is " + result2);
+ ```
+
+
+### unmarshalling
+
+unmarshalling(dataIn: MessageParcel) : boolean
+
+从MessageParcel中解封此可序列对象。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | ------------------------------- | ---- | --------------------------------------------- |
+ | dataIn | [MessageParcel](#messageparcel) | 是 | 已将可序列对象封送到其中的MessageParcel对象。 |
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------- | --------------------------------------------- |
+ | boolean | 如果可序列化成功,则返回true;否则返回false。 |
+
+**示例:**
+
+ ```
+ class MySequenceable {
+ num: number;
+ str: string;
+ constructor(num, str) {
+ this.num = num;
+ this.str = str;
+ }
+ marshalling(messageParcel) {
+ messageParcel.writeInt(this.num);
+ messageParcel.writeString(this.str);
+ return true;
+ }
+ unmarshalling(messageParcel) {
+ this.num = messageParcel.readInt();
+ this.str = messageParcel.readString();
+ return true;
+ }
+ }
+ let sequenceable = new MySequenceable(1, "aaa");
+ let data = rpc.MessageParcel.create();
+ let result = data.writeSequenceable(sequenceable);
+ console.log("RpcClient: writeSequenceable is " + result);
+ let ret = new MySequenceable(0, "");
+ let result2 = data.readSequenceable(ret);
+ console.log("RpcClient: readSequenceable is " + result2);
+ ```
+
+
+## IRemoteBroker
+
+远端对象的代理持有者。用于获取代理对象。
+
+### asObject
+
+asObject(): IRemoteObject
+
+需派生类实现,获取代理或远端对象。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ---- | ----- |
+ | [IRemoteObject](#iremoteobject) | 如果调用者是RemoteObject对象,则直接返回本身;如果调用者是[RemoteProxy](#remoteproxy)对象,则返回它的持有者[IRemoteObject](#iremoteobject)。 |
+
+**示例:**
+
+ ```
+ class TestAbility extends rpc.RemoteObject {
+ asObject() {
+ return this;
+ }
+ }
+ ```
+
+**示例:**
+
+ ```
+ class TestProxy {
+ remote: rpc.RemoteObject;
+ constructor(remote) {
+ this.remote = remote;
+ }
+ asObject() {
+ return this.remote;
+ }
+ }
+ ```
+
+## DeathRecipient
+
+用于订阅远端对象的死亡通知。当被订阅该通知的远端对象死亡时,本端可收到消息,调用[onRemoteDied](#onremotedied)接口。远端对象死亡可以为远端对象所在进程死亡,远端对象所在设备关机或重启,当远端对象与本端对象属于不同设备时,也可为远端对象离开组网时。
+
+### onRemoteDied
+
+onRemoteDied(): void
+
+在成功添加死亡通知订阅后,当远端对象死亡时,将自动调用本方法。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**示例:**
+
+ ```
+ class MyDeathRecipient {
+ onRemoteDied() {
+ console.log("server died");
+ }
+ }
+ ```
+
+## RequestResult9+
+
+发送请求的响应结果。
+
+**系统能力**:以下各项对应的系统能力均为SystemCapability.Communication.IPC.Core。
+
+ | 参数 | 值 | 说明 |
+ | ------- | --------------- | ------------------------------------- |
+ | errCode | number | 错误码。 |
+ | code | number | 消息代码。 |
+ | data | MessageSequence | 发送给对端进程的MessageSequence对象。 |
+ | reply | MessageSequence | 对端进程返回的MessageSequence对象。 |
+
+## SendRequestResult8+(deprecated)
+
+发送请求的响应结果。后续使用RequestResult类替代。
+
+**系统能力**:以下各项对应的系统能力均为SystemCapability.Communication.IPC.Core。
+
+ | 参数 | 值 | 说明 |
+ | ------- | ------------- | ----------------------------------- |
+ | errCode | number | 错误码。 |
+ | code | number | 消息代码。 |
+ | data | MessageParcel | 发送给对端进程的MessageParcel对象。 |
+ | reply | MessageParcel | 对端进程返回的MessageParcel对象。 |
+
+## IRemoteObject
+
+该接口可用于查询或获取接口描述符、添加或删除死亡通知、转储对象状态到特定文件、发送消息。
+
+### getLocalInterface9+
+
+getLocalInterface(descriptor: string): IRemoteBroker
+
+查询接口。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ---------- | ------ | ---- | -------------------- |
+ | descriptor | string | 是 | 接口描述符的字符串。 |
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------------- | --------------------------------------------- |
+ | IRemoteBroker | 返回绑定到指定接口描述符的IRemoteBroker对象。 |
+
+**异常:**
+
+ | 错误码 | 说明 |
+ | ----------------- | ------------ |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
+
+
+### queryLocalInterfacedeprecated
+
+queryLocalInterface(descriptor: string): IRemoteBroker
+
+查询接口。后续使用getLocalInterface方法替代。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ---------- | ------ | ---- | -------------------- |
+ | descriptor | string | 是 | 接口描述符的字符串。 |
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------------- | --------------------------------------------- |
+ | IRemoteBroker | 返回绑定到指定接口描述符的IRemoteBroker对象。 |
+
+
+### sendRequest(deprecated)
+
+sendRequest(code : number, data : MessageParcel, reply : MessageParcel, options : MessageOption): boolean
+
+> **说明:**
+> 从 API Version 8 开始废弃,建议使用[sendMessageRequest9+](#sendmessagerequest)替代。
+
+以同步或异步方式向对端进程发送MessageParcel消息。如果为选项设置了异步模式,则期约立即兑现,reply报文里没有内容。如果为选项设置了同步模式,则期约将在sendRequest返回时兑现,回复内容在reply报文里。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------- | ------------------------------- | ---- | ---- |
+ | code | number | 是 | 本次请求调用的消息码,由通信双方确定。如果接口由IDL工具生成,则消息代码由IDL自动生成。 |
+ | data | [MessageParcel](#messageparcel) | 是 | 保存待发送数据的 MessageParcel对象。 |
+ | reply | [MessageParcel](#messageparcel) | 是 | 接收应答数据的MessageParcel对象。 |
+ | options | [MessageOption](#messageoption) | 是 | 本次请求的同异步模式,默认同步调用。 |
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------- | --------------------------------------------- |
+ | boolean | 返回一个布尔值,true表示成功,false表示失败。 |
+
+
+### sendRequest8+(deprecated)
+
+sendRequest(code : number, data : MessageParcel, reply : MessageParcel, options : MessageOption): Promise<SendRequestResult>
+
+以同步或异步方式向对端进程发送MessageParcel消息。如果为选项设置了异步模式,则期约立即兑现,reply报文里没有内容。如果为选项设置了同步模式,则期约将在sendRequest返回时兑现,回复内容在reply报文里。后续建议使用sendMessageRequest9+替代。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------- | ------------------------------- | ---- | -------------------------------------------------------------------------------------- |
+ | code | number | 是 | 本次请求调用的消息码,由通信双方确定。如果接口由IDL工具生成,则消息代码由IDL自动生成。 |
+ | data | [MessageParcel](#messageparcel) | 是 | 保存待发送数据的 MessageParcel对象。 |
+ | reply | [MessageParcel](#messageparcel) | 是 | 接收应答数据的MessageParcel对象。 |
+ | options | [MessageOption](#messageoption) | 是 | 本次请求的同异步模式,默认同步调用。 |
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | -------------------------------- | --------------------------------------------- |
+ | Promise<SendRequestResult> | 返回一个期约,兑现值是sendRequestResult实例。 |
+
+
+### sendMessageRequest9+
+
+sendMessageRequest(code : number, data : MessageSequence, reply : MessageSequence, options : MessageOption): Promise<RequestResult>
+
+以同步或异步方式向对端进程发送MessageSequence消息。如果为选项设置了异步模式,则期约立即兑现,reply报文里没有内容。如果为选项设置了同步模式,则期约将在sendMessageRequest返回时兑现,回复内容在reply报文里。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------- | ------------------------------- | ---- | -------------------------------------------------------------------------------------- |
+ | code | number | 是 | 本次请求调用的消息码,由通信双方确定。如果接口由IDL工具生成,则消息代码由IDL自动生成。 |
+ | data | MessageSequence | 是 | 保存待发送数据的 MessageSequence对象。 |
+ | reply | MessageSequence | 是 | 接收应答数据的MessageSequence对象。 |
+ | options | [MessageOption](#messageoption) | 是 | 本次请求的同异步模式,默认同步调用。 |
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ---------------------------- | ----------------------------------------- |
+ | Promise<RequestResult> | 返回一个期约,兑现值是requestResult实例。 |
+
+
+### sendMessageRequest9+
+
+sendMessageRequest(code: number, data: MessageSequence, reply: MessageSequence, options: MessageOption, callback: AsyncCallback<RequestResult>): void
+
+以同步或异步方式向对端进程发送MessageSequence消息。如果为选项设置了异步模式,则立即收到回调,reply报文里没有内容。如果为选项设置了同步模式,则将在sendRequest返回时收到回调,回复内容在reply报文里。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | -------- | ---------------------------------- | ---- | -------------------------------------------------------------------------------------- |
+ | code | number | 是 | 本次请求调用的消息码,由通信双方确定。如果接口由IDL工具生成,则消息代码由IDL自动生成。 |
+ | data | MessageSequence | 是 | 保存待发送数据的 MessageSequence对象。 |
+ | reply | MessageSequence | 是 | 接收应答数据的MessageSequence对象。 |
+ | options | [MessageOption](#messageoption) | 是 | 本次请求的同异步模式,默认同步调用。 |
+ | callback | AsyncCallback<RequestResult> | 是 | 接收发送结果的回调。 |
+
+
+### sendRequest8+(deprecated)
+
+sendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption, callback: AsyncCallback<SendRequestResult>): void
+
+以同步或异步方式向对端进程发送MessageParcel消息。如果为选项设置了异步模式,则立即收到回调,reply报文里没有内容。如果为选项设置了同步模式,则将在sendRequest返回时收到回调,回复内容在reply报文里。后续建议使用sendMessageRequest替代。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | -------- | -------------------------------------- | ---- | -------------------------------------------------------------------------------------- |
+ | code | number | 是 | 本次请求调用的消息码,由通信双方确定。如果接口由IDL工具生成,则消息代码由IDL自动生成。 |
+ | data | [MessageParcel](#messageparcel) | 是 | 保存待发送数据的 MessageParcel对象。 |
+ | reply | [MessageParcel](#messageparcel) | 是 | 接收应答数据的MessageParcel对象。 |
+ | options | [MessageOption](#messageoption) | 是 | 本次请求的同异步模式,默认同步调用。 |
+ | callback | AsyncCallback<SendRequestResult> | 是 | 接收发送结果的回调。 |
+
+
+### registerDeathRecipient9+
+
+registerDeathRecipient(recipient: DeathRecipient, flags: number): void
+
+注册用于接收远程对象死亡通知的回调。如果与RemoteProxy对象匹配的远程对象进程死亡,则调用此方法。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | --------- | --------------------------------- | ---- | -------------- |
+ | recipient | [DeathRecipient](#deathrecipient) | 是 | 要注册的回调。 |
+ | flags | number | 是 | 死亡通知标志。 |
+
+**异常:**
+
+ | 错误码 | 说明 |
+ | ------------------------------------ | ----------------- |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
+ | PROXY_OR_REMOTE_OBJECT_INVALID_ERROR | 封装的IPC对象为空 |
+
+
+### addDeathrecipientdeprecated
+
+addDeathRecipient(recipient: DeathRecipient, flags: number): boolean
+
+注册用于接收远程对象死亡通知的回调。如果与RemoteProxy对象匹配的远程对象进程死亡,则调用此方法。建议使用registerDeathRecipient替代。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | --------- | --------------------------------- | ---- | -------------- |
+ | recipient | [DeathRecipient](#deathrecipient) | 是 | 要注册的回调。 |
+ | flags | number | 是 | 死亡通知标志。 |
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------- | --------------------------------------------- |
+ | boolean | 如果回调注册成功,则返回true;否则返回false。 |
+
+
+### unregisterDeathRecipient9+
+
+removeDeathRecipient(recipient: DeathRecipient, flags: number): void
+
+注销用于接收远程对象死亡通知的回调。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | --------- | --------------------------------- | ---- | -------------- |
+ | recipient | [DeathRecipient](#deathrecipient) | 是 | 要注销的回调。 |
+ | flags | number | 是 | 死亡通知标志。 |
+
+**异常:**
+
+ | 错误码 | 说明 |
+ | ------------------------------------ | ----------------- |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
+ | PROXY_OR_REMOTE_OBJECT_INVALID_ERROR | 封装的IPC对象为空 |
+
+
+### removeDeathRecipientdeprecated
+
+removeDeathRecipient(recipient: DeathRecipient, flags: number): boolean
+
+注销用于接收远程对象死亡通知的回调。建议使用unregisterDeathRecipient替代。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | --------- | --------------------------------- | ---- | -------------- |
+ | recipient | [DeathRecipient](#deathrecipient) | 是 | 要注销的回调。 |
+ | flags | number | 是 | 死亡通知标志。 |
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------- | --------------------------------------------- |
+ | boolean | 如果回调成功注销,则返回true;否则返回false。 |
+
+
+### getDescriptor9+
+
+getDescriptor(): string
+
+获取对象的接口描述符。接口描述符为字符串。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------ | ---------------- |
+ | string | 返回接口描述符。 |
+
+**异常:**
+
+ | 错误码 | 说明 |
+ | ------------------------------------ | -------------- |
+ | PROXY_OR_REMOTE_OBJECT_INVALID_ERROR | 代理对象已失效 |
+
+
+### getInterfaceDescriptordeprecated
+
+getInterfaceDescriptor(): string
+
+获取对象的接口描述符。接口描述符为字符串。建议使用getDescriptor替代。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------ | ---------------- |
+ | string | 返回接口描述符。 |
+
+
+### isObjectDead
+
+isObjectDead(): boolean
+
+检查当前对象是否死亡。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------- | ------------------------------------------- |
+ | boolean | 如果对象已死亡,则返回true;否则返回false。 |
+
+
+## RemoteProxy
+
+实现IRemoteObject代理对象。
+
+**系统能力**:以下各项对应的系统能力均为SystemCapability.Communication.IPC.Core。
+
+| 参数 | 值 | 说明 |
+| --------------------- | ----------------------- | --------------------------------- |
+| PING_TRANSACTION | 1599098439 (0x5f504e47) | 内部指令码,用于测试IPC服务正常。 |
+| DUMP_TRANSACTION | 1598311760 (0x5f444d50) | 内部指令码,获取Binder内部状态。 |
+| INTERFACE_TRANSACTION | 1598968902 (0x5f4e5446) | 内部指令码,获取对端接口描述符。 |
+| MIN_TRANSACTION_ID | 1 (0x00000001) | 最小有效指令码。 |
+| MAX_TRANSACTION_ID | 16777215 (0x00FFFFFF) | 最大有效指令码。 |
+
+
+### sendRequest(deprecated)
+
+sendRequest(code : number, data : MessageParcel, reply : MessageParcel, options : MessageOption): boolean
+
+以同步或异步方式向对端进程发送MessageParcel消息。如果为选项设置了异步模式,则期约立即兑现,reply报文里没有内容。如果为选项设置了同步模式,则期约将在sendRequest返回时兑现,回复内容在reply报文里。建议使用sendRequestAsync9+替代。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------- | ------------------------------- | ---- | -------------------------------------------------------------------------------------- |
+ | code | number | 是 | 本次请求调用的消息码,由通信双方确定。如果接口由IDL工具生成,则消息代码由IDL自动生成。 |
+ | data | [MessageParcel](#messageparcel) | 是 | 保存待发送数据的 MessageParcel对象。 |
+ | reply | [MessageParcel](#messageparcel) | 是 | 接收应答数据的MessageParcel对象。 |
+ | options | [MessageOption](#messageoption) | 是 | 本次请求的同异步模式,默认同步调用。 |
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------- | --------------------------------------------- |
+ | boolean | 返回一个布尔值,true表示成功,false表示失败。 |
+
+**示例:**
+
+ ```
+ import FA from "@ohos.ability.featureAbility";
+ let proxy;
+ let connect = {
+ onConnect: function(elementName, remoteProxy) {
+ console.log("RpcClient: js onConnect called.");
+ proxy = remoteProxy;
+ },
+ onDisconnect: function(elementName) {
+ console.log("RpcClient: onDisconnect");
+ },
+ onFailed: function() {
+ console.log("RpcClient: onFailed");
+ }
+ };
+ let want = {
+ "bundleName": "com.ohos.server",
+ "abilityName": "com.ohos.server.MainAbility",
+ };
+ FA.connectAbility(want, connect);
+ let option = new rpc.MessageOption();
+ let data = rpc.MessageParcel.create();
+ let reply = rpc.MessageParcel.create();
+ data.writeInt(1);
+ data.writeString("hello");
+ let ret: boolean = proxy.sendRequest(1, data, reply, option);
+ if (ret) {
+ console.log("sendRequest got result");
+ let msg = reply.readString();
+ console.log("RPCTest: reply msg: " + msg);
+ } else {
+ console.log("RPCTest: sendRequest failed");
+ }
+ console.log("RPCTest: sendRequest ends, reclaim parcel");
+ data.reclaim();
+ reply.reclaim();
+ ```
+
+
+### sendMessageRequest9+
+
+sendMessageRequest(code : number, data : MessageSequence, reply : MessageSequence, options : MessageOption): Promise<RequestResult>
+以同步或异步方式向对端进程发送MessageSequence消息。如果为选项设置了异步模式,则期约立即兑现,reply报文里没有内容。如果为选项设置了同步模式,则期约将在sendMessageRequest返回时兑现,回复内容在reply报文里。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------- | ------------------------------- | ---- | -------------------------------------------------------------------------------------- |
+ | code | number | 是 | 本次请求调用的消息码,由通信双方确定。如果接口由IDL工具生成,则消息代码由IDL自动生成。 |
+ | data | MessageSequence | 是 | 保存待发送数据的 MessageSequence对象。 |
+ | reply | MessageSequence | 是 | 接收应答数据的MessageSequence对象。 |
+ | options | [MessageOption](#messageoption) | 是 | 本次请求的同异步模式,默认同步调用。 |
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ---------------------------- | ----------------------------------------- |
+ | Promise<RequestResult> | 返回一个期约,兑现值是requestResult实例。 |
+
+**示例:**
+
+ ```
+ import FA from "@ohos.ability.featureAbility";
+ let proxy;
+ let connect = {
+ onConnect: function(elementName, remoteProxy) {
+ console.log("RpcClient: js onConnect called.");
+ proxy = remoteProxy;
+ },
+ onDisconnect: function(elementName) {
+ console.log("RpcClient: onDisconnect");
+ },
+ onFailed: function() {
+ console.log("RpcClient: onFailed");
+ }
+ };
+ let want = {
+ "bundleName": "com.ohos.server",
+ "abilityName": "com.ohos.server.MainAbility",
+ };
+ FA.connectAbility(want, connect);
+ let option = new rpc.MessageOption();
+ let data = rpc.MessageSequence.create();
+ let reply = rpc.MessageSequence.create();
+ data.writeInt(1);
+ data.writeString("hello");
+ proxy.sendMessageRequest(1, data, reply, option)
+ .then(function(result) {
+ if (result.errCode === 0) {
+ console.log("sendMessageRequest got result");
+ result.reply.readException();
+ let msg = result.reply.readString();
+ console.log("RPCTest: reply msg: " + msg);
+ } else {
+ console.log("RPCTest: sendMessageRequest failed, errCode: " + result.errCode);
+ }
+ }).catch(function(e) {
+ console.log("RPCTest: sendMessageRequest got exception: " + e.message);
+ }).finally (() => {
+ console.log("RPCTest: sendMessageRequest ends, reclaim parcel");
+ data.reclaim();
+ reply.reclaim();
+ });
+ ```
+
+
+### sendRequest8+(deprecated)
+
+sendRequest(code : number, data : MessageParcel, reply : MessageParcel, options : MessageOption): Promise<SendRequestResult>
+
+以同步或异步方式向对端进程发送MessageParcel消息。如果为选项设置了异步模式,则期约立即兑现,reply报文里没有内容。如果为选项设置了同步模式,则期约将在sendRequest返回时兑现,回复内容在reply报文里。建议使用sendMessageRequest9+替代。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------- | ------------------------------- | ---- | -------------------------------------------------------------------------------------- |
+ | code | number | 是 | 本次请求调用的消息码,由通信双方确定。如果接口由IDL工具生成,则消息代码由IDL自动生成。 |
+ | data | [MessageParcel](#messageparcel) | 是 | 保存待发送数据的 MessageParcel对象。 |
+ | reply | [MessageParcel](#messageparcel) | 是 | 接收应答数据的MessageParcel对象。 |
+ | options | [MessageOption](#messageoption) | 是 | 本次请求的同异步模式,默认同步调用。 |
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | -------------------------------- | --------------------------------------------- |
+ | Promise<SendRequestResult> | 返回一个期约,兑现值是sendRequestResult实例。 |
+
+**示例:**
+
+ ```
+ import FA from "@ohos.ability.featureAbility";
+ let proxy;
+ let connect = {
+ onConnect: function(elementName, remoteProxy) {
+ console.log("RpcClient: js onConnect called.");
+ proxy = remoteProxy;
+ },
+ onDisconnect: function(elementName) {
+ console.log("RpcClient: onDisconnect");
+ },
+ onFailed: function() {
+ console.log("RpcClient: onFailed");
+ }
+ };
+ let want = {
+ "bundleName": "com.ohos.server",
+ "abilityName": "com.ohos.server.MainAbility",
+ };
+ FA.connectAbility(want, connect);
+ let option = new rpc.MessageOption();
+ let data = rpc.MessageParcel.create();
+ let reply = rpc.MessageParcel.create();
+ data.writeInt(1);
+ data.writeString("hello");
+ proxy.sendRequest(1, data, reply, option)
+ .then(function(result) {
+ if (result.errCode === 0) {
+ console.log("sendRequest got result");
+ result.reply.readException();
+ let msg = result.reply.readString();
+ console.log("RPCTest: reply msg: " + msg);
+ } else {
+ console.log("RPCTest: sendRequest failed, errCode: " + result.errCode);
+ }
+ }).catch(function(e) {
+ console.log("RPCTest: sendRequest got exception: " + e.message);
+ }).finally (() => {
+ console.log("RPCTest: sendRequest ends, reclaim parcel");
+ data.reclaim();
+ reply.reclaim();
+ });
+ ```
+
+### sendMessageRequest9+
+
+sendMessageRequest(code: number, data: MessageSequence, reply: MessageSequence, options: MessageOption, callback: AsyncCallback<RequestResult>): void
+
+以同步或异步方式向对端进程发送MessageSequence消息。如果为选项设置了异步模式,则立即收到回调,reply报文里没有内容。如果为选项设置了同步模式,则将在sendMessageRequest返回后的某个时机执行回调,回复内容在RequestResult的reply报文里。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | -------- | ---------------------------------- | ---- | -------------------------------------------------------------------------------------- |
+ | code | number | 是 | 本次请求调用的消息码,由通信双方确定。如果接口由IDL工具生成,则消息代码由IDL自动生成。 |
+ | data | MessageSequence | 是 | 保存待发送数据的 MessageSequence对象。 |
+ | reply | MessageSequence | 是 | 接收应答数据的MessageSequence对象。 |
+ | options | [MessageOption](#messageoption) | 是 | 本次请求的同异步模式,默认同步调用。 |
+ | callback | AsyncCallback<RequestResult> | 是 | 接收发送结果的回调。 |
+
+**异常:**
+
+ | 错误码 | 说明 |
+ | ----------------- | ------------ |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
+
+**示例:**
+
+ ```
+ import FA from "@ohos.ability.featureAbility";
+ let proxy;
+ let connect = {
+ onConnect: function(elementName, remoteProxy) {
+ console.log("RpcClient: js onConnect called.");
+ proxy = remoteProxy;
+ },
+ onDisconnect: function(elementName) {
+ console.log("RpcClient: onDisconnect");
+ },
+ onFailed: function() {
+ console.log("RpcClient: onFailed");
+ }
+ };
+ let want = {
+ "bundleName": "com.ohos.server",
+ "abilityName": "com.ohos.server.MainAbility",
+ };
+ function sendRequestCallback(result) {
+ if (result.errCode === 0) {
+ console.log("sendRequest got result");
+ result.reply.readException();
+ let msg = result.reply.readString();
+ console.log("RPCTest: reply msg: " + msg);
+ } else {
+ console.log("RPCTest: sendRequest failed, errCode: " + result.errCode);
+ }
+ console.log("RPCTest: sendRequest ends, reclaim parcel");
+ result.data.reclaim();
+ result.reply.reclaim();
+ }
+ FA.connectAbility(want, connect);
+ let option = new rpc.MessageOption();
+ let data = rpc.MessageSequence.create();
+ let reply = rpc.MessageSequence.create();
+ data.writeInt(1);
+ data.writeString("hello");
+ try {
+ proxy.sendRequest(1, data, reply, option, sendRequestCallback);
+ } catch(error) {
+ console.info("rpc send sequence request fail, errorCode " + error.code);
+ console.info("rpc send sequence request fail, errorMessage " + error.message);
+ }
+ ```
-**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+### sendRequest8+(deprecated)
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | code | number | 是 | 本次请求调用的消息码,由通信双方确定。如果接口由IDL工具生成,则消息代码由IDL自动生成。 |
- | data | [MessageParcel](#messageparcel) | 是 | 保存待发送数据的 MessageParcel对象。 |
- | reply | [MessageParcel](#messageparcel) | 是 | 接收应答数据的MessageParcel对象。 |
- | options | [MessageOption](#messageoption) | 是 | 本次请求的同异步模式,默认同步调用。 |
+sendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption, callback: AsyncCallback<SendRequestResult>): void
+以同步或异步方式向对端进程发送MessageParcel消息。如果为选项设置了异步模式,则立即收到回调,reply报文里没有内容。如果为选项设置了同步模式,则将在sendRequest返回时收到回调,回复内容在reply报文里。建议使用sendMessageRequest替代。
-**返回值:**
+**系统能力**:SystemCapability.Communication.IPC.Core
- | 类型 | 说明 |
- | -------- | -------- |
- | boolean | 返回一个布尔值,true表示成功,false表示失败。|
+**参数**
+ | 参数名 | 类型 | 必填 | 说明 |
+ | -------- | -------------------------------------- | ---- | -------------------------------------------------------------------------------------- |
+ | code | number | 是 | 本次请求调用的消息码,由通信双方确定。如果接口由IDL工具生成,则消息代码由IDL自动生成。 |
+ | data | [MessageParcel](#messageparcel) | 是 | 保存待发送数据的 MessageParcel对象。 |
+ | reply | [MessageParcel](#messageparcel) | 是 | 接收应答数据的MessageParcel对象。 |
+ | options | [MessageOption](#messageoption) | 是 | 本次请求的同异步模式,默认同步调用。 |
+ | callback | AsyncCallback<SendRequestResult> | 是 | 接收发送结果的回调。 |
**示例:**
@@ -2852,50 +6346,54 @@ sendRequest(code : number, data : MessageParcel, reply : MessageParcel, options
"bundleName": "com.ohos.server",
"abilityName": "com.ohos.server.MainAbility",
};
+ function sendRequestCallback(result) {
+ if (result.errCode === 0) {
+ console.log("sendRequest got result");
+ result.reply.readException();
+ let msg = result.reply.readString();
+ console.log("RPCTest: reply msg: " + msg);
+ } else {
+ console.log("RPCTest: sendRequest failed, errCode: " + result.errCode);
+ }
+ console.log("RPCTest: sendRequest ends, reclaim parcel");
+ result.data.reclaim();
+ result.reply.reclaim();
+ }
FA.connectAbility(want, connect);
let option = new rpc.MessageOption();
let data = rpc.MessageParcel.create();
let reply = rpc.MessageParcel.create();
data.writeInt(1);
data.writeString("hello");
- let ret: boolean = proxy.sendRequest(1, data, reply, option);
- if (ret) {
- console.log("sendRequest got result");
- let msg = reply.readString();
- console.log("RPCTest: reply msg: " + msg);
- } else {
- console.log("RPCTest: sendRequest failed");
- }
- console.log("RPCTest: sendRequest ends, reclaim parcel");
- data.reclaim();
- reply.reclaim();
+ proxy.sendRequest(1, data, reply, option, sendRequestCallback);
```
-### sendRequest8+(deprecated)
-sendRequest(code : number, data : MessageParcel, reply : MessageParcel, options : MessageOption): Promise<SendRequestResult>
+### getLocalInterface9+
-> **说明:**
-> 从 API Version 9 开始废弃,建议使用[sendRequestAsync9+](#sendrequestasync9-1)替代。
+getLocalInterface(interface: string): IRemoteBroker
-以同步或异步方式向对端进程发送MessageParcel消息。如果为选项设置了异步模式,则期约立即兑现,reply报文里没有内容。如果为选项设置了同步模式,则期约将在sendRequest返回时兑现,回复内容在reply报文里。
+查询并获取当前接口描述符对应的本地接口对象。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | code | number | 是 | 本次请求调用的消息码,由通信双方确定。如果接口由IDL工具生成,则消息代码由IDL自动生成。 |
- | data | [MessageParcel](#messageparcel) | 是 | 保存待发送数据的 MessageParcel对象。 |
- | reply | [MessageParcel](#messageparcel) | 是 | 接收应答数据的MessageParcel对象。 |
- | options | [MessageOption](#messageoption) | 是 | 本次请求的同异步模式,默认同步调用。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | --------- | ------ | ---- | ---------------------- |
+ | interface | string | 是 | 需要查询的接口描述符。 |
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
- | Promise<SendRequestResult> | 返回一个期约,兑现值是sendRequestResult实例。|
+ | 类型 | 说明 |
+ | ------------- | ------------------------------------------ |
+ | IRemoteBroker | 默认返回Null,标识该接口是一个代理侧接口。 |
+
+**异常:**
+
+ | 错误码 | 说明 |
+ | ----------------- | ------------ |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
**示例:**
@@ -2907,7 +6405,7 @@ sendRequest(code : number, data : MessageParcel, reply : MessageParcel, options
console.log("RpcClient: js onConnect called.");
proxy = remoteProxy;
},
- onDisconnect: function(elementName) {
+ onDisconnect: function (elementName) {
console.log("RpcClient: onDisconnect");
},
onFailed: function() {
@@ -2915,56 +6413,39 @@ sendRequest(code : number, data : MessageParcel, reply : MessageParcel, options
}
};
let want = {
- "bundleName": "com.ohos.server",
- "abilityName": "com.ohos.server.MainAbility",
+ "bundleName":"com.ohos.server",
+ "abilityName":"com.ohos.server.MainAbility",
};
FA.connectAbility(want, connect);
- let option = new rpc.MessageOption();
- let data = rpc.MessageParcel.create();
- let reply = rpc.MessageParcel.create();
- data.writeInt(1);
- data.writeString("hello");
- proxy.sendRequest(1, data, reply, option)
- .then(function(result) {
- if (result.errCode === 0) {
- console.log("sendRequest got result");
- result.reply.readException();
- let msg = result.reply.readString();
- console.log("RPCTest: reply msg: " + msg);
- } else {
- console.log("RPCTest: sendRequest failed, errCode: " + result.errCode);
- }
- }).catch(function(e) {
- console.log("RPCTest: sendRequest got exception: " + e.message);
- }).finally (() => {
- console.log("RPCTest: sendRequest ends, reclaim parcel");
- data.reclaim();
- reply.reclaim();
- });
+ try {
+ let broker = proxy.getLocalInterface("testObject");
+ console.log("RpcClient: getLocalInterface is " + broker);
+ } catch(error) {
+ console.info("rpc get local interface fail, errorCode " + error.code);
+ console.info("rpc get local interface fail, errorMessage " + error.message);
+ }
```
-### sendRequestAsync9+
-sendRequestAsync(code : number, data : MessageParcel, reply : MessageParcel, options : MessageOption): Promise<SendRequestResult>
+### queryLocalInterfacedeprecated
+
+queryLocalInterface(interface: string): IRemoteBroker
-以同步或异步方式向对端进程发送MessageParcel消息。如果为选项设置了异步模式,则期约立即兑现,reply报文里没有内容。如果为选项设置了同步模式,则期约将在sendRequestAsync返回时兑现,回复内容在reply报文里。
+查询并获取当前接口描述符对应的本地接口对象。建议使用getLocalInterface替代。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | code | number | 是 | 本次请求调用的消息码,由通信双方确定。如果接口由IDL工具生成,则消息代码由IDL自动生成。 |
- | data | [MessageParcel](#messageparcel) | 是 | 保存待发送数据的 MessageParcel对象。 |
- | reply | [MessageParcel](#messageparcel) | 是 | 接收应答数据的MessageParcel对象。 |
- | options | [MessageOption](#messageoption) | 是 | 本次请求的同异步模式,默认同步调用。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | --------- | ------ | ---- | ---------------------- |
+ | interface | string | 是 | 需要查询的接口描述符。 |
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
- | Promise<SendRequestResult> | 返回一个期约,兑现值是sendRequestResult实例。|
+ | 类型 | 说明 |
+ | ------------- | ------------------------------------------ |
+ | IRemoteBroker | 默认返回Null,标识该接口是一个代理侧接口。 |
**示例:**
@@ -2976,7 +6457,7 @@ sendRequestAsync(code : number, data : MessageParcel, reply : MessageParcel, opt
console.log("RpcClient: js onConnect called.");
proxy = remoteProxy;
},
- onDisconnect: function(elementName) {
+ onDisconnect: function (elementName) {
console.log("RpcClient: onDisconnect");
},
onFailed: function() {
@@ -2984,51 +6465,36 @@ sendRequestAsync(code : number, data : MessageParcel, reply : MessageParcel, opt
}
};
let want = {
- "bundleName": "com.ohos.server",
- "abilityName": "com.ohos.server.MainAbility",
+ "bundleName":"com.ohos.server",
+ "abilityName":"com.ohos.server.MainAbility",
};
FA.connectAbility(want, connect);
- let option = new rpc.MessageOption();
- let data = rpc.MessageParcel.create();
- let reply = rpc.MessageParcel.create();
- data.writeInt(1);
- data.writeString("hello");
- proxy.sendRequestAsync(1, data, reply, option)
- .then(function(result) {
- if (result.errCode === 0) {
- console.log("sendRequestAsync got result");
- result.reply.readException();
- let msg = result.reply.readString();
- console.log("RPCTest: reply msg: " + msg);
- } else {
- console.log("RPCTest: sendRequestAsync failed, errCode: " + result.errCode);
- }
- }).catch(function(e) {
- console.log("RPCTest: sendRequestAsync got exception: " + e.message);
- }).finally (() => {
- console.log("RPCTest: sendRequestAsync ends, reclaim parcel");
- data.reclaim();
- reply.reclaim();
- });
+ let broker = proxy.queryLocalInterface("testObject");
+ console.log("RpcClient: queryLocalInterface is " + broker);
```
-### sendRequest8+
-sendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption, callback: AsyncCallback<SendRequestResult>): void
+### registerDeathRecipient9+
+
+registerDeathRecipient(recipient: DeathRecipient, flags: number): void
-以同步或异步方式向对端进程发送MessageParcel消息。如果为选项设置了异步模式,则立即收到回调,reply报文里没有内容。如果为选项设置了同步模式,则将在sendRequest返回时收到回调,回复内容在reply报文里。
+注册用于接收远程对象死亡通知的回调。如果与RemoteProxy对象匹配的远程对象进程死亡,则调用此方法。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | code | number | 是 | 本次请求调用的消息码,由通信双方确定。如果接口由IDL工具生成,则消息代码由IDL自动生成。 |
- | data | [MessageParcel](#messageparcel) | 是 | 保存待发送数据的 MessageParcel对象。 |
- | reply | [MessageParcel](#messageparcel) | 是 | 接收应答数据的MessageParcel对象。 |
- | options | [MessageOption](#messageoption) | 是 | 本次请求的同异步模式,默认同步调用。 |
- | callback | AsyncCallback<SendRequestResult> | 是 | 接收发送结果的回调。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | --------- | --------------------------------- | ---- | -------------- |
+ | recipient | [DeathRecipient](#deathrecipient) | 是 | 要注册的回调。 |
+ | flags | number | 是 | 死亡通知标志。 |
+
+**异常:**
+
+ | 错误码 | 说明 |
+ | ------------------------------------ | ----------------- |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
+ | PROXY_OR_REMOTE_OBJECT_INVALID_ERROR | 封装的IPC对象为空 |
**示例:**
@@ -3051,48 +6517,42 @@ sendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: Me
"bundleName": "com.ohos.server",
"abilityName": "com.ohos.server.MainAbility",
};
- function sendRequestCallback(result) {
- if (result.errCode === 0) {
- console.log("sendRequest got result");
- result.reply.readException();
- let msg = result.reply.readString();
- console.log("RPCTest: reply msg: " + msg);
- } else {
- console.log("RPCTest: sendRequest failed, errCode: " + result.errCode);
+ FA.connectAbility(want, connect);
+ class MyDeathRecipient {
+ onRemoteDied() {
+ console.log("server died");
}
- console.log("RPCTest: sendRequest ends, reclaim parcel");
- result.data.reclaim();
- result.reply.reclaim();
}
- FA.connectAbility(want, connect);
- let option = new rpc.MessageOption();
- let data = rpc.MessageParcel.create();
- let reply = rpc.MessageParcel.create();
- data.writeInt(1);
- data.writeString("hello");
- proxy.sendRequest(1, data, reply, option, sendRequestCallback);
+ let deathRecipient = new MyDeathRecipient();
+ try {
+ proxy.registerDeathRecippient(deathRecipient, 0);
+ } catch(error) {
+ console.info(proxy register deathRecipient fail, errorCode " + error.code);
+ console.info(proxy register deathRecipient fail, errorMessage " + error.message);
+ }
```
-### queryLocalInterface
+### addDeathRecippientdeprecated
-queryLocalInterface(interface: string): IRemoteBroker
+addDeathRecipient(recipient : DeathRecipient, flags : number): boolean
-查询并获取当前接口描述符对应的本地接口对象。
+注册用于接收远程对象死亡通知的回调,增加proxy对象上的死亡通知。建议使用registerDeathRecipient替代。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | interface | string | 是 | 需要查询的接口描述符。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | --------- | --------------------------------- | ---- | --------------------------------- |
+ | recipient | [DeathRecipient](#deathrecipient) | 是 | 收件人表示要注册的回调。 |
+ | flags | number | 是 | 死亡通知标志。保留参数。设置为0。 |
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
- | IRemoteBroker | 默认返回Null,标识该接口是一个代理侧接口。 |
+ | 类型 | 说明 |
+ | ------- | --------------------------------------------- |
+ | boolean | 如果回调注册成功,则返回true;否则返回false。 |
**示例:**
@@ -3104,7 +6564,7 @@ queryLocalInterface(interface: string): IRemoteBroker
console.log("RpcClient: js onConnect called.");
proxy = remoteProxy;
},
- onDisconnect: function (elementName) {
+ onDisconnect: function(elementName) {
console.log("RpcClient: onDisconnect");
},
onFailed: function() {
@@ -3112,35 +6572,40 @@ queryLocalInterface(interface: string): IRemoteBroker
}
};
let want = {
- "bundleName":"com.ohos.server",
- "abilityName":"com.ohos.server.MainAbility",
+ "bundleName": "com.ohos.server",
+ "abilityName": "com.ohos.server.MainAbility",
};
FA.connectAbility(want, connect);
- let broker = proxy.queryLocalInterface("testObject");
- console.log("RpcClient: queryLocalInterface is " + broker);
+ class MyDeathRecipient {
+ onRemoteDied() {
+ console.log("server died");
+ }
+ }
+ let deathRecipient = new MyDeathRecipient();
+ proxy.addDeathRecippient(deathRecipient, 0);
```
+### unregisterDeathRecipient9+
-### addDeathRecippient
+removeDeathRecipient(recipient: DeathRecipient, flags: number): void
-addDeathRecipient(recipient : DeathRecipient, flags : number): boolean
-
-注册用于接收远程对象死亡通知的回调,增加proxy对象上的死亡通知。
+注销用于接收远程对象死亡通知的回调。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | recipient | [DeathRecipient](#deathrecipient) | 是 | 收件人表示要注册的回调。 |
- | flags | number | 是 | 死亡通知标志。保留参数。设置为0。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | --------- | --------------------------------- | ---- | -------------- |
+ | recipient | [DeathRecipient](#deathrecipient) | 是 | 要注销的回调。 |
+ | flags | number | 是 | 死亡通知标志。 |
-**返回值:**
+**异常:**
- | 类型 | 说明 |
- | -------- | -------- |
- | boolean | 如果回调注册成功,则返回true;否则返回false。 |
+ | 错误码 | 说明 |
+ | ------------------------------------ | ----------------- |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
+ | PROXY_OR_REMOTE_OBJECT_INVALID_ERROR | 封装的IPC对象为空 |
**示例:**
@@ -3170,29 +6635,35 @@ addDeathRecipient(recipient : DeathRecipient, flags : number): boolean
}
}
let deathRecipient = new MyDeathRecipient();
- proxy.addDeathRecippient(deathRecipient, 0);
+ try {
+ proxy.registerDeathRecippient(deathRecipient, 0);
+ proxy.unregisterDeathRecippient(deathRecipient, 0);
+ } catch(error) {
+ console.info(proxy register deathRecipient fail, errorCode " + error.code);
+ console.info(proxy register deathRecipient fail, errorMessage " + error.message);
+ }
```
-### removeDeathRecipient
+### removeDeathRecipientdeprecated
removeDeathRecipient(recipient : DeathRecipient, flags : number): boolean
-注销用于接收远程对象死亡通知的回调。
+注销用于接收远程对象死亡通知的回调。建议使用unregisterDeathRecipient替代。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | recipient | [DeathRecipient](#deathrecipient) | 是 | 要注销的死亡回调。 |
- | flags | number | 是 | 死亡通知标志。保留参数。设置为0。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | --------- | --------------------------------- | ---- | --------------------------------- |
+ | recipient | [DeathRecipient](#deathrecipient) | 是 | 要注销的死亡回调。 |
+ | flags | number | 是 | 死亡通知标志。保留参数。设置为0。 |
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
+ | 类型 | 说明 |
+ | ------- | --------------------------------------------- |
| boolean | 如果回调成功注销,则返回true;否则返回false。 |
**示例:**
@@ -3228,18 +6699,70 @@ removeDeathRecipient(recipient : DeathRecipient, flags : number): boolean
```
-### getInterfaceDescriptor
+### getDescriptor9+
getInterfaceDescriptor(): string
-查询当前代理对象接口的描述符。
+获取对象的接口描述符。接口描述符为字符串。
**系统能力**:SystemCapability.Communication.IPC.Core
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
+ | 类型 | 说明 |
+ | ------ | ---------------- |
+ | string | 返回接口描述符。 |
+
+**异常:**
+
+ | 错误码 | 说明 |
+ | ------------------------------------ | -------------- |
+ | PROXY_OR_REMOTE_OBJECT_INVALID_ERROR | 代理对象已失效 |
+
+**示例:**
+
+ ```
+ import FA from "@ohos.ability.featureAbility";
+ let proxy;
+ let connect = {
+ onConnect: function(elementName, remoteProxy) {
+ console.log("RpcClient: js onConnect called.");
+ proxy = remoteProxy;
+ },
+ onDisconnect: function(elementName) {
+ console.log("RpcClient: onDisconnect");
+ },
+ onFailed: function() {
+ console.log("RpcClient: onFailed");
+ }
+ };
+ let want = {
+ "bundleName": "com.ohos.server",
+ "abilityName": "com.ohos.server.MainAbility",
+ };
+ FA.connectAbility(want, connect);
+ try {
+ let descriptor = proxy.getDescriptor();
+ console.log("RpcClient: descriptor is " + descriptor);
+ } catch(error) {
+ console.info("rpc get interface descriptor fail, errorCode " + error.code);
+ console.info("rpc get interface descriptor fail, errorMessage " + error.message);
+ }
+ ```
+
+
+### getInterfaceDescriptordeprecated
+
+getInterfaceDescriptor(): string
+
+查询当前代理对象接口的描述符。建议使用getDescriptor替代。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------ | ------------------ |
| string | 当前的接口描述符。 |
**示例:**
@@ -3279,8 +6802,8 @@ isObjectDead(): boolean
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
+ | 类型 | 说明 |
+ | ------- | --------------------------------------------------------- |
| boolean | 如果对应的RemoteObject已经死亡,返回true,否则返回false。 |
**示例:**
@@ -3316,12 +6839,27 @@ isObjectDead(): boolean
**系统能力**:以下各项对应的系统能力均为SystemCapability.Communication.IPC.Core。
- | 参数 | 值 | 说明 |
-| -------- | -------- | -------- |
-| TF_SYNC | 0 | 同步调用。 |
-| TF_ASYNC | 1 | 异步调用。 |
-| TF_ACCEPT_FDS | 0x10 | 指示[sendRequestAsync](#sendrequestasync9)接口可以返回文件描述符。 |
-| TF_WAIT_TIME | 8 | 等待时间。单位秒。 |
+ | 参数 | 值 | 说明 |
+ | ------------- | ---- | ----------------------------------------------------------- |
+ | TF_SYNC | 0 | 同步调用。 |
+ | TF_ASYNC | 1 | 异步调用。 |
+ | TF_ACCEPT_FDS | 0x10 | 指示sendMessageRequest9+接口可以返回文件描述符。 |
+ | TF_WAIT_TIME | 8 | 等待时间。单位秒。 |
+
+
+### constructor9+
+
+constructor(async?: boolean);
+
+MessageOption构造函数。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | --------- | ------ | ---- | -------------------------------------- |
+ | syncFlags | number | 否 | 同步调用或异步调用标志。默认同步调用。 |
### constructor
@@ -3332,13 +6870,42 @@ MessageOption构造函数。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | syncFlags | number | 否 | 同步调用或异步调用标志。默认同步调用。 |
- | waitTime | number | 否 | 调用rpc最长等待时间。默认 TF_WAIT_TIME。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | --------- | ------ | ---- | --------------------------------------------- |
+ | syncFlags | number | 否 | 同步调用或异步调用标志。默认同步调用。 |
+ | waitTime | number | 否 | 调用rpc最长等待时间。默认 TF_WAIT_TIME。 |
+
+
+### isAsync9+
+
+isAsync(): boolean;
+
+获取SendMessageRequest调用中确定同步或是异步的标志。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------- | ------------------------------------ |
+ | boolean | 调用成功返回同步调用或异步调用标志。 |
+
+
+### setAsync9+
+
+setAsync(async: boolean): void;
+
+设置SendMessageRequest调用中确定同步或是异步的标志。
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**异常:**
+
+ | 错误码 | 说明 |
+ | ----------------- | ------------ |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
### getFlags
@@ -3350,8 +6917,8 @@ getFlags(): number
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
+ | 类型 | 说明 |
+ | ------ | ------------------------------------ |
| number | 调用成功返回同步调用或异步调用标志。 |
@@ -3363,11 +6930,11 @@ setFlags(flags: number): void
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | flags | number | 是 | 同步调用或异步调用标志。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | ------ | ---- | ------------------------ |
+ | flags | number | 是 | 同步调用或异步调用标志。 |
### getWaitTime
@@ -3380,8 +6947,8 @@ getWaitTime(): number
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
+ | 类型 | 说明 |
+ | ------ | ----------------- |
| number | rpc最长等待时间。 |
@@ -3393,18 +6960,17 @@ setWaitTime(waitTime: number): void
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | waitTime | number | 是 | rpc调用最长等待时间。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | -------- | ------ | ---- | --------------------- |
+ | waitTime | number | 是 | rpc调用最长等待时间。 |
## IPCSkeleton
用于获取IPC上下文信息,包括获取UID和PID、获取本端和对端设备ID、检查接口调用是否在同一设备上。
-
### getContextObject
static getContextObject(): IRemoteObject
@@ -3415,8 +6981,8 @@ static getContextObject(): IRemoteObject
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
+ | 类型 | 说明 |
+ | ------------------------------- | -------------------- |
| [IRemoteObject](#iremoteobject) | 返回系统能力管理者。 |
**示例:**
@@ -3437,20 +7003,20 @@ static getCallingPid(): number
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
+ | 类型 | 说明 |
+ | ------ | ----------------- |
| number | 返回调用者的PID。 |
**示例:**
```
class Stub extends rpc.RemoteObject {
- onRemoteRequest(code, data, reply, option) {
+ onRemoteRequestEx(code, data, reply, option) {
let callerPid = rpc.IPCSkeleton.getCallingPid();
console.log("RpcServer: getCallingPid result: " + callerPid);
return true;
}
- }
+ }
```
@@ -3464,15 +7030,15 @@ static getCallingUid(): number
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
+ | 类型 | 说明 |
+ | ------ | ----------------- |
| number | 返回调用者的UID。 |
**示例:**
```
class Stub extends rpc.RemoteObject {
- onRemoteRequest(code, data, reply, option) {
+ onRemoteRequestEx(code, data, reply, option) {
let callerUid = rpc.IPCSkeleton.getCallingUid();
console.log("RpcServer: getCallingUid result: " + callerUid);
return true;
@@ -3480,6 +7046,7 @@ static getCallingUid(): number
}
```
+
### getCallingTokenId8+
static getCallingTokenId(): number;
@@ -3488,17 +7055,18 @@ static getCallingTokenId(): number;
**系统能力**:SystemCapability.Communication.IPC.Core
-* 返回值
+* 返回值
+*
| 类型 | 说明 |
- | ------ | --------------------- |
- | number | 返回调用者的TokenId。 |
-
+ | ------ | --------------------- |
+ | number | 返回调用者的TokenId。 |
+
* 示例
```
class Stub extends rpc.RemoteObject {
- onRemoteRequest(code, data, reply, option) {
+ onRemoteRequestEx(code, data, reply, option) {
let callerTokenId = rpc.IPCSkeleton.getCallingTokenId();
console.log("RpcServer: getCallingTokenId result: " + callerTokenId);
return true;
@@ -3517,15 +7085,15 @@ static getCallingDeviceID(): string
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
+ | 类型 | 说明 |
+ | ------ | ---------------------------- |
| string | 返回调用者进程所在的设备ID。 |
**示例:**
```
class Stub extends rpc.RemoteObject {
- onRemoteRequest(code, data, reply, option) {
+ onRemoteRequestEx(code, data, reply, option) {
let callerDeviceID = rpc.IPCSkeleton.getCallingDeviceID();
console.log("RpcServer: callerDeviceID is: " + callerDeviceID);
return true;
@@ -3544,15 +7112,15 @@ static getLocalDeviceID(): string
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
+ | 类型 | 说明 |
+ | ------ | ------------------ |
| string | 返回本地设备的ID。 |
**示例:**
```
class Stub extends rpc.RemoteObject {
- onRemoteRequest(code, data, reply, option) {
+ onRemoteRequestEx(code, data, reply, option) {
let localDeviceID = rpc.IPCSkeleton.getLocalDeviceID();
console.log("RpcServer: localDeviceID is: " + localDeviceID);
return true;
@@ -3571,15 +7139,15 @@ static isLocalCalling(): boolean
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
+ | 类型 | 说明 |
+ | ------- | --------------------------------------------------------- |
| boolean | 如果调用是在同一设备上进行的,则返回true,否则返回false。 |
**示例:**
```
class Stub extends rpc.RemoteObject {
- onRemoteRequest(code, data, reply, option) {
+ onRemoteRequestEx(code, data, reply, option) {
let isLocalCalling = rpc.IPCSkeleton.isLocalCalling();
console.log("RpcServer: isLocalCalling is: " + isLocalCalling);
return true;
@@ -3588,25 +7156,72 @@ static isLocalCalling(): boolean
```
-### flushCommands
+### flushCmdBuffer9+
-static flushCommands(object : IRemoteObject): number
+static flushCmdBuffer(object : IRemoteObject): void
将所有挂起的命令从指定的RemoteProxy刷新到相应的RemoteObject。建议在执行任何时间敏感操作之前调用此方法。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | ------------------------------- | ---- | ------------------- |
+ | object | [IRemoteObject](#iremoteobject) | 是 | 指定的RemoteProxy。 |
+
+**异常:**
+
+ | 错误码 | 说明 |
+ | ----------------- | ------------ |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
+
+**示例:**
+
+ ```
+ class MyDeathRecipient {
+ onRemoteDied() {
+ console.log("server died");
+ }
+ }
+ class TestRemoteObject extends rpc.RemoteObject {
+ constructor(descriptor) {
+ super(descriptor);
+ }
+ addDeathRecipient(recipient: MyDeathRecipient, flags: number);
+ removeDeathRecipient(recipient: MyDeathRecipient, flags: number);
+ isObjectDead(): boolean {
+ return false;
+ }
+ }
+ let remoteObject = new TestRemoteObject("aaa");
+ try {
+ rpc.IPCSkeleton.flushCmdBuffer(remoteObject);
+ } catch(error) {
+ console.info(proxy set calling identity fail, errorCode " + error.code);
+ console.info(proxy set calling identity fail, errorMessage " + error.message);
+ }
+ ```
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | object | [IRemoteObject](#iremoteobject) | 是 | 指定的RemoteProxy。 |
+### flushCommandsdeprecated
+
+static flushCommands(object : IRemoteObject): number
+
+将所有挂起的命令从指定的RemoteProxy刷新到相应的RemoteObject。建议在执行任何时间敏感操作之前调用此方法。使用flushCmdBuffer替代。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | ------------------------------- | ---- | ------------------- |
+ | object | [IRemoteObject](#iremoteobject) | 是 | 指定的RemoteProxy。 |
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
+ | 类型 | 说明 |
+ | ------ | --------------------------------------------------------------------------------- |
| number | 如果操作成功,返回0;如果输入对象为空或RemoteObject,或者操作失败,返回错误代码。 |
**示例:**
@@ -3636,7 +7251,6 @@ static flushCommands(object : IRemoteObject): number
console.log("RpcServer: flushCommands result: " + ret);
```
-
### resetCallingIdentity
static resetCallingIdentity(): string
@@ -3647,15 +7261,15 @@ static resetCallingIdentity(): string
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
+ | 类型 | 说明 |
+ | ------ | ------------------------------------ |
| string | 返回包含远程用户的UID和PID的字符串。 |
**示例:**
```
class Stub extends rpc.RemoteObject {
- onRemoteRequest(code, data, reply, option) {
+ onRemoteRequestEx(code, data, reply, option) {
let callingIdentity = rpc.IPCSkeleton.resetCallingIdentity();
console.log("RpcServer: callingIdentity is: " + callingIdentity);
return true;
@@ -3664,31 +7278,69 @@ static resetCallingIdentity(): string
```
-### setCallingIdentity
+### restoreCallingIdentity9+
+
+static restoreCallingIdentity(identity : string): void
+
+将远程用户的UID和PID替换为本地用户的UID和PID。它可以用于身份验证等场景。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | -------- | ------ | ---- | ------------------------------------------------------------------ |
+ | identity | string | 是 | 标识表示包含远程用户UID和PID的字符串。由resetCallingIdentity返回。 |
+
+**异常:**
+
+ | 错误码 | 说明 |
+ | ----------------- | ------------ |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
+
+**示例:**
+
+ ```
+ class Stub extends rpc.RemoteObject {
+ onRemoteRequestEx(code, data, reply, option) {
+ let callingIdentity = null;
+ try {
+ callingIdentity = rpc.IPCSkeleton.resetCallingIdentity();
+ console.log("RpcServer: callingIdentity is: " + callingIdentity);
+ } finally {
+ rpc.IPCSkeleton.restoreCallingIdentity("callingIdentity ");
+ }
+ return true;
+ }
+ }
+ ```
+
+
+### setCallingIdentitydeprecated
static setCallingIdentity(identity : string): boolean
-将UID和PID恢复为远程用户的UID和PID。它通常在使用resetCallingIdentity后调用,需要resetCallingIdentity返回的远程用户的UID和PID。
+将UID和PID恢复为远程用户的UID和PID。它通常在使用resetCallingIdentity后调用,需要resetCallingIdentity返回的远程用户的UID和PID。建议使用restoreCallingIdentity替代。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | identity | string | 是 | 标识表示包含远程用户UID和PID的字符串。由resetCallingIdentity返回。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | -------- | ------ | ---- | ------------------------------------------------------------------ |
+ | identity | string | 是 | 标识表示包含远程用户UID和PID的字符串。由resetCallingIdentity返回。 |
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
+ | 类型 | 说明 |
+ | ------- | ----------------------------------------- |
| boolean | 如果操作成功,则返回true;否则返回false。 |
**示例:**
```
class Stub extends rpc.RemoteObject {
- onRemoteRequest(code, data, reply, option) {
+ onRemoteRequestEx(code, data, reply, option) {
let callingIdentity = null;
try {
callingIdentity = rpc.IPCSkeleton.resetCallingIdentity();
@@ -3707,7 +7359,6 @@ static setCallingIdentity(identity : string): boolean
实现远程对象。服务提供者必须继承此类。
-
### constructor
constructor(descriptor: string)
@@ -3716,39 +7367,35 @@ RemoteObject构造函数。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | descriptor | string | 是 | 接口描述符。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ---------- | ------ | ---- | ------------ |
+ | descriptor | string | 是 | 接口描述符。 |
### sendRequest(deprecated)
sendRequest(code : number, data : MessageParcel, reply : MessageParcel, options : MessageOption): boolean
-> **说明:**
-> 从 API Version 8 开始废弃,建议使用[sendRequestAsync9+](#sendrequestasync9-2)替代。
-
以同步或异步方式向对端进程发送MessageParcel消息。如果为选项设置了异步模式,则期约立即兑现,reply报文里没有内容。如果为选项设置了同步模式,则期约将在sendRequest返回时兑现,回复内容在reply报文里。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | code | number | 是 | 本次请求调用的消息码,由通信双方确定。如果接口由IDL工具生成,则消息代码由IDL自动生成。 |
- | data | [MessageParcel](#messageparcel) | 是 | 保存待发送数据的 MessageParcel对象。 |
- | reply | [MessageParcel](#messageparcel) | 是 | 接收应答数据的MessageParcel对象。 |
- | options | [MessageOption](#messageoption) | 是 | 本次请求的同异步模式,默认同步调用。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------- | ------------------------------- | ---- | -------------------------------------------------------------------------------------- |
+ | code | number | 是 | 本次请求调用的消息码,由通信双方确定。如果接口由IDL工具生成,则消息代码由IDL自动生成。 |
+ | data | [MessageParcel](#messageparcel) | 是 | 保存待发送数据的 MessageParcel对象。 |
+ | reply | [MessageParcel](#messageparcel) | 是 | 接收应答数据的MessageParcel对象。 |
+ | options | [MessageOption](#messageoption) | 是 | 本次请求的同异步模式,默认同步调用。 |
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
- | boolean | 返回一个布尔值,true表示成功,false表示失败。|
-
+ | 类型 | 说明 |
+ | ------- | --------------------------------------------- |
+ | boolean | 返回一个布尔值,true表示成功,false表示失败。 |
**示例:**
@@ -3796,28 +7443,24 @@ sendRequest(code : number, data : MessageParcel, reply : MessageParcel, options
sendRequest(code : number, data : MessageParcel, reply : MessageParcel, options : MessageOption): Promise<SendRequestResult>
-> **说明:**
-> 从 API Version 9 开始废弃,建议使用[sendRequestAsync9+](#sendrequestasync9-2)替代。
-
-以同步或异步方式向对端进程发送MessageParcel消息。如果为选项设置了异步模式,则期约立即兑现,reply报文里没有内容。如果为选项设置了同步模式,则期约将在sendRequest返回时兑现,回复内容在reply报文里。
+以同步或异步方式向对端进程发送MessageParcel消息。如果为选项设置了异步模式,则期约立即兑现,reply报文里没有内容。如果为选项设置了同步模式,则期约将在sendRequest返回时兑现,回复内容在reply报文里。建议使用sendMessageRequest9+替代。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | code | number | 是 | 本次请求调用的消息码,由通信双方确定。如果接口由IDL工具生成,则消息代码由IDL自动生成。 |
- | data | [MessageParcel](#messageparcel) | 是 | 保存待发送数据的 MessageParcel对象。 |
- | reply | [MessageParcel](#messageparcel) | 是 | 接收应答数据的MessageParcel对象。 |
- | options | [MessageOption](#messageoption) | 是 | 本次请求的同异步模式,默认同步调用。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------- | ------------------------------- | ---- | -------------------------------------------------------------------------------------- |
+ | code | number | 是 | 本次请求调用的消息码,由通信双方确定。如果接口由IDL工具生成,则消息代码由IDL自动生成。 |
+ | data | [MessageParcel](#messageparcel) | 是 | 保存待发送数据的 MessageParcel对象。 |
+ | reply | [MessageParcel](#messageparcel) | 是 | 接收应答数据的MessageParcel对象。 |
+ | options | [MessageOption](#messageoption) | 是 | 本次请求的同异步模式,默认同步调用。 |
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
- | Promise<SendRequestResult> | 返回一个期约,兑现值是sendRequestResult实例。|
-
+ | 类型 | 说明 |
+ | -------------------------------- | --------------------------------------------- |
+ | Promise<SendRequestResult> | 返回一个期约,兑现值是sendRequestResult实例。 |
**示例:**
@@ -3866,28 +7509,28 @@ sendRequest(code : number, data : MessageParcel, reply : MessageParcel, options
});
```
-### sendRequestAsync9+
+### sendMessageRequest9+
-sendRequestAsync(code : number, data : MessageParcel, reply : MessageParcel, options : MessageOption): Promise<SendRequestResult>
+sendMessageRequest(code : number, data : MessageSequence, reply : MessageSequence, options : MessageOption): Promise<RequestResult>
-以同步或异步方式向对端进程发送MessageParcel消息。如果为选项设置了异步模式,则期约立即兑现,reply报文里没有内容。如果为选项设置了同步模式,则期约将在sendRequestAsync返回时兑现,回复内容在reply报文里。
+以同步或异步方式向对端进程发送MessageSequence消息。如果为选项设置了异步模式,则期约立即兑现,reply报文里没有内容。如果为选项设置了同步模式,则期约将在sendMessageRequest返回时兑现,回复内容在reply报文里。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | code | number | 是 | 本次请求调用的消息码,由通信双方确定。如果接口由IDL工具生成,则消息代码由IDL自动生成。 |
- | data | [MessageParcel](#messageparcel) | 是 | 保存待发送数据的 MessageParcel对象。 |
- | reply | [MessageParcel](#messageparcel) | 是 | 接收应答数据的MessageParcel对象。 |
- | options | [MessageOption](#messageoption) | 是 | 本次请求的同异步模式,默认同步调用。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------- | ------------------------------- | ---- | -------------------------------------------------------------------------------------- |
+ | code | number | 是 | 本次请求调用的消息码,由通信双方确定。如果接口由IDL工具生成,则消息代码由IDL自动生成。 |
+ | data | MessageSequence | 是 | 保存待发送数据的 MessageSequence对象。 |
+ | reply | MessageSequence | 是 | 接收应答数据的MessageSequence对象。 |
+ | options | [MessageOption](#messageoption) | 是 | 本次请求的同异步模式,默认同步调用。 |
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
- | Promise<SendRequestResult> | 返回一个期约,兑现值是sendRequestResult实例。|
+ | 类型 | 说明 |
+ | ---------------------------- | --------------------------------------------- |
+ | Promise<RequestResult> | 返回一个期约,兑现值是sendRequestResult实例。 |
**示例:**
@@ -3901,59 +7544,116 @@ sendRequestAsync(code : number, data : MessageParcel, reply : MessageParcel, opt
constructor(descriptor) {
super(descriptor);
}
- addDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
- return true;
- }
- removeDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
- return true;
- }
+ registerDeathRecipient(recipient: MyDeathRecipient, flags: number);
+ unregisterDeathRecipient(recipient: MyDeathRecipient, flags: number);
isObjectDead(): boolean {
return false;
}
}
let testRemoteObject = new TestRemoteObject("testObject");
let option = new rpc.MessageOption();
- let data = rpc.MessageParcel.create();
- let reply = rpc.MessageParcel.create();
+ let data = rpc.MessageSequence.create();
+ let reply = rpc.MessageSequence.create();
data.writeInt(1);
data.writeString("hello");
- testRemoteObject.sendRequestAsync(1, data, reply, option)
+ testRemoteObject.sendMessageRequest(1, data, reply, option)
.then(function(result) {
if (result.errCode === 0) {
- console.log("sendRequestAsync got result");
+ console.log("sendMessageRequest got result");
result.reply.readException();
let msg = result.reply.readString();
console.log("RPCTest: reply msg: " + msg);
} else {
- console.log("RPCTest: sendRequestAsync failed, errCode: " + result.errCode);
+ console.log("RPCTest: sendMessageRequest failed, errCode: " + result.errCode);
}
}).catch(function(e) {
- console.log("RPCTest: sendRequestAsync got exception: " + e.message);
+ console.log("RPCTest: sendMessageRequest got exception: " + e.message);
}).finally (() => {
- console.log("RPCTest: sendRequestAsync ends, reclaim parcel");
+ console.log("RPCTest: sendMessageRequest ends, reclaim parcel");
data.reclaim();
reply.reclaim();
});
```
-### sendRequest8+
-sendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption, callback: AsyncCallback<SendRequestResult>): void
+### sendMessageRequest9+
-以同步或异步方式向对端进程发送MessageParcel消息。如果为选项设置了异步模式,则立即收到回调,reply报文里没有内容。如果为选项设置了同步模式,则将在sendRequest返回时收到回调,回复内容在reply报文里。
+sendMessageRequest(code: number, data: MessageSequence, reply: MessageSequence, options: MessageOption, callback: AsyncCallback<RequestResult>): void
+
+以同步或异步方式向对端进程发送MessageSequence消息。如果为选项设置了异步模式,则立即收到回调,reply报文里没有内容。如果为选项设置了同步模式,则将在sendMessageRequest返回时收到回调,回复内容在reply报文里。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------------- | ---------------------------------- | ---- | -------------------------------------------------------------------------------------- |
+ | code | number | 是 | 本次请求调用的消息码,由通信双方确定。如果接口由IDL工具生成,则消息代码由IDL自动生成。 |
+ | data | MessageSequence | 是 | 保存待发送数据的 MessageSequence对象。 |
+ | reply | MessageSequence | 是 | 接收应答数据的MessageSequence对象。 |
+ | options | [MessageOption](#messageoption) | 是 | 本次请求的同异步模式,默认同步调用。 |
+ | AsyncCallback | AsyncCallback<RequestResult> | 是 | 接收发送结果的回调。 |
+
+**示例:**
+
+ ```
+ class MyDeathRecipient {
+ onRemoteDied() {
+ console.log("server died");
+ }
+ }
+ class TestRemoteObject extends rpc.RemoteObject {
+ constructor(descriptor) {
+ super(descriptor);
+ }
+ addDeathRecipient(recipient: MyDeathRecipient, flags: number);
+ removeDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
+ return true;
+ }
+ isObjectDead(): boolean {
+ return false;
+ }
+ }
+ function sendRequestCallback(result) {
+ if (result.errCode === 0) {
+ console.log("sendRequest got result");
+ result.reply.readException();
+ let msg = result.reply.readString();
+ console.log("RPCTest: reply msg: " + msg);
+ } else {
+ console.log("RPCTest: sendRequest failed, errCode: " + result.errCode);
+ }
+ console.log("RPCTest: sendRequest ends, reclaim parcel");
+ result.data.reclaim();
+ result.reply.reclaim();
+ }
+ let testRemoteObject = new TestRemoteObject("testObject");
+ let option = new rpc.MessageOption();
+ let data = rpc.MessageSequence.create();
+ let reply = rpc.MessageSequence.create();
+ data.writeInt(1);
+ data.writeString("hello");
+ testRemoteObject.sendRequest(1, data, reply, option, sendRequestCallback);
+ ```
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | code | number | 是 | 本次请求调用的消息码,由通信双方确定。如果接口由IDL工具生成,则消息代码由IDL自动生成。 |
- | data | [MessageParcel](#messageparcel) | 是 | 保存待发送数据的 MessageParcel对象。 |
- | reply | [MessageParcel](#messageparcel) | 是 | 接收应答数据的MessageParcel对象。 |
- | options | [MessageOption](#messageoption) | 是 | 本次请求的同异步模式,默认同步调用。 |
- | AsyncCallback | AsyncCallback<SendRequestResult> | 是 | 接收发送结果的回调。 |
+### sendRequest8+(deprecated)
+
+sendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption, callback: AsyncCallback<SendRequestResult>): void
+
+以同步或异步方式向对端进程发送MessageParcel消息。如果为选项设置了异步模式,则立即收到回调,reply报文里没有内容。如果为选项设置了同步模式,则将在sendRequest返回时收到回调,回复内容在reply报文里。建议使用sendMessageRequest替代。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------------- | -------------------------------------- | ---- | -------------------------------------------------------------------------------------- |
+ | code | number | 是 | 本次请求调用的消息码,由通信双方确定。如果接口由IDL工具生成,则消息代码由IDL自动生成。 |
+ | data | [MessageParcel](#messageparcel) | 是 | 保存待发送数据的 MessageParcel对象。 |
+ | reply | [MessageParcel](#messageparcel) | 是 | 接收应答数据的MessageParcel对象。 |
+ | options | [MessageOption](#messageoption) | 是 | 本次请求的同异步模式,默认同步调用。 |
+ | AsyncCallback | AsyncCallback<SendRequestResult> | 是 | 接收发送结果的回调。 |
**示例:**
@@ -4002,32 +7702,27 @@ sendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: Me
### onRemoteRequest8+(deprecated)
-
onRemoteRequest(code : number, data : MessageParcel, reply: MessageParcel, options : MessageOption): boolean
-> **说明:**
-> 从 API Version 9 开始废弃,建议使用[onRemoteRequestEx9+](#onremoterequestex9)替代。
-
-sendRequestAsync请求的响应处理函数,服务端在该函数里处理请求,回复结果。
+sendRequestAsync请求的响应处理函数,服务端在该函数里处理请求,回复结果。建议使用onRemoteRequestEx9+替代。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | code | number | 是 | 对端发送的服务请求码。 |
- | data | [MessageParcel](#messageparcel) | 是 | 携带客户端调用参数的MessageParcel对象。 |
- | reply | [MessageParcel](#messageparcel) | 是 | 写入结果的MessageParcel对象。 |
- | option | [MessageOption](#messageoption) | 是 | 指示操作是同步还是异步。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | ------------------------------- | ---- | --------------------------------------- |
+ | code | number | 是 | 对端发送的服务请求码。 |
+ | data | [MessageParcel](#messageparcel) | 是 | 携带客户端调用参数的MessageParcel对象。 |
+ | reply | [MessageParcel](#messageparcel) | 是 | 写入结果的MessageParcel对象。 |
+ | option | [MessageOption](#messageoption) | 是 | 指示操作是同步还是异步。 |
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
+ | 类型 | 说明 |
+ | ------- | ----------------------------------------- |
| boolean | 如果操作成功,则返回true;否则返回false。 |
-
**示例:**
```ets
@@ -4049,7 +7744,6 @@ sendRequestAsync请求的响应处理函数,服务端在该函数里处理请
isObjectDead(): boolean {
return false;
}
-
onRemoteRequest(code, data, reply, option) {
if (code === 1) {
console.log("RpcServer: onRemoteRequest called");
@@ -4061,34 +7755,35 @@ sendRequestAsync请求的响应处理函数,服务端在该函数里处理请
}
}
```
+
### onRemoteRequestEx9+
-onRemoteRequestEx(code : number, data : MessageParcel, reply: MessageParcel, options : MessageOption): boolean | Promise
+onRemoteRequestEx(code : number, data : MessageSequence, reply: MessageSequence, options : MessageOption): boolean | Promise
> **说明:**
->- 开发者应优先选择重载onRemoteRequestEx方法,其中可以自由实现同步和异步的消息处理。
->- 开发者同时重载onRemoteRequest和onRemoteRequestEx方法时,仅onRemoteRequestEx方法生效。
+>
+>* 开发者应优先选择重载onRemoteRequestEx方法,其中可以自由实现同步和异步的消息处理。
+>* 开发者同时重载onRemoteRequest和onRemoteRequestEx方法时,仅onRemoteRequestEx方法生效。
sendRequestAsync请求的响应处理函数,服务端在该函数里同步或异步地处理请求,回复结果。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | code | number | 是 | 对端发送的服务请求码。 |
- | data | [MessageParcel](#messageparcel) | 是 | 携带客户端调用参数的MessageParcel对象。 |
- | reply | [MessageParcel](#messageparcel) | 是 | 写入结果的MessageParcel对象。 |
- | option | [MessageOption](#messageoption) | 是 | 指示操作是同步还是异步。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | ------------------------------- | ---- | ----------------------------------------- |
+ | code | number | 是 | 对端发送的服务请求码。 |
+ | data | MessageSequence | 是 | 携带客户端调用参数的MessageSequence对象。 |
+ | reply | MessageSequence | 是 | 写入结果的MessageSequence对象。 |
+ | option | MessageSequence(#messageoption) | 是 | 指示操作是同步还是异步。 |
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
- | boolean | 若在onRemoteRequestEx中同步地处理请求,则返回一个布尔值:操作成功,则返回true;否则返回false。 |
- | Promise | 若在onRemoteRequestEx中异步地处理请求,则返回一个Promise对象。 |
-
+ | 类型 | 说明 |
+ | ----------------- | ---------------------------------------------------------------------------------------------- |
+ | boolean | 若在onRemoteRequestEx中同步地处理请求,则返回一个布尔值:操作成功,则返回true;否则返回false。 |
+ | Promise | 若在onRemoteRequestEx中异步地处理请求,则返回一个Promise对象。 |
**重载onRemoteRequestEx方法同步处理请求示例:**
@@ -4102,12 +7797,8 @@ sendRequestAsync请求的响应处理函数,服务端在该函数里同步或
constructor(descriptor) {
super(descriptor);
}
- addDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
- return true;
- }
- removeDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
- return true;
- }
+ registerDeathRecipient(recipient: MyDeathRecipient, flags: number);
+ unregisterDeathRecipient(recipient: MyDeathRecipient, flags: number);
isObjectDead(): boolean {
return false;
}
@@ -4122,6 +7813,7 @@ sendRequestAsync请求的响应处理函数,服务端在该函数里同步或
}
}
```
+
**重载onRemoteRequestEx方法异步处理请求示例:**
```ets
@@ -4134,12 +7826,8 @@ sendRequestAsync请求的响应处理函数,服务端在该函数里同步或
constructor(descriptor) {
super(descriptor);
}
- addDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
- return true;
- }
- removeDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
- return true;
- }
+ registerDeathRecipient(recipient: MyDeathRecipient, flags: number);
+ unregisterDeathRecipient(recipient: MyDeathRecipient, flags: number);
isObjectDead(): boolean {
return false;
}
@@ -4157,6 +7845,7 @@ sendRequestAsync请求的响应处理函数,服务端在该函数里同步或
}
}
```
+
**同时重载onRemoteRequestEx和onRemoteRequest方法同步处理请求示例:**
```ets
@@ -4169,12 +7858,8 @@ sendRequestAsync请求的响应处理函数,服务端在该函数里同步或
constructor(descriptor) {
super(descriptor);
}
- addDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
- return true;
- }
- removeDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
- return true;
- }
+ registerDeathRecipient(recipient: MyDeathRecipient, flags: number);
+ unregisterDeathRecipient(recipient: MyDeathRecipient, flags: number);
isObjectDead(): boolean {
return false;
}
@@ -4195,11 +7880,12 @@ sendRequestAsync请求的响应处理函数,服务端在该函数里同步或
console.log("RpcServer: unknown code: " + code);
return false;
}
-
+
return true;
}
}
```
+
**同时重载onRemoteRequestEx和onRemoteRequest方法异步处理请求示例:**
```ets
@@ -4212,18 +7898,14 @@ sendRequestAsync请求的响应处理函数,服务端在该函数里同步或
constructor(descriptor) {
super(descriptor);
}
- addDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
- return true;
- }
- removeDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
- return true;
- }
+ registerDeathRecipient(recipient: MyDeathRecipient, flags: number);
+ unregisterDeathRecipient(recipient: MyDeathRecipient, flags: number);
isObjectDead(): boolean {
return false;
}
onRemoteRequest(code, data, reply, option) {
if (code === 1) {
- console.log("RpcServer: sync onRemoteRequestEx is called");
+ console.log("RpcServer: sync onRemoteRequest is called");
return true;
} else {
console.log("RpcServer: unknown code: " + code);
@@ -4238,27 +7920,111 @@ sendRequestAsync请求的响应处理函数,服务端在该函数里同步或
console.log("RpcServer: unknown code: " + code);
return false;
}
- await new Promise((resolve) => {
+ await new Promise((resolve) => {
setTimeout(resolve, 100);
})
return true;
}
}
```
+
+
### getCallingUid
-getCallingUid(): number
+getCallingUid(): number
+
+获取通信对端的进程Uid。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**返回值:**
+ | 类型 | 说明 |
+ | ------ | ----------------------- |
+ | number | 返回通信对端的进程Uid。 |
+
+**示例:**
+
+ ```
+ class MyDeathRecipient {
+ onRemoteDied() {
+ console.log("server died");
+ }
+ }
+ class TestRemoteObject extends rpc.RemoteObject {
+ constructor(descriptor) {
+ super(descriptor);
+ }
+ registerDeathRecipient(recipient: MyDeathRecipient, flags: number);
+ unregisterDeathRecipient(recipient: MyDeathRecipient, flags: number);
+ isObjectDead(): boolean {
+ return false;
+ }
+ }
+ let testRemoteObject = new TestRemoteObject("testObject");
+ console.log("RpcServer: getCallingUid: " + testRemoteObject.getCallingUid());
+ ```
+
+### getCallingPid
+
+getCallingPid(): number
+
+获取通信对端的进程Pid。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------ | ----------------------- |
+ | number | 返回通信对端的进程Pid。 |
+
+**示例:**
+
+ ```
+ class MyDeathRecipient {
+ onRemoteDied() {
+ console.log("server died");
+ }
+ }
+ class TestRemoteObject extends rpc.RemoteObject {
+ constructor(descriptor) {
+ super(descriptor);
+ }
+ registerDeathRecipient(recipient: MyDeathRecipient, flags: number);
+ unregisterDeathRecipient(recipient: MyDeathRecipient, flags: number);
+ isObjectDead(): boolean {
+ return false;
+ }
+ }
+ let testRemoteObject = new TestRemoteObject("testObject");
+ console.log("RpcServer: getCallingPid: " + testRemoteObject.getCallingPid());
+ ```
+
+### getLocalInterface9+
+
+getLocalInterface(descriptor: string): IRemoteBroker
-获取通信对端的进程Uid。
+查询接口。
**系统能力**:SystemCapability.Communication.IPC.Core
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ---------- | ------ | ---- | -------------------- |
+ | descriptor | string | 是 | 接口描述符的字符串。 |
+
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
- | number | 返回通信对端的进程Uid。 |
+ | 类型 | 说明 |
+ | ------------- | --------------------------------------------- |
+ | IRemoteBroker | 返回绑定到指定接口描述符的IRemoteBroker对象。 |
+**异常:**
+
+ | 错误码 | 说明 |
+ | ----------------- | ------------ |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
**示例:**
@@ -4272,35 +8038,41 @@ getCallingUid(): number
constructor(descriptor) {
super(descriptor);
}
- addDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
- return true;
- }
- removeDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
- return true;
- }
+ registerDeathRecipient(recipient: MyDeathRecipient, flags: number);
+ unregisterDeathRecipient(recipient: MyDeathRecipient, flags: number);
isObjectDead(): boolean {
return false;
}
}
let testRemoteObject = new TestRemoteObject("testObject");
- console.log("RpcServer: getCallingUid: " + testRemoteObject.getCallingUid());
+ try {
+ let broker = testRemoteObject.getLocalInterface("testObject");
+ } catch(error) {
+ console.info(rpc get local interface fail, errorCode " + error.code);
+ console.info(rpc get local interface fail, errorMessage " + error.message);
+ }
```
-### getCallingPid
+### queryLocalInterfacedeprecated
-getCallingPid(): number
+queryLocalInterface(descriptor: string): IRemoteBroker
-获取通信对端的进程Pid。
+查询并获取当前接口描述符对应的远端对象是否已经存在。建议使用getLocalInterface替代。
**系统能力**:SystemCapability.Communication.IPC.Core
-**返回值:**
+**参数**
- | 类型 | 说明 |
- | -------- | -------- |
- | number | 返回通信对端的进程Pid。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ---------- | ------ | ---- | ---------------------- |
+ | descriptor | string | 是 | 需要查询的接口描述符。 |
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------------- | ------------------------------------------------------------------ |
+ | IRemoteBroker | 如果接口描述符对应的远端对象存在,则返回该远端对象,否则返回Null。 |
**示例:**
@@ -4325,30 +8097,29 @@ getCallingPid(): number
}
}
let testRemoteObject = new TestRemoteObject("testObject");
- console.log("RpcServer: getCallingPid: " + testRemoteObject.getCallingPid());
+ let broker = testRemoteObject.queryLocalInterface("testObject");
```
-### queryLocalInterface
+### getDescriptor9+
-queryLocalInterface(descriptor: string): IRemoteBroker
+getInterfaceDescriptor(): string
-查询并获取当前接口描述符对应的远端对象是否已经存在。
+获取对象的接口描述符。接口描述符为字符串。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
-
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | descriptor | string | 是 | 需要查询的接口描述符。 |
-
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
- | IRemoteBroker | 如果接口描述符对应的远端对象存在,则返回该远端对象,否则返回Null。 |
+ | 类型 | 说明 |
+ | ------ | ---------------- |
+ | string | 返回接口描述符。 |
+**异常:**
+
+ | 错误码 | 说明 |
+ | ------------------------------------ | -------------- |
+ | PROXY_OR_REMOTE_OBJECT_INVALID_ERROR | 代理对象已失效 |
**示例:**
@@ -4362,36 +8133,37 @@ queryLocalInterface(descriptor: string): IRemoteBroker
constructor(descriptor) {
super(descriptor);
}
- addDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
- return true;
- }
- removeDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
- return true;
- }
+ addDeathRecipient(recipient: MyDeathRecipient, flags: number);
+ unregisterDeathRecipient(recipient: MyDeathRecipient, flags: number);
isObjectDead(): boolean {
return false;
}
}
let testRemoteObject = new TestRemoteObject("testObject");
- let broker = testRemoteObject.queryLocalInterface("testObject");
+ try {
+ let descriptor = testRemoteObject.getDescriptor();
+ } catch(error) {
+ console.info(rpc get local interface fail, errorCode " + error.code);
+ console.info(rpc get local interface fail, errorMessage " + error.message);
+ }
+ console.log("RpcServer: descriptor is: " + descriptor);
```
-### getInterfaceDescriptor
+### getInterfaceDescriptordeprecated
getInterfaceDescriptor(): string
-查询接口描述符。
+查询接口描述符。建议使用getDescriptor替代。
**系统能力**:SystemCapability.Communication.IPC.Core
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
+ | 类型 | 说明 |
+ | ------ | ---------------- |
| string | 返回接口描述符。 |
-
**示例:**
```
@@ -4420,21 +8192,71 @@ getInterfaceDescriptor(): string
```
-### attachLocalInterface
+### modifyLocalInterface9+
-attachLocalInterface(localInterface: IRemoteBroker, descriptor: string): void
+modifyLocalInterface(localInterface: IRemoteBroker, descriptor: string): void
此接口用于把接口描述符和IRemoteBroker对象绑定。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | localInterface | IRemoteBroker | 是 | 将与描述符绑定的IRemoteBroker对象。 |
- | descriptor | string | 是 | 用于与IRemoteBroker对象绑定的描述符。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | -------------- | ------------- | ---- | ------------------------------------- |
+ | localInterface | IRemoteBroker | 是 | 将与描述符绑定的IRemoteBroker对象。 |
+ | descriptor | string | 是 | 用于与IRemoteBroker对象绑定的描述符。 |
+
+**异常:**
+
+ | 错误码 | 说明 |
+ | ----------------- | ------------ |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
+
+**示例:**
+
+ ```
+ class MyDeathRecipient {
+ onRemoteDied() {
+ console.log("server died");
+ }
+ }
+ class TestRemoteObject extends rpc.RemoteObject {
+ constructor(descriptor) {
+ super(descriptor);
+ try {
+ this.modifyLocalInterface(this, descriptor);
+ } catch(error) {
+ console.info(rpc attach local interface fail, errorCode " + error.code);
+ console.info(rpc attach local interface fail, errorMessage " + error.message);
+ }
+ }
+ registerDeathRecipient(recipient: MyDeathRecipient, flags: number);
+ unregisterDeathRecipient(recipient: MyDeathRecipient, flags: number);
+ isObjectDead(): boolean {
+ return false;
+ }
+ asObject(): rpc.IRemoteObject {
+ return this;
+ }
+ }
+ let testRemoteObject = new TestRemoteObject("testObject");
+ ```
+
+### attachLocalInterfacedeprecated
+
+attachLocalInterface(localInterface: IRemoteBroker, descriptor: string): void
+
+此接口用于把接口描述符和IRemoteBroker对象绑定。建议使用modifyLocalInterface替代。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | -------------- | ------------- | ---- | ------------------------------------- |
+ | localInterface | IRemoteBroker | 是 | 将与描述符绑定的IRemoteBroker对象。 |
+ | descriptor | string | 是 | 用于与IRemoteBroker对象绑定的描述符。 |
**示例:**
@@ -4474,35 +8296,75 @@ attachLocalInterface(localInterface: IRemoteBroker, descriptor: string): void
**系统能力**:以下各项对应的系统能力均为SystemCapability.Communication.IPC.Core。
- | 参数名 | 值 | 说明 |
-| -------- | -------- | -------- |
-| PROT_EXEC | 4 | 映射的内存可执行 |
-| PROT_NONE | 0 | 映射的内存不可访问 |
-| PROT_READ | 1 | 映射的内存可读 |
-| PROT_WRITE | 2 | 映射的内存可写 |
+ | 参数名 | 值 | 说明 |
+ | ---------- | --- | ------------------ |
+ | PROT_EXEC | 4 | 映射的内存可执行 |
+ | PROT_NONE | 0 | 映射的内存不可访问 |
+ | PROT_READ | 1 | 映射的内存可读 |
+ | PROT_WRITE | 2 | 映射的内存可写 |
-### createAshmem8+
+### create9+
-static createAshmem(name: string, size: number): Ashmem
+static create(name: string, size: number): Ashmem
根据指定的名称和大小创建Ashmem对象。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | name | string | 是 | 名称,用于查询Ashmem信息。 |
- | size | number | 是 | Ashmem的大小,以字节为单位。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | ------ | ---- | ---------------------------- |
+ | name | string | 是 | 名称,用于查询Ashmem信息。 |
+ | size | number | 是 | Ashmem的大小,以字节为单位。 |
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
+ | 类型 | 说明 |
+ | ------ | ---------------------------------------------- |
| Ashmem | 返回创建的Ashmem对象;如果创建失败,返回null。 |
+**异常:**
+
+ | 错误码 | 说明 |
+ | ----------------- | ------------ |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
+
+**示例:**
+
+ ```
+ try {
+ let ashmem = rpc.Ashmem.create("ashmem", 1024*1024);
+ } catch(error) {
+ console.info("Rpc creat ashmem fail, errorCode " + error.code);
+ console.info("Rpc creat ashmem fail, errorMessage " + error.message);
+ }
+ let size = ashmem.getAshmemSize();
+ console.log("RpcTest: get ashemm by create : " + ashmem + " size is : " + size);
+ ```
+
+
+### createAshmem8+(deprecated)
+
+static createAshmem(name: string, size: number): Ashmem
+
+根据指定的名称和大小创建Ashmem对象。建议使用create替代。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | ------ | ---- | ---------------------------- |
+ | name | string | 是 | 名称,用于查询Ashmem信息。 |
+ | size | number | 是 | Ashmem的大小,以字节为单位。 |
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------ | ---------------------------------------------- |
+ | Ashmem | 返回创建的Ashmem对象;如果创建失败,返回null。 |
**示例:**
@@ -4513,26 +8375,72 @@ static createAshmem(name: string, size: number): Ashmem
```
-### createAshmemFromExisting8+
+### create9+
-static createAshmemFromExisting(ashmem: Ashmem): Ashmem
+static create(ashmem: Ashmem): Ashmem
通过复制现有Ashmem对象的文件描述符(fd)来创建Ashmem对象。两个Ashmem对象指向同一个共享内存区域。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | ashmem | Ashmem | 是 | 已存在的Ashmem对象。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | ------ | ---- | -------------------- |
+ | ashmem | Ashmem | 是 | 已存在的Ashmem对象。 |
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
+ | 类型 | 说明 |
+ | ------ | ---------------------- |
| Ashmem | 返回创建的Ashmem对象。 |
+**异常:**
+
+ | 错误码 | 说明 |
+ | ----------------- | ------------ |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
+
+**示例:**
+
+ ```
+ try {
+ let ashmem = rpc.Ashmem.create("ashmem", 1024*1024);
+ } catch(error) {
+ console.info("Rpc creat ashmem fail, errorCode " + error.code);
+ console.info("Rpc creat ashmem fail, errorMessage " + error.message);
+ }
+ try {
+ let ashmem = rpc.Ashmem.create("ashmem", 1024*1024);
+ let ashmem2 = rpc.Ashmem.create(ashmem);
+ } catch(error) {
+ console.info("Rpc creat ashmem from existing fail, errorCode " + error.code);
+ console.info("Rpc creat ashmem from existing fail, errorMessage " + error.message);
+ }
+ let size = ashmem2.getAshmemSize();
+ console.log("RpcTest: get ashemm by create : " + ashmem2 + " size is : " + size);
+ ```
+
+
+### createAshmemFromExisting8+(deprecated)
+
+static createAshmemFromExisting(ashmem: Ashmem): Ashmem
+
+通过复制现有Ashmem对象的文件描述符(fd)来创建Ashmem对象。两个Ashmem对象指向同一个共享内存区域。建议使用create替代。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | ------ | ---- | -------------------- |
+ | ashmem | Ashmem | 是 | 已存在的Ashmem对象。 |
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ------ | ---------------------- |
+ | Ashmem | 返回创建的Ashmem对象。 |
**示例:**
@@ -4555,7 +8463,7 @@ closeAshmem(): void
**示例:**
```
- let ashmem = rpc.Ashmem.createAshmem("ashmem", 1024*1024);
+ let ashmem = rpc.Ashmem.create("ashmem", 1024*1024);
ashmem.closeAshmem();
```
@@ -4571,7 +8479,7 @@ unmapAshmem(): void
**示例:**
```
- let ashmem = rpc.Ashmem.createAshmem("ashmem", 1024*1024);
+ let ashmem = rpc.Ashmem.create("ashmem", 1024*1024);
ashmem.unmapAshmem();
```
@@ -4586,8 +8494,8 @@ getAshmemSize(): number
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
+ | 类型 | 说明 |
+ | ------ | -------------------------- |
| number | 返回Ashmem对象的内存大小。 |
**示例:**
@@ -4599,24 +8507,58 @@ getAshmemSize(): number
```
-### mapAshmem8+
+### mapTypedAshmem9+
-mapAshmem(mapType: number): boolean
+mapTypedAshmem(mapType: number): void
在此进程的虚拟地址空间上创建共享文件映射,映射区域大小由此Ashmem对象指定。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | mapType | number | 是 | 指定映射的内存区域的保护等级。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------- | ------ | ---- | ------------------------------ |
+ | mapType | number | 是 | 指定映射的内存区域的保护等级。 |
+
+**异常:**
+
+ | 错误码 | 说明 |
+ | ----------------- | ---------------- |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
+ | OS_MMAP_ERROR | 系统调用mmap失败 |
+
+**示例:**
+
+ ```
+ let ashmem = rpc.Ashmem.create("ashmem", 1024*1024);
+ try {
+ ashmem.mapTypedAshmem(ashmem.PROT_READ | ashmem.PROT_WRITE);
+ } catch(error) {
+ console.info("Rpc map ashmem fail, errorCode " + error.code);
+ console.info("Rpc map ashmem fail, errorMessage " + error.message);
+ }
+ ```
+
+
+### mapAshmem8+(deprecated)
+
+mapAshmem(mapType: number): boolean
+
+在此进程的虚拟地址空间上创建共享文件映射,映射区域大小由此Ashmem对象指定。建议使用mapTypedAshmem替代。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------- | ------ | ---- | ------------------------------ |
+ | mapType | number | 是 | 指定映射的内存区域的保护等级。 |
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
+ | 类型 | 说明 |
+ | ------- | ----------------------------------------- |
| boolean | 如果映射成功,则返回true;否则返回false。 |
**示例:**
@@ -4628,18 +8570,45 @@ mapAshmem(mapType: number): boolean
```
-### mapReadAndWriteAshmem8+
+### mapReadWriteAshmem9+
-mapReadAndWriteAshmem(): boolean
+mapReadAndWriteAshmem(): void
在此进程虚拟地址空间上创建可读写的共享文件映射。
**系统能力**:SystemCapability.Communication.IPC.Core
+**异常:**
+
+ | 错误码 | 说明 |
+ | ------------- | ---------------- |
+ | OS_MMAP_ERROR | 系统调用mmap失败 |
+
+**示例:**
+
+ ```
+ let ashmem = rpc.Ashmem.create("ashmem", 1024*1024);
+ try {
+ ashmem.mapReadWriteAshmem();
+ } catch(error) {
+ console.info("Rpc map read and write ashmem fail, errorCode " + error.code);
+ console.info("Rpc map read and write ashmem fail, errorMessage " + error.message);
+ }
+ ```
+
+
+### mapReadAndWriteAshmem8+(deprecated)
+
+mapReadAndWriteAshmem(): boolean
+
+在此进程虚拟地址空间上创建可读写的共享文件映射。建议使用mapReadWriteAshmem替代。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
+ | 类型 | 说明 |
+ | ------- | ----------------------------------------- |
| boolean | 如果映射成功,则返回true;否则返回false。 |
**示例:**
@@ -4651,18 +8620,45 @@ mapReadAndWriteAshmem(): boolean
```
-### mapReadOnlyAshmem8+
+### mapReadonlyAshmem9+
-mapReadOnlyAshmem(): boolean
+mapReadonlyAshmem(): void
在此进程虚拟地址空间上创建只读的共享文件映射。
**系统能力**:SystemCapability.Communication.IPC.Core
+**异常:**
+
+ | 错误码 | 说明 |
+ | ------------- | ---------------- |
+ | OS_MMAP_ERROR | 系统调用mmap失败 |
+
+**示例:**
+
+ ```
+ let ashmem = rpc.Ashmem.create("ashmem", 1024*1024);
+ try {
+ ashmem.mapReadonlyAshmem();
+ } catch(error) {
+ console.info("Rpc map read and write ashmem fail, errorCode " + error.code);
+ console.info("Rpc map read and write ashmem fail, errorMessage " + error.message);
+ }
+ ```
+
+
+### mapReadOnlyAshmem8+(deprecated)
+
+mapReadOnlyAshmem(): boolean
+
+在此进程虚拟地址空间上创建只读的共享文件映射。建议使用mapReadonlyAshmem替代。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
+ | 类型 | 说明 |
+ | ------- | ----------------------------------------- |
| boolean | 如果映射成功,则返回true;否则返回false。 |
**示例:**
@@ -4674,24 +8670,57 @@ mapReadOnlyAshmem(): boolean
```
-### setProtection8+
+### setProtectionType9+
-setProtection(protectionType: number): boolean
+setProtectionType(protectionType: number): void
设置映射内存区域的保护等级。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | protectionType | number | 是 | 要设置的保护类型。 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | -------------- | ------ | ---- | ------------------ |
+ | protectionType | number | 是 | 要设置的保护类型。 |
+
+**异常:**
+
+ | 错误码 | 说明 |
+ | -------------- | ----------------- |
+ | OS_IOCTL_ERROR | 系统调用ioctl失败 |
+
+**示例:**
+
+ ```
+ let ashmem = rpc.Ashmem.create("ashmem", 1024*1024);
+ try {
+ ashmem.setProtection(ashmem.PROT_READ);
+ } catch(error) {
+ console.info("Rpc set protection type fail, errorCode " + error.code);
+ console.info("Rpc set protection type fail, errorMessage " + error.message);
+ }
+ ```
+
+
+### setProtection8+(deprecated)
+
+setProtection(protectionType: number): boolean
+
+设置映射内存区域的保护等级。建议使用setProtectionType替代。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | -------------- | ------ | ---- | ------------------ |
+ | protectionType | number | 是 | 要设置的保护类型。 |
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
+ | 类型 | 说明 |
+ | ------- | ----------------------------------------- |
| boolean | 如果设置成功,则返回true;否则返回false。 |
**示例:**
@@ -4703,26 +8732,64 @@ setProtection(protectionType: number): boolean
```
-### writeToAshmem8+
+### writeAshmem9+
-writeToAshmem(buf: number[], size: number, offset: number): boolean
+writeAshmem(buf: number[], size: number, offset: number): void
将数据写入此Ashmem对象关联的共享文件。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | buf | number[] | 是 | 写入Ashmem对象的数据。 |
- | size | number | 是 | 要写入的数据大小。 |
- | offset | number | 是 | 要写入的数据在此Ashmem对象关联的内存区间的起始位置 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | -------- | ---- | -------------------------------------------------- |
+ | buf | number[] | 是 | 写入Ashmem对象的数据。 |
+ | size | number | 是 | 要写入的数据大小。 |
+ | offset | number | 是 | 要写入的数据在此Ashmem对象关联的内存区间的起始位置 |
+
+**异常:**
+
+ | 错误码 | 说明 |
+ | --------------------- | -------------------- |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
+ | WRITE_TO_ASHMEM_ERROR | 向共享内存写数据失败 |
+
+**示例:**
+
+ ```
+ let ashmem = rpc.Ashmem.create("ashmem", 1024*1024);
+ ashmem.mapReadWriteAshmem();
+ var ByteArrayVar = [1, 2, 3, 4, 5];
+ try {
+ ashmem.writeAshmem(ByteArrayVar, 5, 0);
+ } catch(error) {
+ console.info("Rpc write to ashmem fail, errorCode " + error.code);
+ console.info("Rpc write to ashmem fail, errorMessage " + error.message);
+ }
+ ```
+
+
+### writeToAshmem8+(deprecated)
+
+writeToAshmem(buf: number[], size: number, offset: number): boolean
+
+将数据写入此Ashmem对象关联的共享文件。建议使用writeAshmem替代。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | -------- | ---- | -------------------------------------------------- |
+ | buf | number[] | 是 | 写入Ashmem对象的数据。 |
+ | size | number | 是 | 要写入的数据大小。 |
+ | offset | number | 是 | 要写入的数据在此Ashmem对象关联的内存区间的起始位置 |
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
+ | 类型 | 说明 |
+ | ------- | ----------------------------------------------------------------------------------------- |
| boolean | 如果数据写入成功,则返回true;在其他情况下,如数据写入越界或未获得写入权限,则返回false。 |
**示例:**
@@ -4737,31 +8804,75 @@ writeToAshmem(buf: number[], size: number, offset: number): boolean
```
-### readFromAshmem8+
+### readAshmem9+
-readFromAshmem(size: number, offset: number): number[]
+readAshmem(size: number, offset: number): number[]
从此Ashmem对象关联的共享文件中读取数据。
**系统能力**:SystemCapability.Communication.IPC.Core
-**参数:**
+**参数**
- | 参数名 | 类型 | 必填 | 说明 |
- | -------- | -------- | -------- | -------- |
- | size | number | 是 | 要读取的数据的大小。 |
- | offset | number | 是 | 要读取的数据在此Ashmem对象关联的内存区间的起始位置 |
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | ------ | ---- | -------------------------------------------------- |
+ | size | number | 是 | 要读取的数据的大小。 |
+ | offset | number | 是 | 要读取的数据在此Ashmem对象关联的内存区间的起始位置 |
**返回值:**
- | 类型 | 说明 |
- | -------- | -------- |
+ | 类型 | 说明 |
+ | -------- | ---------------- |
| number[] | 返回读取的数据。 |
+**异常:**
+
+ | 错误码 | 说明 |
+ | ---------------------- | ---------------------- |
+ | CHECK_PARAM_ERROR | 参数校验失败 |
+ | READ_FROM_ASHMEM_ERROR | 从共享内存读取数据失败 |
**示例:**
```
+ let ashmem = rpc.Ashmem.create("ashmem", 1024*1024);
+ ashmem.mapReadWriteAshmem();
+ var ByteArrayVar = [1, 2, 3, 4, 5];
+ ashmem.writeAshmem(ByteArrayVar, 5, 0);
+ try {
+ let readResult = ashmem.readAshmem(5, 0);
+ console.log("RpcTest: read from Ashmem result is : " + readResult);
+ } catch(error) {
+ console.info("Rpc read from ashmem fail, errorCode " + error.code);
+ console.info("Rpc read from ashmem fail, errorMessage " + error.message);
+ }
+ ```
+
+
+### readFromAshmem8+(deprecated)
+
+readFromAshmem(size: number, offset: number): number[]
+
+从此Ashmem对象关联的共享文件中读取数据。建议使用readAshmem替代。
+
+**系统能力**:SystemCapability.Communication.IPC.Core
+
+**参数**
+
+ | 参数名 | 类型 | 必填 | 说明 |
+ | ------ | ------ | ---- | -------------------------------------------------- |
+ | size | number | 是 | 要读取的数据的大小。 |
+ | offset | number | 是 | 要读取的数据在此Ashmem对象关联的内存区间的起始位置 |
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | -------- | ---------------- |
+ | number[] | 返回读取的数据。 |
+
+**示例:**
+
+ ```
let ashmem = rpc.Ashmem.createAshmem("ashmem", 1024*1024);
let mapResult = ashmem.mapReadAndWriteAshmem();
console.info("RpcTest map ashmem result is " + mapResult);
@@ -4770,4 +8881,4 @@ readFromAshmem(size: number, offset: number): number[]
console.log("RpcTest: write to Ashmem result is : " + writeResult);
let readResult = ashmem.readFromAshmem(5, 0);
console.log("RpcTest: read to Ashmem result is : " + readResult);
- ```
+ ```
\ No newline at end of file