@ohos.rpc (RPC通信)
@ohos.rpc (RPC通信)
本模块提供进程间通信能力,包括设备内的进程间通信(IPC)和设备间的进程间通信(RPC),前者基于Binder驱动,后者基于软总线驱动。
说明:
本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
本模块从API version 9开始支持异常返回功能。
导入模块
import rpc from '@ohos.rpc';
ErrorCode9+
从API version 9起,IPC支持异常返回功能。错误码对应数值及含义如下。
系统能力:SystemCapability.Communication.IPC.Core
名称 | 值 | 说明 |
---|---|---|
CHECK_PARAM_ERROR | 401 | 检查参数失败。 |
OS_MMAP_ERROR | 1900001 | 执行系统调用mmap失败。 |
OS_IOCTL_ERROR | 1900002 | 在共享内存文件描述符上执行系统调用ioctl失败。 |
WRITE_TO_ASHMEM_ERROR | 1900003 | 向共享内存写数据失败。 |
READ_FROM_ASHMEM_ERROR | 1900004 | 从共享内存读数据失败。 |
ONLY_PROXY_OBJECT_PERMITTED_ERROR | 1900005 | 只有proxy对象允许该操作。 |
ONLY_REMOTE_OBJECT_PERMITTED_ERROR | 1900006 | 只有remote对象允许该操作。 |
COMMUNICATION_ERROR | 1900007 | 和远端对象进行进程间通信失败。 |
PROXY_OR_REMOTE_OBJECT_INVALID_ERROR | 1900008 | 非法的代理对象或者远端对象。 |
WRITE_DATA_TO_MESSAGE_SEQUENCE_ERROR | 1900009 | 向MessageSequence写数据失败。 |
READ_DATA_FROM_MESSAGE_SEQUENCE_ERROR | 1900010 | 读取MessageSequence数据失败。 |
PARCEL_MEMORY_ALLOC_ERROR | 1900011 | 序列化过程中内存分配失败。 |
CALL_JS_METHOD_ERROR | 1900012 | 执行JS回调方法失败。 |
OS_DUP_ERROR | 1900013 | 执行系统调用dup失败。 |
MessageSequence9+
在RPC或IPC过程中,发送方可以使用MessageSequence提供的写方法,将待发送的数据以特定格式写入该对象。接收方可以使用MessageSequence提供的读方法从该对象中读取特定格式的数据。数据格式包括:基础类型及数组、IPC对象、接口描述符和自定义序列化对象。
create
static create(): MessageSequence
静态方法,创建MessageSequence对象。
系统能力:SystemCapability.Communication.IPC.Core
返回值:
类型 | 说明 |
---|---|
MessageSequence | 返回创建的MessageSequence对象。 |
示例:
let data = rpc.MessageSequence.create();
console.log("RpcClient: data is " + data);
2
reclaim
reclaim(): void
释放不再使用的MessageSequence对象。
系统能力:SystemCapability.Communication.IPC.Core
示例:
let reply = rpc.MessageSequence.create();
reply.reclaim();
2
writeRemoteObject
writeRemoteObject(object: IRemoteObject): void
序列化远程对象并将其写入MessageSequence对象。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
object | IRemoteObject | 是 | 要序列化并写入MessageSequence的远程对象。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900008 | proxy or remote object is invalid |
1900009 | write data to message sequence failed |
示例:
class TestRemoteObject extends rpc.RemoteObject {
constructor(descriptor) {
super(descriptor);
}
}
let data = rpc.MessageSequence.create();
let testRemoteObject = new TestRemoteObject("testObject");
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);
}
2
3
4
5
6
7
8
9
10
11
12
13
readRemoteObject
readRemoteObject(): IRemoteObject
从MessageSequence读取远程对象。此方法用于反序列化MessageSequence对象以生成IRemoteObject。远程对象按写入MessageSequence的顺序读取。
系统能力:SystemCapability.Communication.IPC.Core
返回值:
类型 | 说明 |
---|---|
IRemoteObject | 读取到的远程对象。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900008 | proxy or remote object is invalid |
1900010 | read data from message sequence failed |
示例:
class TestRemoteObject extends rpc.RemoteObject {
constructor(descriptor) {
super(descriptor);
}
}
let data = rpc.MessageSequence.create();
let testRemoteObject = new TestRemoteObject("testObject");
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);
}
2
3
4
5
6
7
8
9
10
11
12
13
14
writeInterfaceToken
writeInterfaceToken(token: string): void
将接口描述符写入MessageSequence对象,远端对象可使用该信息校验本次通信。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
token | string | 是 | 字符串类型描述符。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900009 | write data to message sequence failed |
示例:
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);
}
2
3
4
5
6
7
readInterfaceToken
readInterfaceToken(): string
从MessageSequence对象中读取接口描述符,接口描述符按写入MessageSequence的顺序读取,本地对象可使用该信息检验本次通信。
系统能力:SystemCapability.Communication.IPC.Core
返回值:
类型 | 说明 |
---|---|
string | 返回读取到的接口描述符。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900010 | read data from message sequence failed |
示例:
class Stub extends rpc.RemoteObject {
onRemoteRequest(code, data, reply, option) {
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;
}
}
2
3
4
5
6
7
8
9
10
11
12
getSize
getSize(): number
获取当前创建的MessageSequence对象的数据大小。
系统能力:SystemCapability.Communication.IPC.Core
返回值:
类型 | 说明 |
---|---|
number | 获取的MessageSequence实例的数据大小。以字节为单位。 |
示例:
let data = rpc.MessageSequence.create();
let size = data.getSize();
console.log("RpcClient: size is " + size);
2
3
getCapacity
getCapacity(): number
获取当前MessageSequence对象的容量大小。
系统能力:SystemCapability.Communication.IPC.Core
返回值:
类型 | 说明 |
---|---|
number | 获取的MessageSequence实例的容量大小。以字节为单位。 |
示例:
let data = rpc.MessageSequence.create();
let result = data.getCapacity();
console.log("RpcClient: capacity is " + result);
2
3
setSize
setSize(size: number): void
设置MessageSequence对象中包含的数据大小。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
size | number | 是 | MessageSequence实例的数据大小。以字节为单位。 |
示例:
let data = rpc.MessageSequence.create();
try {
data.setSize(16);
console.log("RpcClient: setSize is " + data.getSize());
} catch(error) {
console.info("rpc set size of MessageSequence fail, errorCode " + error.code);
console.info("rpc set size of MessageSequence fail, errorMessage " + error.message);
}
2
3
4
5
6
7
8
setCapacity
setCapacity(size: number): void
设置MessageSequence对象的存储容量。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
size | number | 是 | MessageSequence实例的存储容量。以字节为单位。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900011 | parcel memory alloc failed |
示例:
let data = rpc.MessageSequence.create();
try {
data.setCapacity(100);
console.log("RpcClient: setCapacity is " + data.getCapacity());
} catch(error) {
console.info("rpc memory alloc fail, errorCode " + error.code);
console.info("rpc memory alloc fail, errorMessage " + error.message);
}
2
3
4
5
6
7
8
getWritableBytes
getWritableBytes(): number
获取MessageSequence的可写字节空间大小。
系统能力:SystemCapability.Communication.IPC.Core
返回值:
类型 | 说明 |
---|---|
number | 获取到的MessageSequence实例的可写字节空间。以字节为单位。 |
示例:
class Stub extends rpc.RemoteObject {
onRemoteRequest(code, data, reply, option) {
let getWritableBytes = data.getWritableBytes();
console.log("RpcServer: getWritableBytes is " + getWritableBytes);
return true;
}
}
2
3
4
5
6
7
getReadableBytes
getReadableBytes(): number
获取MessageSequence的可读字节空间。
系统能力:SystemCapability.Communication.IPC.Core
返回值:
类型 | 说明 |
---|---|
number | 获取到的MessageSequence实例的可读字节空间。以字节为单位。 |
示例:
class Stub extends rpc.RemoteObject {
onRemoteRequest(code, data, reply, option) {
let result = data.getReadableBytes();
console.log("RpcServer: getReadableBytes is " + result);
return true;
}
}
2
3
4
5
6
7
getReadPosition
getReadPosition(): number
获取MessageSequence的读位置。
系统能力:SystemCapability.Communication.IPC.Core
返回值:
类型 | 说明 |
---|---|
number | 返回MessageSequence实例中的当前读取位置。 |
示例:
let data = rpc.MessageSequence.create();
let readPos = data.getReadPosition();
console.log("RpcClient: readPos is " + readPos);
2
3
getWritePosition
getWritePosition(): number
获取MessageSequence的写位置。
系统能力:SystemCapability.Communication.IPC.Core
返回值:
类型 | 说明 |
---|---|
number | 返回MessageSequence实例中的当前写入位置。 |
示例:
let data = rpc.MessageSequence.create();
data.writeInt(10);
let bwPos = data.getWritePosition();
console.log("RpcClient: bwPos is " + bwPos);
2
3
4
rewindRead
rewindRead(pos: number): void
重新偏移读取位置到指定的位置。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
pos | number | 是 | 开始读取数据的目标位置。 |
示例:
let data = rpc.MessageSequence.create();
data.writeInt(12);
data.writeString("sequence");
let number = data.readInt();
console.log("RpcClient: number is " + number);
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);
2
3
4
5
6
7
8
9
10
11
12
13
rewindWrite
rewindWrite(pos: number): void
重新偏移写位置到指定的位置。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
pos | number | 是 | 开始写入数据的目标位置。 |
示例:
let data = rpc.MessageSequence.create();
data.writeInt(4);
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);
2
3
4
5
6
7
8
9
10
11
writeByte
writeByte(val: number): void
将字节值写入MessageSequence实例。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
val | number | 是 | 要写入的字节值。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900009 | write data to message sequence failed |
示例:
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);
}
2
3
4
5
6
7
readByte
readByte(): number
从MessageSequence实例读取字节值。
系统能力:SystemCapability.Communication.IPC.Core
返回值:
类型 | 说明 |
---|---|
number | 返回字节值。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900010 | read data from message sequence failed |
示例:
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);
}
2
3
4
5
6
7
8
9
10
11
12
13
14
writeShort
writeShort(val: number): void
将短整数值写入MessageSequence实例。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
val | number | 是 | 要写入的短整数值。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900009 | write data to message sequence failed |
示例:
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);
}
2
3
4
5
6
7
readShort
readShort(): number
从MessageSequence实例读取短整数值。
系统能力:SystemCapability.Communication.IPC.Core
返回值:
类型 | 说明 |
---|---|
number | 返回短整数值。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900010 | read data from message sequence failed |
示例:
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();
console.log("RpcClient: readByte is: " + ret);
} catch(error) {
console.info("rpc read short fail, errorCode " + error.code);
console.info("rpc read short fail, errorMessage" + error.message);
}
2
3
4
5
6
7
8
9
10
11
12
13
14
writeInt
writeInt(val: number): void
将整数值写入MessageSequence实例。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
val | number | 是 | 要写入的整数值。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900009 | write data to message sequence failed |
示例:
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);
}
2
3
4
5
6
7
readInt
readInt(): number
从MessageSequence实例读取整数值。
系统能力:SystemCapability.Communication.IPC.Core
返回值:
类型 | 说明 |
---|---|
number | 返回整数值。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900010 | read data from message sequence failed |
示例:
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();
console.log("RpcClient: readInt is " + ret);
} catch(error) {
console.info("rpc read int fail, errorCode " + error.code);
console.info("rpc read int fail, errorMessage" + error.message);
}
2
3
4
5
6
7
8
9
10
11
12
13
14
writeLong
writeLong(val: number): void
将长整数值写入MessageSequence实例。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
val | number | 是 | 要写入的长整数值 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900009 | write data to message sequence failed |
示例:
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);
}
2
3
4
5
6
7
readLong
readLong(): number
从MessageSequence实例中读取长整数值。
系统能力:SystemCapability.Communication.IPC.Core
返回值:
类型 | 说明 |
---|---|
number | 返回长整数值。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900010 | read data from message sequence failed |
示例:
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();
console.log("RpcClient: readLong is " + ret);
} catch(error) {
console.info("rpc read long fail, errorCode " + error.code);
console.info("rpc read long fail, errorMessage" + error.message);
}
2
3
4
5
6
7
8
9
10
11
12
13
14
writeFloat
writeFloat(val: number): void
将浮点值写入MessageSequence实例。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
val | number | 是 | 要写入的浮点值。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900009 | write data to message sequence failed |
示例:
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);
}
2
3
4
5
6
7
readFloat
readFloat(): number
从MessageSequence实例中读取浮点值。
系统能力:SystemCapability.Communication.IPC.Core
返回值:
类型 | 说明 |
---|---|
number | 返回浮点值。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900010 | read data from message sequence failed |
示例:
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();
console.log("RpcClient: readFloat is " + ret);
} catch(error) {
console.info("rpc read float fail, errorCode " + error.code);
console.info("rpc read float fail, errorMessage" + error.message);
}
2
3
4
5
6
7
8
9
10
11
12
13
14
writeDouble
writeDouble(val: number): void
将双精度浮点值写入MessageSequence实例。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
val | number | 是 | 要写入的双精度浮点值。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900009 | write data to message sequence failed |
示例:
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);
}
2
3
4
5
6
7
readDouble
readDouble(): number
从MessageSequence实例读取双精度浮点值。
系统能力:SystemCapability.Communication.IPC.Core
返回值:
类型 | 说明 |
---|---|
number | 返回双精度浮点值。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900010 | read data from message sequence failed |
示例:
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();
console.log("RpcClient: readDouble is " + ret);
} catch(error) {
console.info("rpc read double fail, errorCode " + error.code);
console.info("rpc read double fail, errorMessage" + error.message);
}
2
3
4
5
6
7
8
9
10
11
12
13
14
writeBoolean
writeBoolean(val: boolean): void
将布尔值写入MessageSequence实例。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
val | boolean | 是 | 要写入的布尔值。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900009 | write data to message sequence failed |
示例:
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);
}
2
3
4
5
6
7
readBoolean
readBoolean(): boolean
从MessageSequence实例读取布尔值。
系统能力:SystemCapability.Communication.IPC.Core
返回值:
类型 | 说明 |
---|---|
boolean | 返回读取到的布尔值。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900010 | read data from message sequence failed |
示例:
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();
console.log("RpcClient: readBoolean is " + ret);
} catch(error) {
console.info("rpc read boolean fail, errorCode " + error.code);
console.info("rpc read boolean fail, errorMessage" + error.message);
}
2
3
4
5
6
7
8
9
10
11
12
13
14
writeChar
writeChar(val: number): void
将单个字符值写入MessageSequence实例。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
val | number | 是 | 要写入的单个字符值。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900009 | write data to message sequence failed |
示例:
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);
}
2
3
4
5
6
7
readChar
readChar(): number
从MessageSequence实例中读取单个字符值。
系统能力:SystemCapability.Communication.IPC.Core
返回值:
类型 | 说明 |
---|---|
number | 返回单个字符值。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900010 | read data from message sequence failed |
示例:
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();
console.log("RpcClient: readChar is " + ret);
} catch(error) {
console.info("rpc read char fail, errorCode " + error.code);
console.info("rpc read char fail, errorMessage" + error.message);
}
2
3
4
5
6
7
8
9
10
11
12
13
14
writeString
writeString(val: string): void
将字符串值写入MessageSequence实例。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
val | string | 是 | 要写入的字符串值,其长度应小于40960字节。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900009 | write data to message sequence failed |
示例:
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);
}
2
3
4
5
6
7
readString
readString(): string
从MessageSequence实例读取字符串值。
系统能力:SystemCapability.Communication.IPC.Core
返回值:
类型 | 说明 |
---|---|
string | 返回字符串值。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900010 | read data from message sequence failed |
示例:
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();
console.log("RpcClient: readString is " + ret);
} catch(error) {
console.info("rpc read string fail, errorCode " + error.code);
console.info("rpc read string fail, errorMessage" + error.message);
}
2
3
4
5
6
7
8
9
10
11
12
13
14
writeParcelable
writeParcelable(val: Parcelable): void
将自定义序列化对象写入MessageSequence实例。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
val | Parcelable | 是 | 要写入的可序列对象。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900009 | write data to message sequence failed |
示例:
class MySequenceable {
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 MySequenceable(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);
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
readParcelable
readParcelable(dataIn: Parcelable): void
从MessageSequence实例中读取成员变量到指定的对象(dataIn)。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
dataIn | Parcelable | 是 | 需要从MessageSequence读取成员变量的对象。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900010 | read data from message sequence failed |
1900012 | call js callback function failed |
示例:
class MySequenceable {
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 MySequenceable(1, "aaa");
let data = rpc.MessageSequence.create();
data.writeParcelable(parcelable);
let ret = new MySequenceable(0, "");
try {
data.readParcelable(ret);
}catch(error) {
console.info("rpc read parcelable fail, errorCode " + error.code);
console.info("rpc read parcelable fail, errorMessage" + error.message);
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
writeByteArray
writeByteArray(byteArray: number[]): void
将字节数组写入MessageSequence实例。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
byteArray | number[] | 是 | 要写入的字节数组。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900009 | write data to message sequence failed |
示例:
let data = rpc.MessageSequence.create();
let ByteArrayVar = [1, 2, 3, 4, 5];
try {
data.writeByteArray(ByteArrayVar);
} catch(error) {
console.info("rpc write byteArray fail, errorCode " + error.code);
console.info("rpc write byteArray fail, errorMessage" + error.message);
}
2
3
4
5
6
7
8
readByteArray
readByteArray(dataIn: number[]): void
从MessageSequence实例读取字节数组。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
dataIn | number[] | 是 | 要读取的字节数组。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900010 | read data from message sequence failed |
示例:
let data = rpc.MessageSequence.create();
let ByteArrayVar = [1, 2, 3, 4, 5];
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);
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
readByteArray
readByteArray(): number[]
从MessageSequence实例中读取字节数组。
系统能力:SystemCapability.Communication.IPC.Core
返回值:
类型 | 说明 |
---|---|
number[] | 返回字节数组。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900010 | read data from message sequence failed |
示例:
let data = rpc.MessageSequence.create();
let byteArrayVar = [1, 2, 3, 4, 5];
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 = data.readByteArray();
console.log("RpcClient: readByteArray is " + array);
} catch(error) {
console.info("rpc read byteArray fail, errorCode " + error.code);
console.info("rpc read byteArray fail, errorMessage" + error.message);
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
writeShortArray
writeShortArray(shortArray: number[]): void
将短整数数组写入MessageSequence实例。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
shortArray | number[] | 是 | 要写入的短整数数组。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900009 | write data to message sequence failed |
示例:
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);
}
2
3
4
5
6
7
readShortArray
readShortArray(dataIn: number[]): void
从MessageSequence实例中读取短整数数组。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
dataIn | number[] | 是 | 要读取的短整数数组。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900010 | read data from message sequence failed |
示例:
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);
}
2
3
4
5
6
7
8
9
10
11
12
13
14
readShortArray
readShortArray(): number[]
从MessageSequence实例中读取短整数数组。
系统能力:SystemCapability.Communication.IPC.Core
返回值:
类型 | 说明 |
---|---|
number[] | 返回短整数数组。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900010 | read data from message sequence failed |
示例:
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);
}
2
3
4
5
6
7
8
9
10
11
12
13
14
writeIntArray
writeIntArray(intArray: number[]): void
将整数数组写入MessageSequence实例。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
intArray | number[] | 是 | 要写入的整数数组。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900009 | write data to message sequence failed |
示例:
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);
}
2
3
4
5
6
7
readIntArray
readIntArray(dataIn: number[]): void
从MessageSequence实例中读取整数数组。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
dataIn | number[] | 是 | 要读取的整数数组。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900010 | read data from message sequence failed |
示例:
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);
try {
data.readIntArray(array);
} catch(error) {
console.info("rpc read intArray fail, errorCode " + error.code);
console.info("rpc read intArray fail, errorMessage" + error.message);
}
2
3
4
5
6
7
8
9
10
11
12
13
14
readIntArray
readIntArray(): number[]
从MessageSequence实例中读取整数数组。
系统能力:SystemCapability.Communication.IPC.Core
返回值:
类型 | 说明 |
---|---|
number[] | 返回整数数组。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900010 | read data from message sequence failed |
示例:
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);
}
2
3
4
5
6
7
8
9
10
11
12
13
14
writeLongArray
writeLongArray(longArray: number[]): void
将长整数数组写入MessageSequence实例。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
longArray | number[] | 是 | 要写入的长整数数组。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900009 | write data to message sequence failed |
示例:
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);
}
2
3
4
5
6
7
readLongArray
readLongArray(dataIn: number[]): void
从MessageSequence实例读取的长整数数组。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
dataIn | number[] | 是 | 要读取的长整数数组。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900010 | read data from message sequence failed |
示例:
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);
try {
data.readLongArray(array);
} catch(error) {
console.info("rpc read longArray fail, errorCode " + error.code);
console.info("rpc read longArray fail, errorMessage" + error.message);
}
2
3
4
5
6
7
8
9
10
11
12
13
14
readLongArray
readLongArray(): number[]
从MessageSequence实例中读取所有的长整数数组。
系统能力:SystemCapability.Communication.IPC.Core
返回值:
类型 | 说明 |
---|---|
number[] | 返回长整数数组。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900010 | read data from message sequence failed |
示例:
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);
}
2
3
4
5
6
7
8
9
10
11
12
13
14
writeFloatArray
writeFloatArray(floatArray: number[]): void
将浮点数组写入MessageSequence实例。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
floatArray | number[] | 是 | 要写入的浮点数组。由于系统内部对float类型的数据是按照double处理的,使用时对于数组所占的总字节数应按照double类型来计算。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900009 | write data to message sequence failed |
示例:
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);
}
2
3
4
5
6
7
readFloatArray
readFloatArray(dataIn: number[]): void
从MessageSequence实例中读取浮点数组。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
dataIn | number[] | 是 | 要读取的浮点数组。由于系统内部对float类型的数据是按照double处理的,使用时对于数组所占的总字节数应按照double类型来计算。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900010 | read data from message sequence failed |
示例:
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);
}
let array = new Array(3);
try {
data.readFloatArray(array);
} catch(error) {
console.info("rpc read floatArray fail, errorCode " + error.code);
console.info("rpc read floatArray fail, errorMessage" + error.message);
}
2
3
4
5
6
7
8
9
10
11
12
13
14
readFloatArray
readFloatArray(): number[]
从MessageSequence实例中读取浮点数组。
系统能力:SystemCapability.Communication.IPC.Core
返回值:
类型 | 说明 |
---|---|
number[] | 返回浮点数组。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900010 | read data from message sequence failed |
示例:
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);
}
2
3
4
5
6
7
8
9
10
11
12
13
14
writeDoubleArray
writeDoubleArray(doubleArray: number[]): void
将双精度浮点数组写入MessageSequence实例。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
doubleArray | number[] | 是 | 要写入的双精度浮点数组。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900009 | write data to message sequence failed |
示例:
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);
}
2
3
4
5
6
7
readDoubleArray
readDoubleArray(dataIn: number[]): void
从MessageSequence实例中读取双精度浮点数组。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
dataIn | number[] | 是 | 要读取的双精度浮点数组。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900010 | read data from message sequence failed |
示例:
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);
try {
data.readDoubleArray(array);
} catch(error) {
console.info("rpc read doubleArray fail, errorCode " + error.code);
console.info("rpc read doubleArray fail, errorMessage" + error.message);
}
2
3
4
5
6
7
8
9
10
11
12
13
14
readDoubleArray
readDoubleArray(): number[]
从MessageSequence实例读取所有双精度浮点数组。
系统能力:SystemCapability.Communication.IPC.Core
返回值:
类型 | 说明 |
---|---|
number[] | 返回双精度浮点数组。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900010 | read data from message sequence failed |
示例:
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);
}
2
3
4
5
6
7
8
9
10
11
12
13
14
writeBooleanArray
writeBooleanArray(booleanArray: boolean[]): void
将布尔数组写入MessageSequence实例。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
booleanArray | boolean[] | 是 | 要写入的布尔数组。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900009 | write data to message sequence failed |
示例:
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);
}
2
3
4
5
6
7
readBooleanArray
readBooleanArray(dataIn: boolean[]): void
从MessageSequence实例中读取布尔数组。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
dataIn | boolean[] | 是 | 要读取的布尔数组。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900010 | read data from message sequence failed |
示例:
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);
try {
data.readBooleanArray(array);
} catch(error) {
console.info("rpc read booleanArray fail, errorCode " + error.code);
console.info("rpc read booleanArray fail, errorMessage" + error.message);
}
2
3
4
5
6
7
8
9
10
11
12
13
14
readBooleanArray
readBooleanArray(): boolean[]
从MessageSequence实例中读取所有布尔数组。
系统能力:SystemCapability.Communication.IPC.Core
返回值:
类型 | 说明 |
---|---|
boolean[] | 返回布尔数组。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900010 | read data from message sequence failed |
示例:
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);
}
2
3
4
5
6
7
8
9
10
11
12
13
14
writeCharArray
writeCharArray(charArray: number[]): void
将单个字符数组写入MessageSequence实例。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
charArray | number[] | 是 | 要写入的单个字符数组。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900009 | write data to message sequence failed |
示例:
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);
}
2
3
4
5
6
7
readCharArray
readCharArray(dataIn: number[]): void
从MessageSequence实例中读取单个字符数组。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
dataIn | number[] | 是 | 要读取的单个字符数组。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900010 | read data from message sequence failed |
示例:
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 {
data.readCharArray(array);
} catch(error) {
console.info("rpc read charArray fail, errorCode " + error.code);
console.info("rpc read charArray fail, errorMessage" + error.message);
}
2
3
4
5
6
7
8
9
10
11
12
13
14
readCharArray
readCharArray(): number[]
从MessageSequence实例读取单个字符数组。
系统能力:SystemCapability.Communication.IPC.Core
返回值:
类型 | 说明 |
---|---|
number[] | 返回单个字符数组。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900010 | read data from message sequence failed |
示例:
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);
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
writeStringArray
writeStringArray(stringArray: string[]): void
将字符串数组写入MessageSequence实例。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
stringArray | string[] | 是 | 要写入的字符串数组,数组单个元素的长度应小于40960字节。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900009 | write data to message sequence failed |
示例:
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);
}
2
3
4
5
6
7
readStringArray
readStringArray(dataIn: string[]): void
从MessageSequence实例读取字符串数组。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
dataIn | string[] | 是 | 要读取的字符串数组。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900010 | read data from message sequence failed |
示例:
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);
try {
data.readStringArray(array);
} catch(error) {
console.info("rpc read stringArray fail, errorCode " + error.code);
console.info("rpc read stringArray fail, errorMessage" + error.message);
}
2
3
4
5
6
7
8
9
10
11
12
13
14
readStringArray
readStringArray(): string[]
从MessageSequence实例读取字符串数组。
系统能力:SystemCapability.Communication.IPC.Core
返回值:
类型 | 说明 |
---|---|
string[] | 返回字符串数组。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900010 | read data from message sequence failed |
示例:
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);
}
2
3
4
5
6
7
8
9
10
11
12
13
14
writeNoException
writeNoException(): void
向MessageSequence写入“指示未发生异常”的信息。
系统能力:SystemCapability.Communication.IPC.Core
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900009 | write data to message sequence failed |
示例:
class TestRemoteObject extends rpc.RemoteObject {
constructor(descriptor) {
super(descriptor);
}
onRemoteRequest(code, data, reply, option) {
if (code === 1) {
console.log("RpcServer: onRemoteRequest called");
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);
return false;
}
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
readException
readException(): void
从MessageSequence中读取异常。
系统能力:SystemCapability.Communication.IPC.Core
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900010 | read data from message sequence failed |
示例:
Stage模型的应用在获取服务前需要先获取context,具体方法可参考获取context
//仅FA模型需要导入@ohos.ability.featureAbility
//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.EntryAbility",
};
//FA模型使用此方法连接服务
//FA.connectAbility(want,connect);
globalThis.context.connectServiceExtensionAbility(want, connect);
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
上述onConnect回调函数中的proxy对象需要等ability异步连接成功后才会被赋值,然后才可调用proxy对象的sendMessageRequest接口方法发送消息
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(errCode) {
if (errCode === 0) {
console.log("sendMessageRequest got result");
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 {
console.log("RPCTest: sendMessageRequest failed, errCode: " + errCode);
}
}).catch(function(e) {
console.log("RPCTest: sendMessageRequest got exception: " + e.message);
}).finally (() => {
console.log("RPCTest: sendMessageRequest ends, reclaim parcel");
data.reclaim();
reply.reclaim();
});
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
writeParcelableArray
writeParcelableArray(parcelableArray: Parcelable[]): void
将可序列化对象数组写入MessageSequence实例。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
parcelableArray | Parcelable[] | 是 | 要写入的可序列化对象数组。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900009 | write data to message sequence failed |
示例:
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 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);
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
readParcelableArray
readParcelableArray(parcelableArray: Parcelable[]): void
从MessageSequence实例读取可序列化对象数组。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
parcelableArray | Parcelable[] | 是 | 要读取的可序列化对象数组。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900010 | read data from message sequence failed |
1900012 | call js callback function failed |
示例:
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 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);
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
writeRemoteObjectArray
writeRemoteObjectArray(objectArray: IRemoteObject[]): void
将IRemoteObject对象数组写入MessageSequence。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
objectArray | IRemoteObject[] | 是 | 要写入MessageSequence的IRemoteObject对象数组。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900009 | write data to message sequence failed |
示例:
class TestRemoteObject extends rpc.RemoteObject {
constructor(descriptor) {
super(descriptor);
this.modifyLocalInterface(this, descriptor);
}
asObject(): rpc.IRemoteObject {
return this;
}
}
let a = [new TestRemoteObject("testObject1"), new TestRemoteObject("testObject2"), new TestRemoteObject("testObject3")];
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);
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
readRemoteObjectArray
readRemoteObjectArray(objects: IRemoteObject[]): void
从MessageSequence读取IRemoteObject对象数组。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
objects | IRemoteObject[] | 是 | 从MessageSequence读取的IRemoteObject对象数组。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900010 | read data from message sequence failed |
示例:
class MyDeathRecipient {
onRemoteDied() {
console.log("server died");
}
}
class TestRemoteObject extends rpc.RemoteObject {
constructor(descriptor) {
super(descriptor);
this.modifyLocalInterface(this, descriptor);
}
asObject(): rpc.IRemoteObject {
return this;
}
}
let a = [new TestRemoteObject("testObject1"), new TestRemoteObject("testObject2"), new TestRemoteObject("testObject3")];
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);
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
readRemoteObjectArray
readRemoteObjectArray(): IRemoteObject[]
从MessageSequence读取IRemoteObject对象数组。
系统能力:SystemCapability.Communication.IPC.Core
返回值:
类型 | 说明 |
---|---|
IRemoteObject[] | 返回IRemoteObject对象数组。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900010 | read data from message sequence failed |
示例:
class TestRemoteObject extends rpc.RemoteObject {
constructor(descriptor) {
super(descriptor);
this.modifyLocalInterface(this, descriptor);
}
asObject(): rpc.IRemoteObject {
return this;
}
}
let a = [new TestRemoteObject("testObject1"), new TestRemoteObject("testObject2"), new TestRemoteObject("testObject3")];
let data = rpc.MessageSequence.create();
data.writeRemoteObjectArray(a);
try {
let b = data.readRemoteObjectArray();
console.log("RpcClient: readRemoteObjectArray is " + 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);
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
closeFileDescriptor9+
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);
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);
}
2
3
4
5
6
7
8
9
dupFileDescriptor
static dupFileDescriptor(fd: number) :number
静态方法,复制给定的文件描述符。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
fd | number | 是 | 表示已存在的文件描述符。 |
返回值:
类型 | 说明 |
---|---|
number | 返回新的文件描述符。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900013 | call os dup function failed |
示例:
import fileio from '@ohos.fileio';
let filePath = "path/to/file";
let fd = fileio.openSync(filePath, 0o2| 0o100, 0o666);
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);
}
2
3
4
5
6
7
8
9
containFileDescriptors
containFileDescriptors(): boolean
检查此MessageSequence对象是否包含文件描述符。
系统能力:SystemCapability.Communication.IPC.Core
返回值:
类型 | 说明 |
---|---|
boolean | true:包含文件描述符,false:不包含文件描述符。 |
示例:
import fileio from '@ohos.fileio';
let sequence = new rpc.MessageSequence();
let filePath = "path/to/file";
let r1 = sequence.containFileDescriptors();
let fd = fileio.openSync(filePath, 0o2| 0o100, 0o666);
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();
console.log("RpcTest: sequence after write fd containFd result is : " + containFD);
} catch(error) {
console.info("rpc contain file descriptor fail, errorCode " + error.code);
console.info("rpc contain file descriptor fail, errorMessage" + error.message);
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
writeFileDescriptor
writeFileDescriptor(fd: number): void
写入文件描述符到MessageSequence。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
fd | number | 是 | 文件描述符。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900009 | write data to message sequence failed |
示例:
import fileio from '@ohos.fileio';
let sequence = new rpc.MessageSequence();
let filePath = "path/to/file";
let fd = fileio.openSync(filePath, 0o2| 0o100, 0o666);
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);
}
2
3
4
5
6
7
8
9
10
readFileDescriptor
readFileDescriptor(): number
从MessageSequence中读取文件描述符。
系统能力:SystemCapability.Communication.IPC.Core
返回值:
类型 | 说明 |
---|---|
number | 返回文件描述符。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900010 | read data from message sequence failed |
示例:
import fileio from '@ohos.fileio';
let sequence = new rpc.MessageSequence();
let filePath = "path/to/file";
let fd = fileio.openSync(filePath, 0o2| 0o100, 0o666);
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);
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
writeAshmem
writeAshmem(ashmem: Ashmem): void
将指定的匿名共享对象写入此MessageSequence。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
ashmem | Ashmem | 是 | 要写入MessageSequence的匿名共享对象。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900003 | write to ashmem failed |
示例:
let sequence = new rpc.MessageSequence();
let ashmem;
try {
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);
}
2
3
4
5
6
7
8
9
10
11
12
13
14
readAshmem
readAshmem(): Ashmem
从MessageSequence读取匿名共享对象。
系统能力:SystemCapability.Communication.IPC.Core
返回值:
类型 | 说明 |
---|---|
Ashmem | 返回匿名共享对象。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900004 | read from ashmem failed |
示例:
let sequence = new rpc.MessageSequence();
let ashmem;
try {
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();
console.log("RpcTest: read ashmem to result is : " + readAshmem);
} catch(error) {
console.info("rpc read ashmem fail, errorCode " + error.code);
console.info("rpc read ashmem fail, errorMessage" + error.message);
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
getRawDataCapacity
getRawDataCapacity(): number
获取MessageSequence可以容纳的最大原始数据量。
系统能力:SystemCapability.Communication.IPC.Core
返回值:
类型 | 说明 |
---|---|
number | 返回MessageSequence可以容纳的最大原始数据量,即128 Mb。 |
示例:
let sequence = new rpc.MessageSequence();
let result = sequence.getRawDataCapacity();
console.log("RpcTest: sequence get RawDataCapacity result is : " + result);
2
3
writeRawData
writeRawData(rawData: number[], size: number): void
将原始数据写入MessageSequence对象。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
rawData | number[] | 是 | 要写入的原始数据。 |
size | number | 是 | 发送的原始数据大小,以字节为单位。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900009 | write data to message sequence failed |
示例:
let sequence = new rpc.MessageSequence();
let arr = [1, 2, 3, 4, 5];
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);
}
2
3
4
5
6
7
8
readRawData
readRawData(size: number): number[]
从MessageSequence读取原始数据。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
size | number | 是 | 要读取的原始数据的大小。 |
返回值:
类型 | 说明 |
---|---|
number[] | 返回原始数据(以字节为单位)。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900010 | read data from message sequence failed |
示例:
let sequence = new rpc.MessageSequence();
let arr = [1, 2, 3, 4, 5];
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);
console.log("RpcTest: sequence read raw data result is : " + result);
} catch(error) {
console.info("rpc read rawdata fail, errorCode " + error.code);
console.info("rpc read rawdata fail, errorMessage" + error.message);
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
MessageParcel(deprecated)
从API version 9 开始不再维护,建议使用MessageSequence类替代。
在RPC过程中,发送方可以使用MessageParcel提供的写方法,将待发送的数据以特定格式写入该对象。接收方可以使用MessageParcel提供的读方法从该对象中读取特定格式的数据。数据格式包括:基础类型及数组、IPC对象、接口描述符和自定义序列化对象。
create
static create(): MessageParcel
静态方法,创建MessageParcel对象。
系统能力:SystemCapability.Communication.IPC.Core
返回值:
类型 | 说明 |
---|---|
MessageParcel | 返回创建的MessageParcel对象。 |
示例:
let data = rpc.MessageParcel.create();
console.log("RpcClient: data is " + data);
2
reclaim
reclaim(): void
释放不再使用的MessageParcel对象。
系统能力:SystemCapability.Communication.IPC.Core
示例:
let reply = rpc.MessageParcel.create();
reply.reclaim();
2
writeRemoteObject
writeRemoteObject(object: IRemoteObject): boolean
序列化远程对象并将其写入MessageParcel对象。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
object | IRemoteObject | 是 | 要序列化并写入MessageParcel的远程对象。 |
返回值:
类型 | 说明 |
---|---|
boolean | true:操作成功,false:操作失败。 |
示例:
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;
}
}
let data = rpc.MessageParcel.create();
let testRemoteObject = new TestRemoteObject("testObject");
data.writeRemoteObject(testRemoteObject);
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
readRemoteObject
readRemoteObject(): IRemoteObject
从MessageParcel读取远程对象。此方法用于反序列化MessageParcel对象以生成IRemoteObject。远程对象按写入MessageParcel的顺序读取。
系统能力:SystemCapability.Communication.IPC.Core
返回值:
类型 | 说明 |
---|---|
IRemoteObject | 读取到的远程对象。 |
示例:
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;
}
}
let data = rpc.MessageParcel.create();
let testRemoteObject = new TestRemoteObject("testObject");
data.writeRemoteObject(testRemoteObject);
let proxy = data.readRemoteObject();
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
writeInterfaceToken
writeInterfaceToken(token: string): boolean
将接口描述符写入MessageParcel对象,远端对象可使用该信息校验本次通信。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
token | string | 是 | 字符串类型描述符。 |
返回值:
类型 | 说明 |
---|---|
boolean | true:操作成功,false:操作失败。 |
示例:
let data = rpc.MessageParcel.create();
let result = data.writeInterfaceToken("aaa");
console.log("RpcServer: writeInterfaceToken is " + result);
2
3
readInterfaceToken
readInterfaceToken(): string
从MessageParcel中读取接口描述符,接口描述符按写入MessageParcel的顺序读取,本地对象可使用该信息检验本次通信。
系统能力:SystemCapability.Communication.IPC.Core
返回值:
类型 | 说明 |
---|---|
string | 返回读取到的接口描述符。 |
示例:
class Stub extends rpc.RemoteObject {
onRemoteMessageRequest(code, data, reply, option) {
let interfaceToken = data.readInterfaceToken();
console.log("RpcServer: interfaceToken is " + interfaceToken);
return true;
}
}
2
3
4
5
6
7
getSize
getSize(): number
获取当前MessageParcel的数据大小。
系统能力:SystemCapability.Communication.IPC.Core
返回值:
类型 | 说明 |
---|---|
number | 获取的MessageParcel的数据大小。以字节为单位。 |
示例:
let data = rpc.MessageParcel.create();
let size = data.getSize();
console.log("RpcClient: size is " + size);
2
3
getCapacity
getCapacity(): number
获取当前MessageParcel的容量。
系统能力:SystemCapability.Communication.IPC.Core
返回值:
类型 | 说明 |
---|---|
number | 获取的MessageParcel的容量大小。以字节为单位。 |
示例:
let data = rpc.MessageParcel.create();
let result = data.getCapacity();
console.log("RpcClient: capacity is " + result);
2
3
setSize
setSize(size: number): boolean
设置MessageParcel实例中包含的数据大小。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
size | number | 是 | MessageParcel实例的数据大小。以字节为单位。 |
返回值:
类型 | 说明 |
---|---|
boolean | true:设置成功,false:设置失败。 |
示例:
let data = rpc.MessageParcel.create();
let setSize = data.setSize(16);
console.log("RpcClient: setSize is " + setSize);
2
3
setCapacity
setCapacity(size: number): boolean
设置MessageParcel实例的存储容量。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
size | number | 是 | MessageParcel实例的存储容量。以字节为单位。 |
返回值:
类型 | 说明 |
---|---|
boolean | true:设置成功,false:设置失败。 |
示例:
let data = rpc.MessageParcel.create();
let result = data.setCapacity(100);
console.log("RpcClient: setCapacity is " + result);
2
3
getWritableBytes
getWritableBytes(): number
获取MessageParcel的可写字节空间。
系统能力:SystemCapability.Communication.IPC.Core
返回值:
类型 | 说明 |
---|---|
number | 获取到的MessageParcel的可写字节空间。以字节为单位。 |
示例:
class Stub extends rpc.RemoteObject {
onRemoteMessageRequest(code, data, reply, option) {
let getWritableBytes = data.getWritableBytes();
console.log("RpcServer: getWritableBytes is " + getWritableBytes);
return true;
}
}
2
3
4
5
6
7
getReadableBytes
getReadableBytes(): number
获取MessageParcel的可读字节空间。
系统能力:SystemCapability.Communication.IPC.Core
返回值:
类型 | 说明 |
---|---|
number | 获取到的MessageParcel的可读字节空间。以字节为单位。 |
示例:
class Stub extends rpc.RemoteObject {
onRemoteRequest(code, data, reply, option) {
let result = data.getReadableBytes();
console.log("RpcServer: getReadableBytes is " + result);
return true;
}
}
2
3
4
5
6
7
getReadPosition
getReadPosition(): number
获取MessageParcel的读位置。
系统能力:SystemCapability.Communication.IPC.Core
返回值:
类型 | 说明 |
---|---|
number | 返回MessageParcel实例中的当前读取位置。 |
示例:
let data = rpc.MessageParcel.create();
let readPos = data.getReadPosition();
console.log("RpcClient: readPos is " + readPos);
2
3
getWritePosition
getWritePosition(): number
获取MessageParcel的写位置。
系统能力:SystemCapability.Communication.IPC.Core
返回值:
类型 | 说明 |
---|---|
number | 返回MessageParcel实例中的当前写入位置。 |
示例:
let data = rpc.MessageParcel.create();
data.writeInt(10);
let bwPos = data.getWritePosition();
console.log("RpcClient: bwPos is " + bwPos);
2
3
4
rewindRead
rewindRead(pos: number): boolean
重新偏移读取位置到指定的位置。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
pos | number | 是 | 开始读取数据的目标位置。 |
返回值:
类型 | 说明 |
---|---|
boolean | true:读取位置发生更改,false:读取位置未发生更改。 |
示例:
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);
2
3
4
5
6
7
8
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);
2
3
4
5
6
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);
2
3
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);
2
3
4
5
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);
2
3
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);
2
3
4
5
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);
2
3
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);
2
3
4
5
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);
2
3
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);
2
3
4
5
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);
2
3
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);
2
3
4
5
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);
2
3
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);
2
3
4
5
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);
2
3
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);
2
3
4
5
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);
2
3
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);
2
3
4
5
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);
2
3
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);
2
3
4
5
writeSequenceable
writeSequenceable(val: Sequenceable): boolean
将自定义序列化对象写入MessageParcel实例。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
val | 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);
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
readSequenceable
readSequenceable(dataIn: Sequenceable): boolean
从MessageParcel实例中读取成员变量到指定的对象(dataIn)。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
dataIn | 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);
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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);
2
3
4
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);
2
3
4
5
6
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);
2
3
4
5
6
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);
2
3
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);
2
3
4
5
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);
2
3
4
5
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);
2
3
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);
2
3
4
5
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);
2
3
4
5
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);
2
3
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);
2
3
4
5
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);
2
3
4
5
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);
2
3
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);
2
3
4
5
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);
2
3
4
5
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);
2
3
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);
2
3
4
5
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);
2
3
4
5
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);
2
3
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);
2
3
4
5
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);
2
3
4
5
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);
2
3
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);
2
3
4
5
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);
2
3
4
5
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);
2
3
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);
2
3
4
5
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);
2
3
4
5
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;
}
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
readException8+
readException(): void
从MessageParcel中读取异常。
系统能力:SystemCapability.Communication.IPC.Core
示例:
Stage模型的应用在获取服务前需要先获取context,具体方法可参考获取context
//仅FA模型需要导入@ohos.ability.;featureAbility
//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.EntryAbility",
};
//FA模型使用此方法连接服务
//FA.connectAbility(want,connect);
globalThis.context.connectServiceExtensionAbility(want, connect);
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
上述onConnect回调函数中的proxy对象需要等ability异步连接成功后才会被赋值,然后才可调用proxy对象的sendMessageRequest接口方法发送消息
let option = new rpc.MessageOption();
let data = rpc.MessageParcel.create();
let reply = rpc.MessageParcel.create();
data.writeInt(1);
data.writeString("hello");
proxy.sendMessageRequest(1, data, reply, option)
.then(function(errCode) {
if (errCode === 0) {
console.log("sendMessageRequest got result");
reply.readException();
let msg = reply.readString();
console.log("RPCTest: reply msg: " + msg);
} else {
console.log("RPCTest: sendMessageRequest failed, errCode: " + errCode);
}
}).catch(function(e) {
console.log("RPCTest: sendMessageRequest got exception: " + e.message);
}).finally (() => {
console.log("RPCTest: sendMessageRequest ends, reclaim parcel");
data.reclaim();
reply.reclaim();
});
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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);
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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);
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
writeRemoteObjectArray8+
writeRemoteObjectArray(objectArray: IRemoteObject[]): boolean
将IRemoteObject对象数组写入MessageParcel。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
objectArray | IRemoteObject[] | 是 | 要写入MessageParcel的IRemoteObject对象数组。 |
返回值:
类型 | 说明 |
---|---|
boolean | true:写入成功,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);
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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);
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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);
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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);
2
3
4
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);
2
3
4
containFileDescriptors8+
containFileDescriptors(): boolean
检查此MessageParcel对象是否包含文件描述符。
系统能力:SystemCapability.Communication.IPC.Core
返回值:
类型 | 说明 |
---|---|
boolean | 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);
2
3
4
5
6
7
8
9
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);
2
3
4
5
6
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);
2
3
4
5
6
7
writeAshmem8+
writeAshmem(ashmem: Ashmem): boolean
将指定的匿名共享对象写入此MessageParcel。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
ashmem | Ashmem | 是 | 要写入MessageParcel的匿名共享对象。 |
返回值:
类型 | 说明 |
---|---|
boolean | 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);
2
3
4
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);
2
3
4
5
6
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);
2
3
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);
2
3
4
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);
2
3
4
5
6
Parcelable9+
在进程间通信(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);
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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);
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Sequenceable(deprecated)
从API version 9 开始不再维护,建议使用Parcelable类替代。
在进程间通信(IPC)期间,将类的对象写入MessageParcel并从MessageParcel中恢复它们。
marshalling
marshalling(dataOut: MessageParcel): boolean
将此可序列对象封送到MessageParcel中。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
dataOut | 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);
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
unmarshalling
unmarshalling(dataIn: MessageParcel): boolean
从MessageParcel中解封此可序列对象。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
dataIn | 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);
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
IRemoteBroker
远端对象的代理持有者。用于获取代理对象。
asObject
asObject(): IRemoteObject
需派生类实现,获取代理或远端对象。
系统能力:SystemCapability.Communication.IPC.Core
返回值:
类型 | 说明 |
---|---|
IRemoteObject | 如果调用者是RemoteObject对象,则直接返回本身;如果调用者是RemoteProxy对象,则返回它的持有者IRemoteObject。 |
示例:
class TestAbility extends rpc.RemoteObject {
asObject() {
return this;
}
}
let remoteObject = new TestAbility("testObject").asObject();
2
3
4
5
6
示例:
Stage模型的应用在获取服务前需要先获取context,具体方法可参考获取context
//仅FA模型需要导入@ohos.ability.featureAbility
//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.EntryAbility",
};
//FA模型使用此方法连接服务
//FA.connectAbility(want,connect);
globalThis.context.connectServiceExtensionAbility(want, connect);
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
上述onConnect回调函数中的proxy对象需要等ability异步连接成功后才会被赋值,然后才可调用proxy对象的asObject接口方法获取代理或远端对象
class TestProxy {
remote: rpc.RemoteObject;
constructor(remote) {
this.remote = remote;
}
asObject() {
return this.remote;
}
}
let iRemoteObject = new TestProxy(proxy).asObject();
2
3
4
5
6
7
8
9
10
DeathRecipient
用于订阅远端对象的死亡通知。当被订阅该通知的远端对象死亡时,本端可收到消息,调用onRemoteDied接口。远端对象死亡可以为远端对象所在进程死亡,远端对象所在设备关机或重启,当远端对象与本端对象属于不同设备时,也可为远端对象离开组网时。
onRemoteDied
onRemoteDied(): void
在成功添加死亡通知订阅后,当远端对象死亡时,将自动调用本方法。
系统能力:SystemCapability.Communication.IPC.Core
示例:
class MyDeathRecipient {
onRemoteDied() {
console.log("server died");
}
}
2
3
4
5
RequestResult9+
发送请求的响应结果。
系统能力:以下各项对应的系统能力均为SystemCapability.Communication.IPC.Core。
名称 | 类型 | 可读 | 可写 | 说明 |
---|---|---|---|---|
errCode | number | 是 | 否 | 错误码。 |
code | number | 是 | 否 | 消息代码。 |
data | MessageSequence | 是 | 否 | 发送给对端进程的MessageSequence对象。 |
reply | MessageSequence | 是 | 否 | 对端进程返回的MessageSequence对象。 |
SendRequestResult8+(deprecated)
从API version 9 开始不再维护,建议使用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对象。 |
queryLocalInterface(deprecated)
从API version 9 开始不再维护,建议使用getLocalInterface类替代。
queryLocalInterface(descriptor: string): IRemoteBroker
查询接口描述符的字符串。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
descriptor | string | 是 | 接口描述符的字符串。 |
返回值:
类型 | 说明 |
---|---|
IRemoteBroker | 返回绑定到指定接口描述符的IRemoteBroker对象。 |
sendRequest(deprecated)
从API version 9 开始不再维护,建议使用sendMessageRequest类替代。
sendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption): boolean
以同步或异步方式向对端进程发送MessageParcel消息。如果为选项设置了异步模式,则期约立即兑现,reply报文里没有内容。如果为选项设置了同步模式,则期约将在sendRequest返回时兑现,回复内容在reply报文里。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
code | number | 是 | 本次请求调用的消息码,由通信双方确定。如果接口由IDL工具生成,则消息代码由IDL自动生成。 |
data | MessageParcel | 是 | 保存待发送数据的 MessageParcel对象。 |
reply | MessageParcel | 是 | 接收应答数据的MessageParcel对象。 |
options | MessageOption | 是 | 本次请求的同异步模式,默认同步调用。 |
返回值:
类型 | 说明 |
---|---|
boolean | true:发送成功,false:发送失败。 |
sendRequest8+(deprecated)
从API version 9 开始不再维护,建议使用sendMessageRequest类替代。
sendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption): Promise<SendRequestResult>
以同步或异步方式向对端进程发送MessageParcel消息。如果为选项设置了异步模式,则期约立即兑现,reply报文里没有内容,具体回复需要在业务侧的回调中获取。如果为选项设置了同步模式,则期约将在sendRequest返回时兑现,回复内容在reply报文里。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
code | number | 是 | 本次请求调用的消息码,由通信双方确定。如果接口由IDL工具生成,则消息代码由IDL自动生成。 |
data | MessageParcel | 是 | 保存待发送数据的 MessageParcel对象。 |
reply | MessageParcel | 是 | 接收应答数据的MessageParcel对象。 |
options | 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 | 是 | 本次请求的同异步模式,默认同步调用。 |
返回值:
类型 | 说明 |
---|---|
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 | 是 | 本次请求的同异步模式,默认同步调用。 |
callback | AsyncCallback<RequestResult> | 是 | 接收发送结果的回调。 |
sendRequest8+(deprecated)
从API version 9 开始不再维护,建议使用sendMessageRequest类替代。
sendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption, callback: AsyncCallback<SendRequestResult>): void
以同步或异步方式向对端进程发送MessageParcel消息。如果为选项设置了异步模式,则立即收到回调,reply报文里没有内容,具体回复需要在业务侧的回调中获取。如果为选项设置了同步模式,则将在sendRequest返回时收到回调,回复内容在reply报文里。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
code | number | 是 | 本次请求调用的消息码,由通信双方确定。如果接口由IDL工具生成,则消息代码由IDL自动生成。 |
data | MessageParcel | 是 | 保存待发送数据的 MessageParcel对象。 |
reply | MessageParcel | 是 | 接收应答数据的MessageParcel对象。 |
options | MessageOption | 是 | 本次请求的同异步模式,默认同步调用。 |
callback | AsyncCallback<SendRequestResult> | 是 | 接收发送结果的回调。 |
registerDeathRecipient9+
registerDeathRecipient(recipient: DeathRecipient, flags: number): void
注册用于接收远程对象死亡通知的回调。如果与RemoteProxy对象匹配的远程对象进程死亡,则调用此方法。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
recipient | DeathRecipient | 是 | 要注册的回调。 |
flags | number | 是 | 死亡通知标志。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900008 | proxy or remote object is invalid |
addDeathrecipient(deprecated)
从API version 9 开始不再维护,建议使用registerDeathRecipient类替代。
addDeathRecipient(recipient: DeathRecipient, flags: number): boolean
注册用于接收远程对象死亡通知的回调。如果与RemoteProxy对象匹配的远程对象进程死亡,则调用此方法。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
recipient | DeathRecipient | 是 | 要注册的回调。 |
flags | number | 是 | 死亡通知标志。 |
返回值:
类型 | 说明 |
---|---|
boolean | true:回调注册成功,false:回调注册失败。 |
unregisterDeathRecipient9+
unregisterDeathRecipient(recipient: DeathRecipient, flags: number): void
注销用于接收远程对象死亡通知的回调。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
recipient | DeathRecipient | 是 | 要注销的回调。 |
flags | number | 是 | 死亡通知标志。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900008 | proxy or remote object is invalid |
removeDeathRecipient(deprecated)
从API version 9 开始不再维护,建议使用unregisterDeathRecipient类替代。
removeDeathRecipient(recipient: DeathRecipient, flags: number): boolean
注销用于接收远程对象死亡通知的回调。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
recipient | DeathRecipient | 是 | 要注销的回调。 |
flags | number | 是 | 死亡通知标志。 |
返回值:
类型 | 说明 |
---|---|
boolean | true:回调注销成功,false:回调注销失败。 |
getDescriptor9+
getDescriptor(): string
获取对象的接口描述符,接口描述符为字符串。
系统能力:SystemCapability.Communication.IPC.Core
返回值:
类型 | 说明 |
---|---|
string | 返回接口描述符。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900008 | proxy or remote object is invalid |
getInterfaceDescriptor(deprecated)
从API version 9 开始不再维护,建议使用getDescriptor类替代。
getInterfaceDescriptor(): string
获取对象的接口描述符,接口描述符为字符串。
系统能力: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)
从API version 9 开始不再维护,建议使用sendMessageRequest类替代。
sendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption): boolean
以同步或异步方式向对端进程发送MessageParcel消息。如果为选项设置了异步模式,则期约立即兑现,reply报文里没有内容,具体回复需要在业务侧的回调中获取。如果为选项设置了同步模式,则期约将在sendRequest返回时兑现,回复内容在reply报文里。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
code | number | 是 | 本次请求调用的消息码,由通信双方确定。如果接口由IDL工具生成,则消息代码由IDL自动生成。 |
data | MessageParcel | 是 | 保存待发送数据的 MessageParcel对象。 |
reply | MessageParcel | 是 | 接收应答数据的MessageParcel对象。 |
options | MessageOption | 是 | 本次请求的同异步模式,默认同步调用。 |
返回值:
类型 | 说明 |
---|---|
boolean | true:发送成功,false:发送失败。 |
示例:
Stage模型的应用在获取服务前需要先获取context,具体方法可参考获取context
//仅FA模型需要导入@ohos.ability.featureAbility
//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.EntryAbility",
};
//FA模型使用此方法连接服务
//FA.connectAbility(want,connect);
globalThis.context.connectServiceExtensionAbility(want, connect);
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
上述onConnect回调函数中的proxy对象需要等ability异步连接成功后才会被赋值,然后才可调用proxy对象的sendRequest接口方法发送消息
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();
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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 | 是 | 本次请求的同异步模式,默认同步调用。 |
返回值:
类型 | 说明 |
---|---|
Promise<RequestResult> | 返回一个期约,兑现值是requestResult实例。 |
示例:
Stage模型的应用在获取服务前需要先获取context,具体方法可参考获取context
//仅FA模型需要导入@ohos.ability.featureAbility
//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.EntryAbility",
};
//FA模型使用此方法连接服务
//FA.connectAbility(want,connect);
globalThis.context.connectServiceExtensionAbility(want, connect);
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
上述onConnect回调函数中的proxy对象需要等ability异步连接成功后才会被赋值,然后才可调用proxy对象的sendMessageRequest接口方法发送消息
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();
});
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
sendRequest8+(deprecated)
从API version 9 开始不再维护,建议使用sendMessageRequest类替代。
sendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption): Promise<SendRequestResult>
以同步或异步方式向对端进程发送MessageParcel消息。如果为选项设置了异步模式,则期约立即兑现,reply报文里没有内容,具体回复需要在业务侧的回调中获取。如果为选项设置了同步模式,则期约将在sendRequest返回时兑现,回复内容在reply报文里。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
code | number | 是 | 本次请求调用的消息码,由通信双方确定。如果接口由IDL工具生成,则消息代码由IDL自动生成。 |
data | MessageParcel | 是 | 保存待发送数据的 MessageParcel对象。 |
reply | MessageParcel | 是 | 接收应答数据的MessageParcel对象。 |
options | MessageOption | 是 | 本次请求的同异步模式,默认同步调用。 |
返回值:
类型 | 说明 |
---|---|
Promise<SendRequestResult> | 返回一个期约,兑现值是sendRequestResult实例。 |
示例:
Stage模型的应用在获取服务前需要先获取context,具体方法可参考获取context
//仅FA模型需要导入@ohos.ability.featureAbility
//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.EntryAbility",
};
//FA模型使用此方法连接服务
//FA.connectAbility(want,connect);
globalThis.context.connectServiceExtensionAbility(want, connect);
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
上述onConnect回调函数中的proxy对象需要等ability异步连接成功后才会被赋值,然后才可调用proxy对象的sendRequest接口方法发送消息
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();
});
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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 | 是 | 本次请求的同异步模式,默认同步调用。 |
callback | AsyncCallback<RequestResult> | 是 | 接收发送结果的回调。 |
示例:
Stage模型的应用在获取服务前需要先获取context,具体方法可参考获取context
//仅FA模型需要导入@ohos.ability.featureAbility
//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.EntryAbility",
};
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模型使用此方法链接服务
//FA.connectAbility(want,connect);
globalThis.context.connectServiceExtensionAbility(want, connect);
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
上述onConnect回调函数中的proxy对象需要等ability异步连接成功后才会被赋值,然后才可调用proxy对象的sendMessageRequest接口方法发送消息
let option = new rpc.MessageOption();
let data = rpc.MessageSequence.create();
let reply = rpc.MessageSequence.create();
data.writeInt(1);
data.writeString("hello");
try {
proxy.sendMessageRequest(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);
}
2
3
4
5
6
7
8
9
10
11
sendRequest8+(deprecated)
从API version 9 开始不再维护,建议使用sendMessageRequest类替代。
sendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption, callback: AsyncCallback<SendRequestResult>): void
以同步或异步方式向对端进程发送MessageParcel消息。如果为选项设置了异步模式,则立即收到回调,reply报文里没有内容,具体回复需要在业务侧的回调中获取。如果为选项设置了同步模式,则将在sendRequest返回时收到回调,回复内容在reply报文里。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
code | number | 是 | 本次请求调用的消息码,由通信双方确定。如果接口由IDL工具生成,则消息代码由IDL自动生成。 |
data | MessageParcel | 是 | 保存待发送数据的 MessageParcel对象。 |
reply | MessageParcel | 是 | 接收应答数据的MessageParcel对象。 |
options | MessageOption | 是 | 本次请求的同异步模式,默认同步调用。 |
callback | AsyncCallback<SendRequestResult> | 是 | 接收发送结果的回调。 |
示例:
Stage模型的应用在获取服务前需要先获取context,具体方法可参考获取context
//仅FA模型需要导入@ohos.ability.featureAbility
//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.EntryAbility",
};
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模型使用此方法链接服务
//FA.connectAbility(want,connect);
globalThis.context.connectServiceExtensionAbility(want, connect);
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
上述onConnect回调函数中的proxy对象需要等ability异步连接成功后才会被赋值,然后才可调用proxy对象的sendRequest接口方法发送消息
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);
2
3
4
5
6
getLocalInterface9+
getLocalInterface(interface: string): IRemoteBroker
查询并获取当前接口描述符对应的本地接口对象。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
interface | string | 是 | 需要查询的接口描述符。 |
返回值:
类型 | 说明 |
---|---|
IRemoteBroker | 默认返回Null,标识该接口是一个代理侧接口。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900006 | only remote object permitted |
示例:
Stage模型的应用在获取服务前需要先获取context,具体方法可参考获取context
//仅FA模型需要导入@ohos.ability.featureAbility
//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.EntryAbility",
};
//FA模型使用此方法连接服务
//FA.connectAbility(want,connect);
globalThis.context.connectServiceExtensionAbility(want, connect);
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
上述onConnect回调函数中的proxy对象需要等ability异步连接成功后才会被赋值,然后才可调用proxy对象的getLocalInterface接口方法查询接口对象
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);
}
2
3
4
5
6
7
queryLocalInterface(deprecated)
从API version 9 开始不再维护,建议使用getLocalInterface类替代。
queryLocalInterface(interface: string): IRemoteBroker
查询并获取当前接口描述符对应的本地接口对象。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
interface | string | 是 | 需要查询的接口描述符。 |
返回值:
类型 | 说明 |
---|---|
IRemoteBroker | 默认返回Null,标识该接口是一个代理侧接口。 |
示例:
Stage模型的应用在获取服务前需要先获取context,具体方法可参考获取context
//仅FA模型需要导入@ohos.ability.featureAbility
//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.EntryAbility",
};
//FA模型使用此方法连接服务
//FA.connectAbility(want,connect);
globalThis.context.connectServiceExtensionAbility(want, connect);
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
上述onConnect回调函数中的proxy对象需要等ability异步连接成功后才会被赋值,然后才可调用proxy对象的queryLocalInterface接口获取接口对象
let broker = proxy.queryLocalInterface("testObject");
console.log("RpcClient: queryLocalInterface is " + broker);
2
registerDeathRecipient9+
registerDeathRecipient(recipient: DeathRecipient, flags: number): void
注册用于接收远程对象死亡通知的回调。如果与RemoteProxy对象匹配的远程对象进程死亡,则调用此方法。
系统能力:SystemCapability.Communication.IPC.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
recipient | DeathRecipient | 是 | 要注册的回调。 |
flags | number | 是 | 死亡通知标志。 |
错误码:
以下错误码的详细介绍请参见ohos.rpc错误码
错误码ID | 错误信息 |
---|---|
1900008 | proxy or remote object is invalid |
示例:
Stage模型的应用在获取服务前需要先获取context,具体方法可参考获取context
//仅FA模型需要导入@ohos.ability.featureAbility
//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(