本模塊提供進(jìn)程間通信能力,包括設(shè)備內(nèi)的進(jìn)程間通信(IPC)和設(shè)備間的進(jìn)程間通信(RPC),前者基于Binder驅(qū)動,后者基于軟總線驅(qū)動。
本模塊首批接口從API version 7開始支持。后續(xù)版本的新增接口,采用上角標(biāo)單獨標(biāo)記接口的起始版本。
本模塊從API version 9開始支持異常返回功能。
從API version 9起,IPC支持異常返回功能。錯誤碼對應(yīng)數(shù)值及含義如下。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
名稱 | 值 | 說明 |
---|---|---|
CHECK_PARAM_ERROR | 401 | 檢查參數(shù)失敗。 |
OS_MMAP_ERROR | 1900001 | 執(zhí)行系統(tǒng)調(diào)用mmap失敗。 |
OS_IOCTL_ERROR | 1900002 | 在共享內(nèi)存文件描述符上執(zhí)行系統(tǒng)調(diào)用ioctl失敗。 |
WRITE_TO_ASHMEM_ERROR | 1900003 | 向共享內(nèi)存寫數(shù)據(jù)失敗。 |
READ_FROM_ASHMEM_ERROR | 1900004 | 從共享內(nèi)存讀數(shù)據(jù)失敗。 |
ONLY_PROXY_OBJECT_PERMITTED_ERROR | 1900005 | 只有proxy對象允許該操作。 |
ONLY_REMOTE_OBJECT_PERMITTED_ERROR | 1900006 | 只有remote對象允許該操作。 |
COMMUNICATION_ERROR | 1900007 | 和遠(yuǎn)端對象進(jìn)行進(jìn)程間通信失敗。 |
PROXY_OR_REMOTE_OBJECT_INVALID_ERROR | 1900008 | 非法的代理對象或者遠(yuǎn)端對象。 |
WRITE_DATA_TO_MESSAGE_SEQUENCE_ERROR | 1900009 | 向MessageSequence寫數(shù)據(jù)失敗。 |
READ_DATA_FROM_MESSAGE_SEQUENCE_ERROR | 1900010 | 讀取MessageSequence數(shù)據(jù)失敗。 |
PARCEL_MEMORY_ALLOC_ERROR | 1900011 | 序列化過程中內(nèi)存分配失敗。 |
CALL_JS_METHOD_ERROR | 1900012 | 執(zhí)行JS回調(diào)方法失敗。 |
OS_DUP_ERROR | 1900013 | 執(zhí)行系統(tǒng)調(diào)用dup失敗。 |
在RPC或IPC過程中,發(fā)送方可以使用MessageSequence提供的寫方法,將待發(fā)送的數(shù)據(jù)以特定格式寫入該對象。接收方可以使用MessageSequence提供的讀方法從該對象中讀取特定格式的數(shù)據(jù)。數(shù)據(jù)格式包括:基礎(chǔ)類型及數(shù)組、IPC對象、接口描述符和自定義序列化對象。
static create(): MessageSequence
靜態(tài)方法,創(chuàng)建MessageSequence對象。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
MessageSequence | 返回創(chuàng)建的MessageSequence對象。 |
示例:
- let data = rpc.MessageSequence.create();
- console.log("RpcClient: data is " + data);
reclaim(): void
釋放不再使用的MessageSequence對象。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
示例:
- let reply = rpc.MessageSequence.create();
- reply.reclaim();
writeRemoteObject(object: IRemoteObject): void
序列化遠(yuǎn)程對象并將其寫入MessageSequence對象。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
object | 是 | 要序列化并寫入MessageSequence的遠(yuǎn)程對象。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
readRemoteObject(): IRemoteObject
從MessageSequence讀取遠(yuǎn)程對象。此方法用于反序列化MessageSequence對象以生成IRemoteObject。遠(yuǎn)程對象按寫入MessageSequence的順序讀取。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
讀取到的遠(yuǎn)程對象。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
writeInterfaceToken(token: string): void
將接口描述符寫入MessageSequence對象,遠(yuǎn)端對象可使用該信息校驗本次通信。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
token | string | 是 | 字符串類型描述符。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
readInterfaceToken(): string
從MessageSequence對象中讀取接口描述符,接口描述符按寫入MessageSequence的順序讀取,本地對象可使用該信息檢驗本次通信。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
string | 返回讀取到的接口描述符。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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;
- }
- }
getSize(): number
獲取當(dāng)前創(chuàng)建的MessageSequence對象的數(shù)據(jù)大小。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number | 獲取的MessageSequence實例的數(shù)據(jù)大小。以字節(jié)為單位。 |
示例:
- let data = rpc.MessageSequence.create();
- let size = data.getSize();
- console.log("RpcClient: size is " + size);
getCapacity(): number
獲取當(dāng)前MessageSequence對象的容量大小。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number | 獲取的MessageSequence實例的容量大小。以字節(jié)為單位。 |
示例:
- let data = rpc.MessageSequence.create();
- let result = data.getCapacity();
- console.log("RpcClient: capacity is " + result);
setSize(size: number): void
設(shè)置MessageSequence對象中包含的數(shù)據(jù)大小。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
size | number | 是 | MessageSequence實例的數(shù)據(jù)大小。以字節(jié)為單位。 |
示例:
- 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);
- }
setCapacity(size: number): void
設(shè)置MessageSequence對象的存儲容量。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
size | number | 是 | MessageSequence實例的存儲容量。以字節(jié)為單位。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
getWritableBytes(): number
獲取MessageSequence的可寫字節(jié)空間大小。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number | 獲取到的MessageSequence實例的可寫字節(jié)空間。以字節(jié)為單位。 |
示例:
- class Stub extends rpc.RemoteObject {
- onRemoteRequest(code, data, reply, option) {
- let getWritableBytes = data.getWritableBytes();
- console.log("RpcServer: getWritableBytes is " + getWritableBytes);
- return true;
- }
- }
getReadableBytes(): number
獲取MessageSequence的可讀字節(jié)空間。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number | 獲取到的MessageSequence實例的可讀字節(jié)空間。以字節(jié)為單位。 |
示例:
- class Stub extends rpc.RemoteObject {
- onRemoteRequest(code, data, reply, option) {
- let result = data.getReadableBytes();
- console.log("RpcServer: getReadableBytes is " + result);
- return true;
- }
- }
getReadPosition(): number
獲取MessageSequence的讀位置。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number | 返回MessageSequence實例中的當(dāng)前讀取位置。 |
示例:
- let data = rpc.MessageSequence.create();
- let readPos = data.getReadPosition();
- console.log("RpcClient: readPos is " + readPos);
getWritePosition(): number
獲取MessageSequence的寫位置。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number | 返回MessageSequence實例中的當(dāng)前寫入位置。 |
示例:
- let data = rpc.MessageSequence.create();
- data.writeInt(10);
- let bwPos = data.getWritePosition();
- console.log("RpcClient: bwPos is " + bwPos);
rewindRead(pos: number): void
重新偏移讀取位置到指定的位置。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
pos | number | 是 | 開始讀取數(shù)據(jù)的目標(biāo)位置。 |
示例:
- 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);
rewindWrite(pos: number): void
重新偏移寫位置到指定的位置。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
pos | number | 是 | 開始寫入數(shù)據(jù)的目標(biāo)位置。 |
示例:
- 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);
writeByte(val: number): void
將字節(jié)值寫入MessageSequence實例。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
val | number | 是 | 要寫入的字節(jié)值。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
readByte(): number
從MessageSequence實例讀取字節(jié)值。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number | 返回字節(jié)值。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
writeShort(val: number): void
將短整數(shù)值寫入MessageSequence實例。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
val | number | 是 | 要寫入的短整數(shù)值。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
readShort(): number
從MessageSequence實例讀取短整數(shù)值。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number | 返回短整數(shù)值。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
writeInt(val: number): void
將整數(shù)值寫入MessageSequence實例。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
val | number | 是 | 要寫入的整數(shù)值。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
readInt(): number
從MessageSequence實例讀取整數(shù)值。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number | 返回整數(shù)值。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
writeLong(val: number): void
將長整數(shù)值寫入MessageSequence實例。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
val | number | 是 | 要寫入的長整數(shù)值 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
readLong(): number
從MessageSequence實例中讀取長整數(shù)值。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number | 返回長整數(shù)值。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
writeFloat(val: number): void
將浮點值寫入MessageSequence實例。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
val | number | 是 | 要寫入的浮點值。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
readFloat(): number
從MessageSequence實例中讀取浮點值。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number | 返回浮點值。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
writeDouble(val: number): void
將雙精度浮點值寫入MessageSequence實例。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
val | number | 是 | 要寫入的雙精度浮點值。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
readDouble(): number
從MessageSequence實例讀取雙精度浮點值。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number | 返回雙精度浮點值。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
writeBoolean(val: boolean): void
將布爾值寫入MessageSequence實例。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
val | boolean | 是 | 要寫入的布爾值。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
readBoolean(): boolean
從MessageSequence實例讀取布爾值。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
boolean | 返回讀取到的布爾值。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
writeChar(val: number): void
將單個字符值寫入MessageSequence實例。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
val | number | 是 | 要寫入的單個字符值。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
readChar(): number
從MessageSequence實例中讀取單個字符值。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number | 返回單個字符值。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
writeString(val: string): void
將字符串值寫入MessageSequence實例。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
val | string | 是 | 要寫入的字符串值,其長度應(yīng)小于40960字節(jié)。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
readString(): string
從MessageSequence實例讀取字符串值。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
string | 返回字符串值。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
writeParcelable(val: Parcelable): void
將自定義序列化對象寫入MessageSequence實例。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
val | Parcelable | 是 | 要寫入的可序列對象。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
readParcelable(dataIn: Parcelable): void
從MessageSequence實例中讀取成員變量到指定的對象(dataIn)。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
dataIn | Parcelable | 是 | 需要從MessageSequence讀取成員變量的對象。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
writeByteArray(byteArray: number[]): void
將字節(jié)數(shù)組寫入MessageSequence實例。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
byteArray | number[] | 是 | 要寫入的字節(jié)數(shù)組。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
readByteArray(dataIn: number[]): void
從MessageSequence實例讀取字節(jié)數(shù)組。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
dataIn | number[] | 是 | 要讀取的字節(jié)數(shù)組。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
readByteArray(): number[]
從MessageSequence實例中讀取字節(jié)數(shù)組。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number[] | 返回字節(jié)數(shù)組。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
writeShortArray(shortArray: number[]): void
將短整數(shù)數(shù)組寫入MessageSequence實例。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
shortArray | number[] | 是 | 要寫入的短整數(shù)數(shù)組。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
readShortArray(dataIn: number[]): void
從MessageSequence實例中讀取短整數(shù)數(shù)組。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
dataIn | number[] | 是 | 要讀取的短整數(shù)數(shù)組。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
readShortArray(): number[]
從MessageSequence實例中讀取短整數(shù)數(shù)組。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number[] | 返回短整數(shù)數(shù)組。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
writeIntArray(intArray: number[]): void
將整數(shù)數(shù)組寫入MessageSequence實例。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
intArray | number[] | 是 | 要寫入的整數(shù)數(shù)組。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
readIntArray(dataIn: number[]): void
從MessageSequence實例中讀取整數(shù)數(shù)組。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
dataIn | number[] | 是 | 要讀取的整數(shù)數(shù)組。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
readIntArray(): number[]
從MessageSequence實例中讀取整數(shù)數(shù)組。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number[] | 返回整數(shù)數(shù)組。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
writeLongArray(longArray: number[]): void
將長整數(shù)數(shù)組寫入MessageSequence實例。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
longArray | number[] | 是 | 要寫入的長整數(shù)數(shù)組。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
readLongArray(dataIn: number[]): void
從MessageSequence實例讀取的長整數(shù)數(shù)組。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
dataIn | number[] | 是 | 要讀取的長整數(shù)數(shù)組。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
readLongArray(): number[]
從MessageSequence實例中讀取所有的長整數(shù)數(shù)組。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number[] | 返回長整數(shù)數(shù)組。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
writeFloatArray(floatArray: number[]): void
將浮點數(shù)組寫入MessageSequence實例。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
floatArray | number[] | 是 | 要寫入的浮點數(shù)組。由于系統(tǒng)內(nèi)部對float類型的數(shù)據(jù)是按照double處理的,使用時對于數(shù)組所占的總字節(jié)數(shù)應(yīng)按照double類型來計算。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
readFloatArray(dataIn: number[]): void
從MessageSequence實例中讀取浮點數(shù)組。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
dataIn | number[] | 是 | 要讀取的浮點數(shù)組。由于系統(tǒng)內(nèi)部對float類型的數(shù)據(jù)是按照double處理的,使用時對于數(shù)組所占的總字節(jié)數(shù)應(yīng)按照double類型來計算。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
readFloatArray(): number[]
從MessageSequence實例中讀取浮點數(shù)組。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number[] | 返回浮點數(shù)組。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
writeDoubleArray(doubleArray: number[]): void
將雙精度浮點數(shù)組寫入MessageSequence實例。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
doubleArray | number[] | 是 | 要寫入的雙精度浮點數(shù)組。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
readDoubleArray(dataIn: number[]): void
從MessageSequence實例中讀取雙精度浮點數(shù)組。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
dataIn | number[] | 是 | 要讀取的雙精度浮點數(shù)組。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
readDoubleArray(): number[]
從MessageSequence實例讀取所有雙精度浮點數(shù)組。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number[] | 返回雙精度浮點數(shù)組。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
writeBooleanArray(booleanArray: boolean[]): void
將布爾數(shù)組寫入MessageSequence實例。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
booleanArray | boolean[] | 是 | 要寫入的布爾數(shù)組。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
readBooleanArray(dataIn: boolean[]): void
從MessageSequence實例中讀取布爾數(shù)組。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
dataIn | boolean[] | 是 | 要讀取的布爾數(shù)組。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
readBooleanArray(): boolean[]
從MessageSequence實例中讀取所有布爾數(shù)組。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
boolean[] | 返回布爾數(shù)組。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
writeCharArray(charArray: number[]): void
將單個字符數(shù)組寫入MessageSequence實例。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
charArray | number[] | 是 | 要寫入的單個字符數(shù)組。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
readCharArray(dataIn: number[]): void
從MessageSequence實例中讀取單個字符數(shù)組。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
dataIn | number[] | 是 | 要讀取的單個字符數(shù)組。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
readCharArray(): number[]
從MessageSequence實例讀取單個字符數(shù)組。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number[] | 返回單個字符數(shù)組。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
writeStringArray(stringArray: string[]): void
將字符串?dāng)?shù)組寫入MessageSequence實例。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
stringArray | string[] | 是 | 要寫入的字符串?dāng)?shù)組,數(shù)組單個元素的長度應(yīng)小于40960字節(jié)。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
readStringArray(dataIn: string[]): void
從MessageSequence實例讀取字符串?dāng)?shù)組。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
dataIn | string[] | 是 | 要讀取的字符串?dāng)?shù)組。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
readStringArray(): string[]
從MessageSequence實例讀取字符串?dāng)?shù)組。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
string[] | 返回字符串?dāng)?shù)組。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
writeNoException(): void
向MessageSequence寫入“指示未發(fā)生異?!钡男畔ⅰ?/p>
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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;
- }
- }
- }
readException(): void
從MessageSequence中讀取異常。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見ohos.rpc錯誤碼
錯誤碼ID | 錯誤信息 |
---|---|
1900010 | read data from message sequence failed |
示例:
獲取服務(wù)
- import FA from "@ohos.ability.featureAbility";
- let proxy;
- let connect = {
- onConnect: function(elementName, remoteProxy) {
- console.log("RpcClient: js onConnect called.");
- proxy = remoteProxy;
- },
- onDisconnect: function(elementName) {
- console.log("RpcClient: onDisconnect");
- },
- onFailed: function() {
- console.log("RpcClient: onFailed");
- }
- };
- let want = {
- "bundleName": "com.ohos.server",
- "abilityName": "com.ohos.server.MainAbility",
- };
- FA.connectAbility(want, connect);
上述onConnect回調(diào)函數(shù)中的proxy對象需要等ability異步連接成功后才會被賦值,然后才可調(diào)用proxy對象的sendMessageRequest接口方法發(fā)送消息
- 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();
- });
writeParcelableArray(parcelableArray: Parcelable[]): void
將可序列化對象數(shù)組寫入MessageSequence實例。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
parcelableArray | Parcelable[] | 是 | 要寫入的可序列化對象數(shù)組。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
readParcelableArray(parcelableArray: Parcelable[]): void
從MessageSequence實例讀取可序列化對象數(shù)組。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
parcelableArray | Parcelable[] | 是 | 要讀取的可序列化對象數(shù)組。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
writeRemoteObjectArray(objectArray: IRemoteObject[]): void
將IRemoteObject對象數(shù)組寫入MessageSequence。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
objectArray | IRemoteObject[] | 是 | 要寫入MessageSequence的IRemoteObject對象數(shù)組。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
readRemoteObjectArray(objects: IRemoteObject[]): void
從MessageSequence讀取IRemoteObject對象數(shù)組。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
objects | IRemoteObject[] | 是 | 從MessageSequence讀取的IRemoteObject對象數(shù)組。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
readRemoteObjectArray(): IRemoteObject[]
從MessageSequence讀取IRemoteObject對象數(shù)組。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
IRemoteObject[] | 返回IRemoteObject對象數(shù)組。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
static closeFileDescriptor(fd: number): void
靜態(tài)方法,關(guān)閉給定的文件描述符。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
fd | number | 是 | 要關(guān)閉的文件描述符。 |
示例:
- 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);
- }
static dupFileDescriptor(fd: number) :number
靜態(tài)方法,復(fù)制給定的文件描述符。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
fd | number | 是 | 表示已存在的文件描述符。 |
返回值:
類型 | 說明 |
---|---|
number | 返回新的文件描述符。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
containFileDescriptors(): boolean
檢查此MessageSequence對象是否包含文件描述符。
系統(tǒng)能力: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);
- }
writeFileDescriptor(fd: number): void
寫入文件描述符到MessageSequence。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
fd | number | 是 | 文件描述符。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
readFileDescriptor(): number
從MessageSequence中讀取文件描述符。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number | 返回文件描述符。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
writeAshmem(ashmem: Ashmem): void
將指定的匿名共享對象寫入此MessageSequence。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
ashmem | Ashmem | 是 | 要寫入MessageSequence的匿名共享對象。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
readAshmem(): Ashmem
從MessageSequence讀取匿名共享對象。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
Ashmem | 返回匿名共享對象。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
getRawDataCapacity(): number
獲取MessageSequence可以容納的最大原始數(shù)據(jù)量。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number | 返回MessageSequence可以容納的最大原始數(shù)據(jù)量,即128 Mb。 |
示例:
- let sequence = new rpc.MessageSequence();
- let result = sequence.getRawDataCapacity();
- console.log("RpcTest: sequence get RawDataCapacity result is : " + result);
writeRawData(rawData: number[], size: number): void
將原始數(shù)據(jù)寫入MessageSequence對象。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
rawData | number[] | 是 | 要寫入的原始數(shù)據(jù)。 |
size | number | 是 | 發(fā)送的原始數(shù)據(jù)大小,以字節(jié)為單位。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
readRawData(size: number): number[]
從MessageSequence讀取原始數(shù)據(jù)。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
size | number | 是 | 要讀取的原始數(shù)據(jù)的大小。 |
返回值:
類型 | 說明 |
---|---|
number[] | 返回原始數(shù)據(jù)(以字節(jié)為單位)。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見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);
- }
從API version 9 開始不再維護(hù),建議使用MessageSequence類替代。
在RPC過程中,發(fā)送方可以使用MessageParcel提供的寫方法,將待發(fā)送的數(shù)據(jù)以特定格式寫入該對象。接收方可以使用MessageParcel提供的讀方法從該對象中讀取特定格式的數(shù)據(jù)。數(shù)據(jù)格式包括:基礎(chǔ)類型及數(shù)組、IPC對象、接口描述符和自定義序列化對象。
static create(): MessageParcel
靜態(tài)方法,創(chuàng)建MessageParcel對象。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
MessageParcel | 返回創(chuàng)建的MessageParcel對象。 |
示例:
- let data = rpc.MessageParcel.create();
- console.log("RpcClient: data is " + data);
reclaim(): void
釋放不再使用的MessageParcel對象。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
示例:
- let reply = rpc.MessageParcel.create();
- reply.reclaim();
writeRemoteObject(object: IRemoteObject): boolean
序列化遠(yuǎn)程對象并將其寫入MessageParcel對象。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
object | 是 | 要序列化并寫入MessageParcel的遠(yuǎn)程對象。 |
返回值:
類型 | 說明 |
---|---|
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);
readRemoteObject(): IRemoteObject
從MessageParcel讀取遠(yuǎn)程對象。此方法用于反序列化MessageParcel對象以生成IRemoteObject。遠(yuǎn)程對象按寫入MessageParcel的順序讀取。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
讀取到的遠(yuǎn)程對象。 |
示例:
- 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();
writeInterfaceToken(token: string): boolean
將接口描述符寫入MessageParcel對象,遠(yuǎn)端對象可使用該信息校驗本次通信。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
token | string | 是 | 字符串類型描述符。 |
返回值:
類型 | 說明 |
---|---|
boolean | true:操作成功,false:操作失敗。 |
示例:
- let data = rpc.MessageParcel.create();
- let result = data.writeInterfaceToken("aaa");
- console.log("RpcServer: writeInterfaceToken is " + result);
readInterfaceToken(): string
從MessageParcel中讀取接口描述符,接口描述符按寫入MessageParcel的順序讀取,本地對象可使用該信息檢驗本次通信。
系統(tǒng)能力: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;
- }
- }
getSize(): number
獲取當(dāng)前MessageParcel的數(shù)據(jù)大小。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number | 獲取的MessageParcel的數(shù)據(jù)大小。以字節(jié)為單位。 |
示例:
- let data = rpc.MessageParcel.create();
- let size = data.getSize();
- console.log("RpcClient: size is " + size);
getCapacity(): number
獲取當(dāng)前MessageParcel的容量。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number | 獲取的MessageParcel的容量大小。以字節(jié)為單位。 |
示例:
- let data = rpc.MessageParcel.create();
- let result = data.getCapacity();
- console.log("RpcClient: capacity is " + result);
setSize(size: number): boolean
設(shè)置MessageParcel實例中包含的數(shù)據(jù)大小。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
size | number | 是 | MessageParcel實例的數(shù)據(jù)大小。以字節(jié)為單位。 |
返回值:
類型 | 說明 |
---|---|
boolean | true:設(shè)置成功,false:設(shè)置失敗。 |
示例:
- let data = rpc.MessageParcel.create();
- let setSize = data.setSize(16);
- console.log("RpcClient: setSize is " + setSize);
setCapacity(size: number): boolean
設(shè)置MessageParcel實例的存儲容量。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
size | number | 是 | MessageParcel實例的存儲容量。以字節(jié)為單位。 |
返回值:
類型 | 說明 |
---|---|
boolean | true:設(shè)置成功,false:設(shè)置失敗。 |
示例:
- let data = rpc.MessageParcel.create();
- let result = data.setCapacity(100);
- console.log("RpcClient: setCapacity is " + result);
getWritableBytes(): number
獲取MessageParcel的可寫字節(jié)空間。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number | 獲取到的MessageParcel的可寫字節(jié)空間。以字節(jié)為單位。 |
示例:
- class Stub extends rpc.RemoteObject {
- onRemoteMessageRequest(code, data, reply, option) {
- let getWritableBytes = data.getWritableBytes();
- console.log("RpcServer: getWritableBytes is " + getWritableBytes);
- return true;
- }
- }
getReadableBytes(): number
獲取MessageParcel的可讀字節(jié)空間。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number | 獲取到的MessageParcel的可讀字節(jié)空間。以字節(jié)為單位。 |
示例:
- class Stub extends rpc.RemoteObject {
- onRemoteRequest(code, data, reply, option) {
- let result = data.getReadableBytes();
- console.log("RpcServer: getReadableBytes is " + result);
- return true;
- }
- }
getReadPosition(): number
獲取MessageParcel的讀位置。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number | 返回MessageParcel實例中的當(dāng)前讀取位置。 |
示例:
- let data = rpc.MessageParcel.create();
- let readPos = data.getReadPosition();
- console.log("RpcClient: readPos is " + readPos);
getWritePosition(): number
獲取MessageParcel的寫位置。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number | 返回MessageParcel實例中的當(dāng)前寫入位置。 |
示例:
- let data = rpc.MessageParcel.create();
- data.writeInt(10);
- let bwPos = data.getWritePosition();
- console.log("RpcClient: bwPos is " + bwPos);
rewindRead(pos: number): boolean
重新偏移讀取位置到指定的位置。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
pos | number | 是 | 開始讀取數(shù)據(jù)的目標(biāo)位置。 |
返回值:
類型 | 說明 |
---|---|
boolean | true:讀取位置發(fā)生更改,false:讀取位置未發(fā)生更改。 |
示例:
- let data = rpc.MessageParcel.create();
- data.writeInt(12);
- data.writeString("parcel");
- let number = data.readInt();
- console.log("RpcClient: number is " + number);
- data.rewindRead(0);
- let number2 = data.readInt();
- console.log("RpcClient: rewindRead is " + number2);
rewindWrite(pos: number): boolean
重新偏移寫位置到指定的位置。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
pos | number | 是 | 開始寫入數(shù)據(jù)的目標(biāo)位置。 |
返回值:
類型 | 說明 |
---|---|
boolean | true:寫入位置發(fā)生更改,false:寫入位置未發(fā)生更改。 |
示例:
- let data = rpc.MessageParcel.create();
- data.writeInt(4);
- data.rewindWrite(0);
- data.writeInt(5);
- let number = data.readInt();
- console.log("RpcClient: rewindWrite is: " + number);
writeByte(val: number): boolean
將字節(jié)值寫入MessageParcel實例。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
val | number | 是 | 要寫入的字節(jié)值。 |
返回值:
類型 | 說明 |
---|---|
boolean | 寫入返回成功,否則返回false。 |
示例:
- let data = rpc.MessageParcel.create();
- let result = data.writeByte(2);
- console.log("RpcClient: writeByte is: " + result);
readByte(): number
從MessageParcel實例讀取字節(jié)值。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number | 返回字節(jié)值。 |
示例:
- let data = rpc.MessageParcel.create();
- let result = data.writeByte(2);
- console.log("RpcClient: writeByte is: " + result);
- let ret = data.readByte();
- console.log("RpcClient: readByte is: " + ret);
writeShort(val: number): boolean
將短整數(shù)值寫入MessageParcel實例。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
val | number | 是 | 要寫入的短整數(shù)值。 |
返回值:
類型 | 說明 |
---|---|
boolean | true:寫入成功,false:寫入失敗。 |
示例:
- let data = rpc.MessageParcel.create();
- let result = data.writeShort(8);
- console.log("RpcClient: writeShort is: " + result);
readShort(): number
從MessageParcel實例讀取短整數(shù)值。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number | 返回短整數(shù)值。 |
示例:
- let data = rpc.MessageParcel.create();
- let result = data.writeShort(8);
- console.log("RpcClient: writeShort is: " + result);
- let ret = data.readShort();
- console.log("RpcClient: readShort is: " + ret);
writeInt(val: number): boolean
將整數(shù)值寫入MessageParcel實例。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
val | number | 是 | 要寫入的整數(shù)值。 |
返回值:
類型 | 說明 |
---|---|
boolean | 寫入返回成功,否則返回false。 |
示例:
- let data = rpc.MessageParcel.create();
- let result = data.writeInt(10);
- console.log("RpcClient: writeInt is " + result);
readInt(): number
從MessageParcel實例讀取整數(shù)值。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number | 返回整數(shù)值。 |
示例:
- let data = rpc.MessageParcel.create();
- let result = data.writeInt(10);
- console.log("RpcClient: writeInt is " + result);
- let ret = data.readInt();
- console.log("RpcClient: readInt is " + ret);
writeLong(val: number): boolean
將長整數(shù)值寫入MessageParcel實例。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
val | number | 是 | 要寫入的長整數(shù)值 |
返回值:
類型 | 說明 |
---|---|
boolean | true:寫入成功,false:寫入失敗。 |
示例:
- let data = rpc.MessageParcel.create();
- let result = data.writeLong(10000);
- console.log("RpcClient: writeLong is " + result);
readLong(): number
從MessageParcel實例中讀取長整數(shù)值。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number | 返回長整數(shù)值。 |
示例:
- let data = rpc.MessageParcel.create();
- let result = data.writeLong(10000);
- console.log("RpcClient: writeLong is " + result);
- let ret = data.readLong();
- console.log("RpcClient: readLong is " + ret);
writeFloat(val: number): boolean
將浮點值寫入MessageParcel實例。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
val | number | 是 | 要寫入的浮點值。 |
返回值:
類型 | 說明 |
---|---|
boolean | true:寫入成功,false:寫入失敗。 |
示例:
- let data = rpc.MessageParcel.create();
- let result = data.writeFloat(1.2);
- console.log("RpcClient: writeFloat is " + result);
readFloat(): number
從MessageParcel實例中讀取浮點值。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number | 返回浮點值。 |
示例:
- let data = rpc.MessageParcel.create();
- let result = data.writeFloat(1.2);
- console.log("RpcClient: writeFloat is " + result);
- let ret = data.readFloat();
- console.log("RpcClient: readFloat is " + ret);
writeDouble(val: number): boolean
將雙精度浮點值寫入MessageParcel實例。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
val | number | 是 | 要寫入的雙精度浮點值。 |
返回值:
類型 | 說明 |
---|---|
boolean | true:寫入成功,false:寫入失敗。 |
示例:
- let data = rpc.MessageParcel.create();
- let result = data.writeDouble(10.2);
- console.log("RpcClient: writeDouble is " + result);
readDouble(): number
從MessageParcel實例讀取雙精度浮點值。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number | 返回雙精度浮點值。 |
示例:
- let data = rpc.MessageParcel.create();
- let result = data.writeDouble(10.2);
- console.log("RpcClient: writeDouble is " + result);
- let ret = data.readDouble();
- console.log("RpcClient: readDouble is " + ret);
writeBoolean(val: boolean): boolean
將布爾值寫入MessageParcel實例。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
val | boolean | 是 | 要寫入的布爾值。 |
返回值:
類型 | 說明 |
---|---|
boolean | true:寫入成功,false:寫入失敗。 |
示例:
- let data = rpc.MessageParcel.create();
- let result = data.writeBoolean(false);
- console.log("RpcClient: writeBoolean is " + result);
readBoolean(): boolean
從MessageParcel實例讀取布爾值。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
boolean | 返回讀取到的布爾值。 |
示例:
- let data = rpc.MessageParcel.create();
- let result = data.writeBoolean(false);
- console.log("RpcClient: writeBoolean is " + result);
- let ret = data.readBoolean();
- console.log("RpcClient: readBoolean is " + ret);
writeChar(val: number): boolean
將單個字符值寫入MessageParcel實例。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
val | number | 是 | 要寫入的單個字符值。 |
返回值:
類型 | 說明 |
---|---|
boolean | true:寫入成功,false:寫入失敗。 |
示例:
- let data = rpc.MessageParcel.create();
- let result = data.writeChar(97);
- console.log("RpcClient: writeChar is " + result);
readChar(): number
從MessageParcel實例中讀取單個字符值。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number | 返回單個字符值。 |
示例:
- let data = rpc.MessageParcel.create();
- let result = data.writeChar(97);
- console.log("RpcClient: writeChar is " + result);
- let ret = data.readChar();
- console.log("RpcClient: readChar is " + ret);
writeString(val: string): boolean
將字符串值寫入MessageParcel實例。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
val | string | 是 | 要寫入的字符串值,其長度應(yīng)小于40960字節(jié)。 |
返回值:
類型 | 說明 |
---|---|
boolean | true:寫入成功,false:寫入失敗。 |
示例:
- let data = rpc.MessageParcel.create();
- let result = data.writeString('abc');
- console.log("RpcClient: writeString is " + result);
readString(): string
從MessageParcel實例讀取字符串值。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
string | 返回字符串值。 |
示例:
- let data = rpc.MessageParcel.create();
- let result = data.writeString('abc');
- console.log("RpcClient: writeString is " + result);
- let ret = data.readString();
- console.log("RpcClient: readString is " + ret);
writeSequenceable(val: Sequenceable): boolean
將自定義序列化對象寫入MessageParcel實例。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
val | 是 | 要寫入的可序列對象。 |
返回值:
類型 | 說明 |
---|---|
boolean | true:寫入成功,false:寫入失敗。 |
示例:
- class MySequenceable {
- num: number;
- str: string;
- constructor(num, str) {
- this.num = num;
- this.str = str;
- }
- marshalling(messageParcel) {
- messageParcel.writeInt(this.num);
- messageParcel.writeString(this.str);
- return true;
- }
- unmarshalling(messageParcel) {
- this.num = messageParcel.readInt();
- this.str = messageParcel.readString();
- return true;
- }
- }
- let sequenceable = new MySequenceable(1, "aaa");
- let data = rpc.MessageParcel.create();
- let result = data.writeSequenceable(sequenceable);
- console.log("RpcClient: writeSequenceable is " + result);
readSequenceable(dataIn: Sequenceable): boolean
從MessageParcel實例中讀取成員變量到指定的對象(dataIn)。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
dataIn | 是 | 需要從MessageParcel讀取成員變量的對象。 |
返回值:
類型 | 說明 |
---|---|
boolean | true:反序列化成功,false:反序列化失敗。 |
示例:
- class MySequenceable {
- num: number;
- str: string;
- constructor(num, str) {
- this.num = num;
- this.str = str;
- }
- marshalling(messageParcel) {
- messageParcel.writeInt(this.num);
- messageParcel.writeString(this.str);
- return true;
- }
- unmarshalling(messageParcel) {
- this.num = messageParcel.readInt();
- this.str = messageParcel.readString();
- return true;
- }
- }
- let sequenceable = new MySequenceable(1, "aaa");
- let data = rpc.MessageParcel.create();
- let result = data.writeSequenceable(sequenceable);
- console.log("RpcClient: writeSequenceable is " + result);
- let ret = new MySequenceable(0, "");
- let result2 = data.readSequenceable(ret);
- console.log("RpcClient: writeSequenceable is " + result2);
writeByteArray(byteArray: number[]): boolean
將字節(jié)數(shù)組寫入MessageParcel實例。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
byteArray | number[] | 是 | 要寫入的字節(jié)數(shù)組。 |
返回值:
類型 | 說明 |
---|---|
boolean | true:寫入成功,false:寫入失敗。 |
示例:
- let data = rpc.MessageParcel.create();
- let ByteArrayVar = [1, 2, 3, 4, 5];
- let result = data.writeByteArray(ByteArrayVar);
- console.log("RpcClient: writeByteArray is " + result);
readByteArray(dataIn: number[]): void
從MessageParcel實例讀取字節(jié)數(shù)組。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
dataIn | number[] | 是 | 要讀取的字節(jié)數(shù)組。 |
示例:
- let data = rpc.MessageParcel.create();
- let ByteArrayVar = [1, 2, 3, 4, 5];
- let result = data.writeByteArray(ByteArrayVar);
- console.log("RpcClient: writeByteArray is " + result);
- let array = new Array(5);
- data.readByteArray(array);
readByteArray(): number[]
從MessageParcel實例中讀取字節(jié)數(shù)組。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number[] | 返回字節(jié)數(shù)組。 |
示例:
- let data = rpc.MessageParcel.create();
- let ByteArrayVar = [1, 2, 3, 4, 5];
- let result = data.writeByteArray(ByteArrayVar);
- console.log("RpcClient: writeByteArray is " + result);
- let array = data.readByteArray();
- console.log("RpcClient: readByteArray is " + array);
writeShortArray(shortArray: number[]): boolean
將短整數(shù)數(shù)組寫入MessageParcel實例。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
shortArray | number[] | 是 | 要寫入的短整數(shù)數(shù)組。 |
返回值:
類型 | 說明 |
---|---|
boolean | true:寫入成功,false:寫入失敗。 |
示例:
- let data = rpc.MessageParcel.create();
- let result = data.writeShortArray([11, 12, 13]);
- console.log("RpcClient: writeShortArray is " + result);
readShortArray(dataIn: number[]): void
從MessageParcel實例中讀取短整數(shù)數(shù)組。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
dataIn | number[] | 是 | 要讀取的短整數(shù)數(shù)組。 |
示例:
- let data = rpc.MessageParcel.create();
- let result = data.writeShortArray([11, 12, 13]);
- console.log("RpcClient: writeShortArray is " + result);
- let array = new Array(3);
- data.readShortArray(array);
readShortArray(): number[]
從MessageParcel實例中讀取短整數(shù)數(shù)組。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number[] | 返回短整數(shù)數(shù)組。 |
示例:
- let data = rpc.MessageParcel.create();
- let result = data.writeShortArray([11, 12, 13]);
- console.log("RpcClient: writeShortArray is " + result);
- let array = data.readShortArray();
- console.log("RpcClient: readShortArray is " + array);
writeIntArray(intArray: number[]): boolean
將整數(shù)數(shù)組寫入MessageParcel實例。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
intArray | number[] | 是 | 要寫入的整數(shù)數(shù)組。 |
返回值:
類型 | 說明 |
---|---|
boolean | true:寫入成功,false:寫入失敗。 |
示例:
- let data = rpc.MessageParcel.create();
- let result = data.writeIntArray([100, 111, 112]);
- console.log("RpcClient: writeIntArray is " + result);
readIntArray(dataIn: number[]): void
從MessageParcel實例中讀取整數(shù)數(shù)組。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
dataIn | number[] | 是 | 要讀取的整數(shù)數(shù)組。 |
示例:
- let data = rpc.MessageParcel.create();
- let result = data.writeIntArray([100, 111, 112]);
- console.log("RpcClient: writeIntArray is " + result);
- let array = new Array(3);
- data.readIntArray(array);
readIntArray(): number[]
從MessageParcel實例中讀取整數(shù)數(shù)組。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number[] | 返回整數(shù)數(shù)組。 |
示例:
- let data = rpc.MessageParcel.create();
- let result = data.writeIntArray([100, 111, 112]);
- console.log("RpcClient: writeIntArray is " + result);
- let array = data.readIntArray();
- console.log("RpcClient: readIntArray is " + array);
writeLongArray(longArray: number[]): boolean
將長整數(shù)數(shù)組寫入MessageParcel實例。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
longArray | number[] | 是 | 要寫入的長整數(shù)數(shù)組。 |
返回值:
類型 | 說明 |
---|---|
boolean | true:寫入成功,false:寫入失敗。 |
示例:
- let data = rpc.MessageParcel.create();
- let result = data.writeLongArray([1111, 1112, 1113]);
- console.log("RpcClient: writeLongArray is " + result);
readLongArray(dataIn: number[]): void
從MessageParcel實例讀取長整數(shù)數(shù)組。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
dataIn | number[] | 是 | 要讀取的長整數(shù)數(shù)組。 |
示例:
- let data = rpc.MessageParcel.create();
- let result = data.writeLongArray([1111, 1112, 1113]);
- console.log("RpcClient: writeLongArray is " + result);
- let array = new Array(3);
- data.readLongArray(array);
readLongArray(): number[]
從MessageParcel實例中讀取長整數(shù)數(shù)組。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number[] | 返回長整數(shù)數(shù)組。 |
示例:
- let data = rpc.MessageParcel.create();
- let result = data.writeLongArray([1111, 1112, 1113]);
- console.log("RpcClient: writeLongArray is " + result);
- let array = data.readLongArray();
- console.log("RpcClient: readLongArray is " + array);
writeFloatArray(floatArray: number[]): boolean
將浮點數(shù)組寫入MessageParcel實例。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
floatArray | number[] | 是 | 要寫入的浮點數(shù)組。由于系統(tǒng)內(nèi)部對float類型的數(shù)據(jù)是按照double處理的,使用時對于數(shù)組所占的總字節(jié)數(shù)應(yīng)按照double類型來計算。 |
返回值:
類型 | 說明 |
---|---|
boolean | true:寫入成功,false:寫入失敗。 |
示例:
- let data = rpc.MessageParcel.create();
- let result = data.writeFloatArray([1.2, 1.3, 1.4]);
- console.log("RpcClient: writeFloatArray is " + result);
readFloatArray(dataIn: number[]): void
從MessageParcel實例中讀取浮點數(shù)組。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
dataIn | number[] | 是 | 要讀取的浮點數(shù)組。由于系統(tǒng)內(nèi)部對float類型的數(shù)據(jù)是按照double處理的,使用時對于數(shù)組所占的總字節(jié)數(shù)應(yīng)按照double類型來計算。 |
示例:
- let data = rpc.MessageParcel.create();
- let result = data.writeFloatArray([1.2, 1.3, 1.4]);
- console.log("RpcClient: writeFloatArray is " + result);
- let array = new Array(3);
- data.readFloatArray(array);
readFloatArray(): number[]
從MessageParcel實例中讀取浮點數(shù)組。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number[] | 返回浮點數(shù)組。 |
示例:
- let data = rpc.MessageParcel.create();
- let result = data.writeFloatArray([1.2, 1.3, 1.4]);
- console.log("RpcClient: writeFloatArray is " + result);
- let array = data.readFloatArray();
- console.log("RpcClient: readFloatArray is " + array);
writeDoubleArray(doubleArray: number[]): boolean
將雙精度浮點數(shù)組寫入MessageParcel實例。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
doubleArray | number[] | 是 | 要寫入的雙精度浮點數(shù)組。 |
返回值:
類型 | 說明 |
---|---|
boolean | true:寫入成功,false:寫入失敗。 |
示例:
- let data = rpc.MessageParcel.create();
- let result = data.writeDoubleArray([11.1, 12.2, 13.3]);
- console.log("RpcClient: writeDoubleArray is " + result);
readDoubleArray(dataIn: number[]): void
從MessageParcel實例中讀取雙精度浮點數(shù)組。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
dataIn | number[] | 是 | 要讀取的雙精度浮點數(shù)組。 |
示例:
- let data = rpc.MessageParcel.create();
- let result = data.writeDoubleArray([11.1, 12.2, 13.3]);
- console.log("RpcClient: writeDoubleArray is " + result);
- let array = new Array(3);
- data.readDoubleArray(array);
readDoubleArray(): number[]
從MessageParcel實例讀取雙精度浮點數(shù)組。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number[] | 返回雙精度浮點數(shù)組。 |
示例:
- let data = rpc.MessageParcel.create();
- let result = data.writeDoubleArray([11.1, 12.2, 13.3]);
- console.log("RpcClient: writeDoubleArray is " + result);
- let array = data.readDoubleArray();
- console.log("RpcClient: readDoubleArray is " + array);
writeBooleanArray(booleanArray: boolean[]): boolean
將布爾數(shù)組寫入MessageParcel實例。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
booleanArray | boolean[] | 是 | 要寫入的布爾數(shù)組。 |
返回值:
類型 | 說明 |
---|---|
boolean | true:寫入成功,false:寫入失敗。 |
示例:
- let data = rpc.MessageParcel.create();
- let result = data.writeBooleanArray([false, true, false]);
- console.log("RpcClient: writeBooleanArray is " + result);
readBooleanArray(dataIn: boolean[]): void
從MessageParcel實例中讀取布爾數(shù)組。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
dataIn | boolean[] | 是 | 要讀取的布爾數(shù)組。 |
示例:
- let data = rpc.MessageParcel.create();
- let result = data.writeBooleanArray([false, true, false]);
- console.log("RpcClient: writeBooleanArray is " + result);
- let array = new Array(3);
- data.readBooleanArray(array);
readBooleanArray(): boolean[]
從MessageParcel實例中讀取布爾數(shù)組。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
boolean[] | 返回布爾數(shù)組。 |
示例:
- let data = rpc.MessageParcel.create();
- let result = data.writeBooleanArray([false, true, false]);
- console.log("RpcClient: writeBooleanArray is " + result);
- let array = data.readBooleanArray();
- console.log("RpcClient: readBooleanArray is " + array);
writeCharArray(charArray: number[]): boolean
將單個字符數(shù)組寫入MessageParcel實例。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
charArray | number[] | 是 | 要寫入的單個字符數(shù)組。 |
返回值:
類型 | 說明 |
---|---|
boolean | true:寫入成功,false:寫入失敗。 |
示例:
- let data = rpc.MessageParcel.create();
- let result = data.writeCharArray([97, 98, 88]);
- console.log("RpcClient: writeCharArray is " + result);
readCharArray(dataIn: number[]): void
從MessageParcel實例中讀取單個字符數(shù)組。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
dataIn | number[] | 是 | 要讀取的單個字符數(shù)組。 |
示例:
- let data = rpc.MessageParcel.create();
- let result = data.writeCharArray([97, 98, 99]);
- console.log("RpcClient: writeCharArray is " + result);
- let array = new Array(3);
- data.readCharArray(array);
readCharArray(): number[]
從MessageParcel實例讀取單個字符數(shù)組。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number[] | 返回單個字符數(shù)組。 |
示例:
- let data = rpc.MessageParcel.create();
- let result = data.writeCharArray([97, 98, 99]);
- console.log("RpcClient: writeCharArray is " + result);
- let array = data.readCharArray();
- console.log("RpcClient: readCharArray is " + array);
writeStringArray(stringArray: string[]): boolean
將字符串?dāng)?shù)組寫入MessageParcel實例。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
stringArray | string[] | 是 | 要寫入的字符串?dāng)?shù)組,數(shù)組單個元素的長度應(yīng)小于40960字節(jié)。 |
返回值:
類型 | 說明 |
---|---|
boolean | true:寫入成功,false:寫入失敗。 |
示例:
- let data = rpc.MessageParcel.create();
- let result = data.writeStringArray(["abc", "def"]);
- console.log("RpcClient: writeStringArray is " + result);
readStringArray(dataIn: string[]): void
從MessageParcel實例讀取字符串?dāng)?shù)組。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
dataIn | string[] | 是 | 要讀取的字符串?dāng)?shù)組。 |
示例:
- let data = rpc.MessageParcel.create();
- let result = data.writeStringArray(["abc", "def"]);
- console.log("RpcClient: writeStringArray is " + result);
- let array = new Array(2);
- data.readStringArray(array);
readStringArray(): string[]
從MessageParcel實例讀取字符串?dāng)?shù)組。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
string[] | 返回字符串?dāng)?shù)組。 |
示例:
- 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);
writeNoException(): void
向MessageParcel寫入“指示未發(fā)生異常”的信息。
系統(tǒng)能力: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;
- }
- }
- }
readException(): void
從MessageParcel中讀取異常。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
示例:
獲取服務(wù)
- import FA from "@ohos.ability.featureAbility";
- let proxy;
- let connect = {
- onConnect: function(elementName, remoteProxy) {
- console.log("RpcClient: js onConnect called.");
- proxy = remoteProxy;
- },
- onDisconnect: function(elementName) {
- console.log("RpcClient: onDisconnect");
- },
- onFailed: function() {
- console.log("RpcClient: onFailed");
- }
- };
- let want = {
- "bundleName": "com.ohos.server",
- "abilityName": "com.ohos.server.MainAbility",
- };
- FA.connectAbility(want, connect);
上述onConnect回調(diào)函數(shù)中的proxy對象需要等ability異步連接成功后才會被賦值,然后才可調(diào)用proxy對象的sendMessageRequest接口方法發(fā)送消息
- 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();
- });
writeSequenceableArray(sequenceableArray: Sequenceable[]): boolean
將可序列化對象數(shù)組寫入MessageParcel實例。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
sequenceableArray | Sequenceable[] | 是 | 要寫入的可序列化對象數(shù)組。 |
返回值:
類型 | 說明 |
---|---|
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);
readSequenceableArray(sequenceableArray: Sequenceable[]): void
從MessageParcel實例讀取可序列化對象數(shù)組。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
sequenceableArray | Sequenceable[] | 是 | 要讀取的可序列化對象數(shù)組。 |
示例:
- 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);
writeRemoteObjectArray(objectArray: IRemoteObject[]): boolean
將IRemoteObject對象數(shù)組寫入MessageParcel。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
objectArray | IRemoteObject[] | 是 | 要寫入MessageParcel的IRemoteObject對象數(shù)組。 |
返回值:
類型 | 說明 |
---|---|
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);
readRemoteObjectArray(objects: IRemoteObject[]): void
從MessageParcel讀取IRemoteObject對象數(shù)組。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
objects | IRemoteObject[] | 是 | 從MessageParcel讀取的IRemoteObject對象數(shù)組。 |
示例:
- 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);
readRemoteObjectArray(): IRemoteObject[]
從MessageParcel讀取IRemoteObject對象數(shù)組。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
IRemoteObject[] | 返回IRemoteObject對象數(shù)組。 |
示例:
- 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);
static closeFileDescriptor(fd: number): void
靜態(tài)方法,關(guān)閉給定的文件描述符。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
fd | number | 是 | 要關(guān)閉的文件描述符。 |
示例:
- import fileio from '@ohos.fileio';
- let filePath = "path/to/file";
- let fd = fileio.openSync(filePath, 0o2| 0o100, 0o666);
- rpc.MessageParcel.closeFileDescriptor(fd);
static dupFileDescriptor(fd: number) :number
靜態(tài)方法,復(fù)制給定的文件描述符。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
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);
containFileDescriptors(): boolean
檢查此MessageParcel對象是否包含文件描述符。
系統(tǒng)能力: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);
writeFileDescriptor(fd: number): boolean
寫入文件描述符到MessageParcel。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
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);
readFileDescriptor(): number
從MessageParcel中讀取文件描述符。
系統(tǒng)能力: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);
writeAshmem(ashmem: Ashmem): boolean
將指定的匿名共享對象寫入此MessageParcel。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
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);
readAshmem(): Ashmem
從MessageParcel讀取匿名共享對象。
系統(tǒng)能力: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);
getRawDataCapacity(): number
獲取MessageParcel可以容納的最大原始數(shù)據(jù)量。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number | 返回MessageParcel可以容納的最大原始數(shù)據(jù)量,即128 Mb。 |
示例:
- let parcel = new rpc.MessageParcel();
- let result = parcel.getRawDataCapacity();
- console.log("RpcTest: parcel get RawDataCapacity result is : " + result);
writeRawData(rawData: number[], size: number): boolean
將原始數(shù)據(jù)寫入MessageParcel對象。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
rawData | number[] | 是 | 要寫入的原始數(shù)據(jù)。 |
size | number | 是 | 發(fā)送的原始數(shù)據(jù)大小,以字節(jié)為單位。 |
返回值:
類型 | 說明 |
---|---|
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);
readRawData(size: number): number[]
從MessageParcel讀取原始數(shù)據(jù)。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
size | number | 是 | 要讀取的原始數(shù)據(jù)的大小。 |
返回值:
類型 | 說明 |
---|---|
number[] | 返回原始數(shù)據(jù)(以字節(jié)為單位)。 |
示例:
- 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);
marshalling(dataOut: MessageSequence): boolean
將此可序列對象封送到MessageSequence中。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
dataOut | MessageSequence | 是 | 可序列對象將被封送到的MessageSequence對象。 |
返回值:
類型 | 說明 |
---|---|
boolean | true:封送成功,false:封送失敗。 |
示例: |
- class MyParcelable {
- num: number;
- str: string;
- constructor(num, str) {
- this.num = num;
- this.str = str;
- }
- marshalling(messageSequence) {
- messageSequence.writeInt(this.num);
- messageSequence.writeString(this.str);
- return true;
- }
- unmarshalling(messageSequence) {
- this.num = messageSequence.readInt();
- this.str = messageSequence.readString();
- return true;
- }
- }
- let parcelable = new MyParcelable(1, "aaa");
- let data = rpc.MessageSequence.create();
- let result = data.writeParcelable(parcelable);
- console.log("RpcClient: writeParcelable is " + result);
- let ret = new MyParcelable(0, "");
- let result2 = data.readParcelable(ret);
- console.log("RpcClient: readParcelable is " + result2);
unmarshalling(dataIn: MessageSequence): boolean
從MessageSequence中解封此可序列對象。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
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);
從API version 9 開始不再維護(hù),建議使用Parcelable類替代。
在進(jìn)程間通信(IPC)期間,將類的對象寫入MessageParcel并從MessageParcel中恢復(fù)它們。
marshalling(dataOut: MessageParcel): boolean
將此可序列對象封送到MessageParcel中。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
dataOut | 是 | 可序列對象將被封送到的MessageParcel對象。 |
返回值:
類型 | 說明 |
---|---|
boolean | true:封送成功,false:封送失敗。 |
示例: |
- class MySequenceable {
- num: number;
- str: string;
- constructor(num, str) {
- this.num = num;
- this.str = str;
- }
- marshalling(messageParcel) {
- messageParcel.writeInt(this.num);
- messageParcel.writeString(this.str);
- return true;
- }
- unmarshalling(messageParcel) {
- this.num = messageParcel.readInt();
- this.str = messageParcel.readString();
- return true;
- }
- }
- let sequenceable = new MySequenceable(1, "aaa");
- let data = rpc.MessageParcel.create();
- let result = data.writeSequenceable(sequenceable);
- console.log("RpcClient: writeSequenceable is " + result);
- let ret = new MySequenceable(0, "");
- let result2 = data.readSequenceable(ret);
- console.log("RpcClient: readSequenceable is " + result2);
unmarshalling(dataIn: MessageParcel): boolean
從MessageParcel中解封此可序列對象。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
dataIn | 是 | 已將可序列對象封送到其中的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);
asObject(): IRemoteObject
需派生類實現(xiàn),獲取代理或遠(yuǎn)端對象。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
如果調(diào)用者是RemoteObject對象,則直接返回本身;如果調(diào)用者是RemoteProxy對象,則返回它的持有者IRemoteObject。 |
示例:
- class TestAbility extends rpc.RemoteObject {
- asObject() {
- return this;
- }
- }
- let remoteObject = new TestAbility("testObject").asObject();
示例:
獲取服務(wù)
- import FA from "@ohos.ability.featureAbility";
- let proxy;
- let connect = {
- onConnect: function (elementName, remoteProxy) {
- console.log("RpcClient: js onConnect called.");
- proxy = remoteProxy;
- },
- onDisconnect: function (elementName) {
- console.log("RpcClient: onDisconnect");
- },
- onFailed: function () {
- console.log("RpcClient: onFailed");
- }
- };
- let want = {
- "bundleName": "com.ohos.server",
- "abilityName": "com.ohos.server.MainAbility",
- };
- FA.connectAbility(want, connect);
上述onConnect回調(diào)函數(shù)中的proxy對象需要等ability異步連接成功后才會被賦值,然后才可調(diào)用proxy對象的asObject接口方法獲取代理或遠(yuǎn)端對象
- class TestProxy {
- remote: rpc.RemoteObject;
- constructor(remote) {
- this.remote = remote;
- }
- asObject() {
- return this.remote;
- }
- }
- let iRemoteObject = new TestProxy(proxy).asObject();
用于訂閱遠(yuǎn)端對象的死亡通知。當(dāng)被訂閱該通知的遠(yuǎn)端對象死亡時,本端可收到消息,調(diào)用onRemoteDied接口。遠(yuǎn)端對象死亡可以為遠(yuǎn)端對象所在進(jìn)程死亡,遠(yuǎn)端對象所在設(shè)備關(guān)機或重啟,當(dāng)遠(yuǎn)端對象與本端對象屬于不同設(shè)備時,也可為遠(yuǎn)端對象離開組網(wǎng)時。
onRemoteDied(): void
在成功添加死亡通知訂閱后,當(dāng)遠(yuǎn)端對象死亡時,將自動調(diào)用本方法。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
示例:
- class MyDeathRecipient {
- onRemoteDied() {
- console.log("server died");
- }
- }
發(fā)送請求的響應(yīng)結(jié)果。
系統(tǒng)能力:以下各項對應(yīng)的系統(tǒng)能力均為SystemCapability.Communication.IPC.Core。
名稱 | 類型 | 可讀 | 可寫 | 說明 |
---|---|---|---|---|
errCode | number | 是 | 否 | 錯誤碼。 |
code | number | 是 | 否 | 消息代碼。 |
data | MessageSequence | 是 | 否 | 發(fā)送給對端進(jìn)程的MessageSequence對象。 |
reply | MessageSequence | 是 | 否 | 對端進(jìn)程返回的MessageSequence對象。 |
從API version 9 開始不再維護(hù),建議使用RequestResult類替代。
發(fā)送請求的響應(yīng)結(jié)果。
系統(tǒng)能力:以下各項對應(yīng)的系統(tǒng)能力均為SystemCapability.Communication.IPC.Core。
名稱 | 類型 | 可讀 | 可寫 | 說明 |
---|---|---|---|---|
errCode | number | 是 | 否 | 錯誤碼。 |
code | number | 是 | 否 | 消息代碼。 |
data | MessageParcel | 是 | 否 | 發(fā)送給對端進(jìn)程的MessageParcel對象。 |
reply | MessageParcel | 是 | 否 | 對端進(jìn)程返回的MessageParcel對象。 |
getLocalInterface(descriptor: string): IRemoteBroker
查詢接口描述符的字符串。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
descriptor | string | 是 | 接口描述符的字符串。 |
返回值:
類型 | 說明 |
---|---|
IRemoteBroker | 返回綁定到指定接口描述符的IRemoteBroker對象。 |
從API version 9 開始不再維護(hù),建議使用getLocalInterface類替代。
queryLocalInterface(descriptor: string): IRemoteBroker
查詢接口描述符的字符串。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
descriptor | string | 是 | 接口描述符的字符串。 |
返回值:
類型 | 說明 |
---|---|
IRemoteBroker | 返回綁定到指定接口描述符的IRemoteBroker對象。 |
從API version 9 開始不再維護(hù),建議使用sendMessageRequest類替代。
sendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption): boolean
以同步或異步方式向?qū)Χ诉M(jìn)程發(fā)送MessageParcel消息。如果為選項設(shè)置了異步模式,則期約立即兌現(xiàn),reply報文里沒有內(nèi)容。如果為選項設(shè)置了同步模式,則期約將在sendRequest返回時兌現(xiàn),回復(fù)內(nèi)容在reply報文里。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
code | number | 是 | 本次請求調(diào)用的消息碼,由通信雙方確定。如果接口由IDL工具生成,則消息代碼由IDL自動生成。 |
data | 是 | 保存待發(fā)送數(shù)據(jù)的 MessageParcel對象。 | |
reply | 是 | 接收應(yīng)答數(shù)據(jù)的MessageParcel對象。 | |
options | 是 | 本次請求的同異步模式,默認(rèn)同步調(diào)用。 |
返回值:
類型 | 說明 |
---|---|
boolean | true:發(fā)送成功,false:發(fā)送失敗。 |
從API version 9 開始不再維護(hù),建議使用sendMessageRequest類替代。
sendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption): Promise<SendRequestResult>
以同步或異步方式向?qū)Χ诉M(jìn)程發(fā)送MessageParcel消息。如果為選項設(shè)置了異步模式,則期約立即兌現(xiàn),reply報文里沒有內(nèi)容,具體回復(fù)需要在業(yè)務(wù)側(cè)的回調(diào)中獲取。如果為選項設(shè)置了同步模式,則期約將在sendRequest返回時兌現(xiàn),回復(fù)內(nèi)容在reply報文里。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
code | number | 是 | 本次請求調(diào)用的消息碼,由通信雙方確定。如果接口由IDL工具生成,則消息代碼由IDL自動生成。 |
data | 是 | 保存待發(fā)送數(shù)據(jù)的 MessageParcel對象。 | |
reply | 是 | 接收應(yīng)答數(shù)據(jù)的MessageParcel對象。 | |
options | 是 | 本次請求的同異步模式,默認(rèn)同步調(diào)用。 |
返回值:
類型 | 說明 |
---|---|
Promise<SendRequestResult> | 返回一個期約,兌現(xiàn)值是sendRequestResult實例。 |
sendMessageRequest(code: number, data: MessageSequence, reply: MessageSequence, options: MessageOption): Promise<RequestResult>
以同步或異步方式向?qū)Χ诉M(jìn)程發(fā)送MessageSequence消息。如果為選項設(shè)置了異步模式,則期約立即兌現(xiàn),reply報文里沒有內(nèi)容,具體回復(fù)需要在業(yè)務(wù)側(cè)的回調(diào)中獲取。如果為選項設(shè)置了同步模式,則期約將在sendMessageRequest返回時兌現(xiàn),回復(fù)內(nèi)容在reply報文里。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
code | number | 是 | 本次請求調(diào)用的消息碼,由通信雙方確定。如果接口由IDL工具生成,則消息代碼由IDL自動生成。 |
data | 是 | 保存待發(fā)送數(shù)據(jù)的 MessageSequence對象。 | |
reply | 是 | 接收應(yīng)答數(shù)據(jù)的MessageSequence對象。 | |
options | 是 | 本次請求的同異步模式,默認(rèn)同步調(diào)用。 |
返回值:
類型 | 說明 |
---|---|
Promise<RequestResult> | 返回一個期約,兌現(xiàn)值是requestResult實例。 |
sendMessageRequest(code: number, data: MessageSequence, reply: MessageSequence, options: MessageOption, callback: AsyncCallback<RequestResult>): void
以同步或異步方式向?qū)Χ诉M(jìn)程發(fā)送MessageSequence消息。如果為選項設(shè)置了異步模式,則立即收到回調(diào),reply報文里沒有內(nèi)容,具體回復(fù)需要在業(yè)務(wù)側(cè)的回調(diào)中獲取。如果為選項設(shè)置了同步模式,則將在sendRequest返回時收到回調(diào),回復(fù)內(nèi)容在reply報文里。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
code | number | 是 | 本次請求調(diào)用的消息碼,由通信雙方確定。如果接口由IDL工具生成,則消息代碼由IDL自動生成。 |
data | 是 | 保存待發(fā)送數(shù)據(jù)的 MessageSequence對象。 | |
reply | 是 | 接收應(yīng)答數(shù)據(jù)的MessageSequence對象。 | |
options | 是 | 本次請求的同異步模式,默認(rèn)同步調(diào)用。 | |
callback | AsyncCallback<RequestResult> | 是 | 接收發(fā)送結(jié)果的回調(diào)。 |
從API version 9 開始不再維護(hù),建議使用sendMessageRequest類替代。
sendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption, callback: AsyncCallback<SendRequestResult>): void
以同步或異步方式向?qū)Χ诉M(jìn)程發(fā)送MessageParcel消息。如果為選項設(shè)置了異步模式,則立即收到回調(diào),reply報文里沒有內(nèi)容,具體回復(fù)需要在業(yè)務(wù)側(cè)的回調(diào)中獲取。如果為選項設(shè)置了同步模式,則將在sendRequest返回時收到回調(diào),回復(fù)內(nèi)容在reply報文里。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
code | number | 是 | 本次請求調(diào)用的消息碼,由通信雙方確定。如果接口由IDL工具生成,則消息代碼由IDL自動生成。 |
data | 是 | 保存待發(fā)送數(shù)據(jù)的 MessageParcel對象。 | |
reply | 是 | 接收應(yīng)答數(shù)據(jù)的MessageParcel對象。 | |
options | 是 | 本次請求的同異步模式,默認(rèn)同步調(diào)用。 | |
callback | AsyncCallback<SendRequestResult> | 是 | 接收發(fā)送結(jié)果的回調(diào)。 |
registerDeathRecipient(recipient: DeathRecipient, flags: number): void
注冊用于接收遠(yuǎn)程對象死亡通知的回調(diào)。如果與RemoteProxy對象匹配的遠(yuǎn)程對象進(jìn)程死亡,則調(diào)用此方法。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
recipient | 是 | 要注冊的回調(diào)。 | |
flags | number | 是 | 死亡通知標(biāo)志。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見ohos.rpc錯誤碼
錯誤碼ID | 錯誤信息 |
---|---|
1900008 | proxy or remote object is invalid |
從API version 9 開始不再維護(hù),建議使用registerDeathRecipient類替代。
addDeathRecipient(recipient: DeathRecipient, flags: number): boolean
注冊用于接收遠(yuǎn)程對象死亡通知的回調(diào)。如果與RemoteProxy對象匹配的遠(yuǎn)程對象進(jìn)程死亡,則調(diào)用此方法。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
recipient | 是 | 要注冊的回調(diào)。 | |
flags | number | 是 | 死亡通知標(biāo)志。 |
返回值:
類型 | 說明 |
---|---|
boolean | true:回調(diào)注冊成功,false:回調(diào)注冊失敗。 |
unregisterDeathRecipient(recipient: DeathRecipient, flags: number): void
注銷用于接收遠(yuǎn)程對象死亡通知的回調(diào)。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
recipient | 是 | 要注銷的回調(diào)。 | |
flags | number | 是 | 死亡通知標(biāo)志。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見ohos.rpc錯誤碼
錯誤碼ID | 錯誤信息 |
---|---|
1900008 | proxy or remote object is invalid |
從API version 9 開始不再維護(hù),建議使用unregisterDeathRecipient類替代。
removeDeathRecipient(recipient: DeathRecipient, flags: number): boolean
注銷用于接收遠(yuǎn)程對象死亡通知的回調(diào)。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
recipient | 是 | 要注銷的回調(diào)。 | |
flags | number | 是 | 死亡通知標(biāo)志。 |
返回值:
類型 | 說明 |
---|---|
boolean | true:回調(diào)注銷成功,false:回調(diào)注銷失敗。 |
getDescriptor(): string
獲取對象的接口描述符,接口描述符為字符串。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
string | 返回接口描述符。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見ohos.rpc錯誤碼
錯誤碼ID | 錯誤信息 |
---|---|
1900008 | proxy or remote object is invalid |
從API version 9 開始不再維護(hù),建議使用getDescriptor類替代。
getInterfaceDescriptor(): string
獲取對象的接口描述符,接口描述符為字符串。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
string | 返回接口描述符。 |
isObjectDead(): boolean
檢查當(dāng)前對象是否死亡。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
boolean | true:對象死亡,false:對象未死亡。 |
實現(xiàn)IRemoteObject代理對象。
系統(tǒng)能力:以下各項對應(yīng)的系統(tǒng)能力均為SystemCapability.Communication.IPC.Core。
名稱 | 值 | 說明 |
---|---|---|
PING_TRANSACTION | 1599098439 (0x5f504e47) | 內(nèi)部指令碼,用于測試IPC服務(wù)正常。 |
DUMP_TRANSACTION | 1598311760 (0x5f444d50) | 內(nèi)部指令碼,獲取Binder內(nèi)部狀態(tài)。 |
INTERFACE_TRANSACTION | 1598968902 (0x5f4e5446) | 內(nèi)部指令碼,獲取對端接口描述符。 |
MIN_TRANSACTION_ID | 1 (0x00000001) | 最小有效指令碼。 |
MAX_TRANSACTION_ID | 16777215 (0x00FFFFFF) | 最大有效指令碼。 |
從API version 9 開始不再維護(hù),建議使用sendMessageRequest類替代。
sendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption): boolean
以同步或異步方式向?qū)Χ诉M(jìn)程發(fā)送MessageParcel消息。如果為選項設(shè)置了異步模式,則期約立即兌現(xiàn),reply報文里沒有內(nèi)容,具體回復(fù)需要在業(yè)務(wù)側(cè)的回調(diào)中獲取。如果為選項設(shè)置了同步模式,則期約將在sendRequest返回時兌現(xiàn),回復(fù)內(nèi)容在reply報文里。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
code | number | 是 | 本次請求調(diào)用的消息碼,由通信雙方確定。如果接口由IDL工具生成,則消息代碼由IDL自動生成。 |
data | 是 | 保存待發(fā)送數(shù)據(jù)的 MessageParcel對象。 | |
reply | 是 | 接收應(yīng)答數(shù)據(jù)的MessageParcel對象。 | |
options | 是 | 本次請求的同異步模式,默認(rèn)同步調(diào)用。 |
返回值:
類型 | 說明 |
---|---|
boolean | true:發(fā)送成功,false:發(fā)送失敗。 |
示例:
獲取服務(wù)
- import FA from "@ohos.ability.featureAbility";
- let proxy;
- let connect = {
- onConnect: function(elementName, remoteProxy) {
- console.log("RpcClient: js onConnect called.");
- proxy = remoteProxy;
- },
- onDisconnect: function(elementName) {
- console.log("RpcClient: onDisconnect");
- },
- onFailed: function() {
- console.log("RpcClient: onFailed");
- }
- };
- let want = {
- "bundleName": "com.ohos.server",
- "abilityName": "com.ohos.server.MainAbility",
- };
- FA.connectAbility(want, connect);
上述onConnect回調(diào)函數(shù)中的proxy對象需要等ability異步連接成功后才會被賦值,然后才可調(diào)用proxy對象的sendRequest接口方法發(fā)送消息
- 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();
sendMessageRequest(code: number, data: MessageSequence, reply: MessageSequence, options: MessageOption): Promise<RequestResult>
以同步或異步方式向?qū)Χ诉M(jìn)程發(fā)送MessageSequence消息。如果為選項設(shè)置了異步模式,則期約立即兌現(xiàn),reply報文里沒有內(nèi)容,具體回復(fù)需要在業(yè)務(wù)側(cè)的回調(diào)中獲取。如果為選項設(shè)置了同步模式,則期約將在sendMessageRequest返回時兌現(xiàn),回復(fù)內(nèi)容在reply報文里。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
code | number | 是 | 本次請求調(diào)用的消息碼,由通信雙方確定。如果接口由IDL工具生成,則消息代碼由IDL自動生成。 |
data | 是 | 保存待發(fā)送數(shù)據(jù)的 MessageSequence對象。 | |
reply | 是 | 接收應(yīng)答數(shù)據(jù)的MessageSequence對象。 | |
options | 是 | 本次請求的同異步模式,默認(rèn)同步調(diào)用。 |
返回值:
類型 | 說明 |
---|---|
Promise<RequestResult> | 返回一個期約,兌現(xiàn)值是requestResult實例。 |
示例:
獲取服務(wù)
- import FA from "@ohos.ability.featureAbility";
- let proxy;
- let connect = {
- onConnect: function(elementName, remoteProxy) {
- console.log("RpcClient: js onConnect called.");
- proxy = remoteProxy;
- },
- onDisconnect: function(elementName) {
- console.log("RpcClient: onDisconnect");
- },
- onFailed: function() {
- console.log("RpcClient: onFailed");
- }
- };
- let want = {
- "bundleName": "com.ohos.server",
- "abilityName": "com.ohos.server.MainAbility",
- };
- FA.connectAbility(want, connect);
上述onConnect回調(diào)函數(shù)中的proxy對象需要等ability異步連接成功后才會被賦值,然后才可調(diào)用proxy對象的sendMessageRequest接口方法發(fā)送消息
- 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();
- });
從API version 9 開始不再維護(hù),建議使用sendMessageRequest類替代。
sendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption): Promise<SendRequestResult>
以同步或異步方式向?qū)Χ诉M(jìn)程發(fā)送MessageParcel消息。如果為選項設(shè)置了異步模式,則期約立即兌現(xiàn),reply報文里沒有內(nèi)容,具體回復(fù)需要在業(yè)務(wù)側(cè)的回調(diào)中獲取。如果為選項設(shè)置了同步模式,則期約將在sendRequest返回時兌現(xiàn),回復(fù)內(nèi)容在reply報文里。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
code | number | 是 | 本次請求調(diào)用的消息碼,由通信雙方確定。如果接口由IDL工具生成,則消息代碼由IDL自動生成。 |
data | 是 | 保存待發(fā)送數(shù)據(jù)的 MessageParcel對象。 | |
reply | 是 | 接收應(yīng)答數(shù)據(jù)的MessageParcel對象。 | |
options | 是 | 本次請求的同異步模式,默認(rèn)同步調(diào)用。 |
返回值:
類型 | 說明 |
---|---|
Promise<SendRequestResult> | 返回一個期約,兌現(xiàn)值是sendRequestResult實例。 |
示例:
獲取服務(wù)
- import FA from "@ohos.ability.featureAbility";
- let proxy;
- let connect = {
- onConnect: function(elementName, remoteProxy) {
- console.log("RpcClient: js onConnect called.");
- proxy = remoteProxy;
- },
- onDisconnect: function(elementName) {
- console.log("RpcClient: onDisconnect");
- },
- onFailed: function() {
- console.log("RpcClient: onFailed");
- }
- };
- let want = {
- "bundleName": "com.ohos.server",
- "abilityName": "com.ohos.server.MainAbility",
- };
- FA.connectAbility(want, connect);
上述onConnect回調(diào)函數(shù)中的proxy對象需要等ability異步連接成功后才會被賦值,然后才可調(diào)用proxy對象的sendRequest接口方法發(fā)送消息
- 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();
- });
sendMessageRequest(code: number, data: MessageSequence, reply: MessageSequence, options: MessageOption, callback: AsyncCallback<RequestResult>): void
以同步或異步方式向?qū)Χ诉M(jìn)程發(fā)送MessageSequence消息。如果為選項設(shè)置了異步模式,則立即收到回調(diào),reply報文里沒有內(nèi)容,具體回復(fù)需要在業(yè)務(wù)側(cè)的回調(diào)中獲取。如果為選項設(shè)置了同步模式,則將在sendMessageRequest返回后的某個時機執(zhí)行回調(diào),回復(fù)內(nèi)容在RequestResult的reply報文里。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
code | number | 是 | 本次請求調(diào)用的消息碼,由通信雙方確定。如果接口由IDL工具生成,則消息代碼由IDL自動生成。 |
data | 是 | 保存待發(fā)送數(shù)據(jù)的 MessageSequence對象。 | |
reply | 是 | 接收應(yīng)答數(shù)據(jù)的MessageSequence對象。 | |
options | 是 | 本次請求的同異步模式,默認(rèn)同步調(diào)用。 | |
callback | AsyncCallback<RequestResult> | 是 | 接收發(fā)送結(jié)果的回調(diào)。 |
示例:
獲取服務(wù)
- import FA from "@ohos.ability.featureAbility";
- let proxy;
- let connect = {
- onConnect: function(elementName, remoteProxy) {
- console.log("RpcClient: js onConnect called.");
- proxy = remoteProxy;
- },
- onDisconnect: function(elementName) {
- console.log("RpcClient: onDisconnect");
- },
- onFailed: function() {
- console.log("RpcClient: onFailed");
- }
- };
- let want = {
- "bundleName": "com.ohos.server",
- "abilityName": "com.ohos.server.MainAbility",
- };
- function sendRequestCallback(result) {
- if (result.errCode === 0) {
- console.log("sendRequest got result");
- result.reply.readException();
- let msg = result.reply.readString();
- console.log("RPCTest: reply msg: " + msg);
- } else {
- console.log("RPCTest: sendRequest failed, errCode: " + result.errCode);
- }
- console.log("RPCTest: sendRequest ends, reclaim parcel");
- result.data.reclaim();
- result.reply.reclaim();
- }
- FA.connectAbility(want, connect);
上述onConnect回調(diào)函數(shù)中的proxy對象需要等ability異步連接成功后才會被賦值,然后才可調(diào)用proxy對象的sendMessageRequest接口方法發(fā)送消息
- let option = new rpc.MessageOption();
- let data = rpc.MessageSequence.create();
- let reply = rpc.MessageSequence.create();
- data.writeInt(1);
- data.writeString("hello");
- try {
- proxy.sendRequest(1, data, reply, option, sendRequestCallback);
- } catch(error) {
- console.info("rpc send sequence request fail, errorCode " + error.code);
- console.info("rpc send sequence request fail, errorMessage " + error.message);
- }
從API version 9 開始不再維護(hù),建議使用sendMessageRequest類替代。
sendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption, callback: AsyncCallback<SendRequestResult>): void
以同步或異步方式向?qū)Χ诉M(jìn)程發(fā)送MessageParcel消息。如果為選項設(shè)置了異步模式,則立即收到回調(diào),reply報文里沒有內(nèi)容,具體回復(fù)需要在業(yè)務(wù)側(cè)的回調(diào)中獲取。如果為選項設(shè)置了同步模式,則將在sendRequest返回時收到回調(diào),回復(fù)內(nèi)容在reply報文里。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
code | number | 是 | 本次請求調(diào)用的消息碼,由通信雙方確定。如果接口由IDL工具生成,則消息代碼由IDL自動生成。 |
data | 是 | 保存待發(fā)送數(shù)據(jù)的 MessageParcel對象。 | |
reply | 是 | 接收應(yīng)答數(shù)據(jù)的MessageParcel對象。 | |
options | 是 | 本次請求的同異步模式,默認(rèn)同步調(diào)用。 | |
callback | AsyncCallback<SendRequestResult> | 是 | 接收發(fā)送結(jié)果的回調(diào)。 |
示例:
獲取服務(wù)
- import FA from "@ohos.ability.featureAbility";
- let proxy;
- let connect = {
- onConnect: function(elementName, remoteProxy) {
- console.log("RpcClient: js onConnect called.");
- proxy = remoteProxy;
- },
- onDisconnect: function(elementName) {
- console.log("RpcClient: onDisconnect");
- },
- onFailed: function() {
- console.log("RpcClient: onFailed");
- }
- };
- let want = {
- "bundleName": "com.ohos.server",
- "abilityName": "com.ohos.server.MainAbility",
- };
- function sendRequestCallback(result) {
- if (result.errCode === 0) {
- console.log("sendRequest got result");
- result.reply.readException();
- let msg = result.reply.readString();
- console.log("RPCTest: reply msg: " + msg);
- } else {
- console.log("RPCTest: sendRequest failed, errCode: " + result.errCode);
- }
- console.log("RPCTest: sendRequest ends, reclaim parcel");
- result.data.reclaim();
- result.reply.reclaim();
- }
- FA.connectAbility(want, connect);
上述onConnect回調(diào)函數(shù)中的proxy對象需要等ability異步連接成功后才會被賦值,然后才可調(diào)用proxy對象的sendRequest接口方法發(fā)送消息
- 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);
getLocalInterface(interface: string): IRemoteBroker
查詢并獲取當(dāng)前接口描述符對應(yīng)的本地接口對象。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
interface | string | 是 | 需要查詢的接口描述符。 |
返回值:
類型 | 說明 |
---|---|
IRemoteBroker | 默認(rèn)返回Null,標(biāo)識該接口是一個代理側(cè)接口。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見ohos.rpc錯誤碼
錯誤碼ID | 錯誤信息 |
---|---|
1900006 | only remote object permitted |
示例:
獲取服務(wù)
- import FA from "@ohos.ability.featureAbility";
- let proxy;
- let connect = {
- onConnect: function(elementName, remoteProxy) {
- console.log("RpcClient: js onConnect called.");
- proxy = remoteProxy;
- },
- onDisconnect: function (elementName) {
- console.log("RpcClient: onDisconnect");
- },
- onFailed: function() {
- console.log("RpcClient: onFailed");
- }
- };
- let want = {
- "bundleName":"com.ohos.server",
- "abilityName":"com.ohos.server.MainAbility",
- };
- FA.connectAbility(want, connect);
上述onConnect回調(diào)函數(shù)中的proxy對象需要等ability異步連接成功后才會被賦值,然后才可調(diào)用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);
- }
從API version 9 開始不再維護(hù),建議使用getLocalInterface類替代。
queryLocalInterface(interface: string): IRemoteBroker
查詢并獲取當(dāng)前接口描述符對應(yīng)的本地接口對象。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
interface | string | 是 | 需要查詢的接口描述符。 |
返回值:
類型 | 說明 |
---|---|
IRemoteBroker | 默認(rèn)返回Null,標(biāo)識該接口是一個代理側(cè)接口。 |
示例:
獲取服務(wù)
- import FA from "@ohos.ability.featureAbility";
- let proxy;
- let connect = {
- onConnect: function(elementName, remoteProxy) {
- console.log("RpcClient: js onConnect called.");
- proxy = remoteProxy;
- },
- onDisconnect: function (elementName) {
- console.log("RpcClient: onDisconnect");
- },
- onFailed: function() {
- console.log("RpcClient: onFailed");
- }
- };
- let want = {
- "bundleName":"com.ohos.server",
- "abilityName":"com.ohos.server.MainAbility",
- };
- FA.connectAbility(want, connect);
上述onConnect回調(diào)函數(shù)中的proxy對象需要等ability異步連接成功后才會被賦值,然后才可調(diào)用proxy對象的queryLocalInterface接口獲取接口對象
- let broker = proxy.queryLocalInterface("testObject");
- console.log("RpcClient: queryLocalInterface is " + broker);
registerDeathRecipient(recipient: DeathRecipient, flags: number): void
注冊用于接收遠(yuǎn)程對象死亡通知的回調(diào)。如果與RemoteProxy對象匹配的遠(yuǎn)程對象進(jìn)程死亡,則調(diào)用此方法。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
recipient | 是 | 要注冊的回調(diào)。 | |
flags | number | 是 | 死亡通知標(biāo)志。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見ohos.rpc錯誤碼
錯誤碼ID | 錯誤信息 |
---|---|
1900008 | proxy or remote object is invalid |
示例:
獲取服務(wù)
- import FA from "@ohos.ability.featureAbility";
- let proxy;
- let connect = {
- onConnect: function(elementName, remoteProxy) {
- console.log("RpcClient: js onConnect called.");
- proxy = remoteProxy;
- },
- onDisconnect: function(elementName) {
- console.log("RpcClient: onDisconnect");
- },
- onFailed: function() {
- console.log("RpcClient: onFailed");
- }
- };
- let want = {
- "bundleName": "com.ohos.server",
- "abilityName": "com.ohos.server.MainAbility",
- };
- FA.connectAbility(want, connect);
上述onConnect回調(diào)函數(shù)中的proxy對象需要等ability異步連接成功后才會被賦值,然后才可調(diào)用proxy對象的registerDeathRecipient接口注冊死亡回調(diào)
- class MyDeathRecipient {
- onRemoteDied() {
- console.log("server died");
- }
- }
- let deathRecipient = new MyDeathRecipient();
- try {
- proxy.registerDeathRecipient(deathRecipient, 0);
- } catch(error) {
- console.info("proxy register deathRecipient fail, errorCode " + error.code);
- console.info("proxy register deathRecipient fail, errorMessage " + error.message);
- }
從API version 9 開始不再維護(hù),建議使用registerDeathRecipient類替代。
addDeathRecipient(recipient: DeathRecipient, flags: number): boolean
注冊用于接收遠(yuǎn)程對象死亡通知的回調(diào),增加proxy對象上的死亡通知。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
recipient | 是 | 收件人表示要注冊的回調(diào)。 | |
flags | number | 是 | 死亡通知標(biāo)志。保留參數(shù)。設(shè)置為0。 |
返回值:
類型 | 說明 |
---|---|
boolean | true:回調(diào)注冊成功,false:回調(diào)注冊失敗。 |
示例:
獲取服務(wù)
- import FA from "@ohos.ability.featureAbility";
- let proxy;
- let connect = {
- onConnect: function(elementName, remoteProxy) {
- console.log("RpcClient: js onConnect called.");
- proxy = remoteProxy;
- },
- onDisconnect: function(elementName) {
- console.log("RpcClient: onDisconnect");
- },
- onFailed: function() {
- console.log("RpcClient: onFailed");
- }
- };
- let want = {
- "bundleName": "com.ohos.server",
- "abilityName": "com.ohos.server.MainAbility",
- };
- FA.connectAbility(want, connect);
上述onConnect回調(diào)函數(shù)中的proxy對象需要等ability異步連接成功后才會被賦值,然后才可調(diào)用proxy對象的addDeathRecipient接口方法新增死亡回調(diào)
- class MyDeathRecipient {
- onRemoteDied() {
- console.log("server died");
- }
- }
- let deathRecipient = new MyDeathRecipient();
- proxy.addDeathRecipient(deathRecipient, 0);
unregisterDeathRecipient(recipient: DeathRecipient, flags: number): void
注銷用于接收遠(yuǎn)程對象死亡通知的回調(diào)。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
recipient | 是 | 要注銷的回調(diào)。 | |
flags | number | 是 | 死亡通知標(biāo)志。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見ohos.rpc錯誤碼
錯誤碼ID | 錯誤信息 |
---|---|
1900008 | proxy or remote object is invalid |
示例:
獲取服務(wù)
- import FA from "@ohos.ability.featureAbility";
- let proxy;
- let connect = {
- onConnect: function(elementName, remoteProxy) {
- console.log("RpcClient: js onConnect called.");
- proxy = remoteProxy;
- },
- onDisconnect: function(elementName) {
- console.log("RpcClient: onDisconnect");
- },
- onFailed: function() {
- console.log("RpcClient: onFailed");
- }
- };
- let want = {
- "bundleName": "com.ohos.server",
- "abilityName": "com.ohos.server.MainAbility",
- };
- FA.connectAbility(want, connect);
上述onConnect回調(diào)函數(shù)中的proxy對象需要等ability異步連接成功后才會被賦值,然后才可調(diào)用proxy對象的unregisterDeathRecipient接口方法注銷死亡回調(diào)
- class MyDeathRecipient {
- onRemoteDied() {
- console.log("server died");
- }
- }
- let deathRecipient = new MyDeathRecipient();
- try {
- proxy.registerDeathRecipient(deathRecipient, 0);
- proxy.unregisterDeathRecipient(deathRecipient, 0);
- } catch(error) {
- console.info("proxy register deathRecipient fail, errorCode " + error.code);
- console.info("proxy register deathRecipient fail, errorMessage " + error.message);
- }
從API version 9 開始不再維護(hù),建議使用unregisterDeathRecipient類替代。
removeDeathRecipient(recipient: DeathRecipient, flags: number): boolean
注銷用于接收遠(yuǎn)程對象死亡通知的回調(diào)。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
recipient | 是 | 要注銷的死亡回調(diào)。 | |
flags | number | 是 | 死亡通知標(biāo)志。保留參數(shù)。設(shè)置為0。 |
返回值:
類型 | 說明 |
---|---|
boolean | true:回調(diào)注銷成功,false:回調(diào)注銷失敗。 |
示例:
獲取服務(wù)
- import FA from "@ohos.ability.featureAbility";
- let proxy;
- let connect = {
- onConnect: function(elementName, remoteProxy) {
- console.log("RpcClient: js onConnect called.");
- proxy = remoteProxy;
- },
- onDisconnect: function(elementName) {
- console.log("RpcClient: onDisconnect");
- },
- onFailed: function() {
- console.log("RpcClient: onFailed");
- }
- };
- let want = {
- "bundleName": "com.ohos.server",
- "abilityName": "com.ohos.server.MainAbility",
- };
- FA.connectAbility(want, connect);
上述onConnect回調(diào)函數(shù)中的proxy對象需要等ability異步連接成功后才會被賦值,然后才可調(diào)用proxy對象的removeDeathRecipient接口方法去注冊死亡回調(diào)
- class MyDeathRecipient {
- onRemoteDied() {
- console.log("server died");
- }
- }
- let deathRecipient = new MyDeathRecipient();
- proxy.addDeathRecipient(deathRecipient, 0);
- proxy.removeDeathRecipient(deathRecipient, 0);
getDescriptor(): string
獲取對象的接口描述符,接口描述符為字符串。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
string | 返回接口描述符。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見ohos.rpc錯誤碼
錯誤碼ID | 錯誤信息 |
---|---|
1900008 | proxy or remote object is invalid |
1900007 | communication failed |
示例:
獲取服務(wù)
- import FA from "@ohos.ability.featureAbility";
- let proxy;
- let connect = {
- onConnect: function(elementName, remoteProxy) {
- console.log("RpcClient: js onConnect called.");
- proxy = remoteProxy;
- },
- onDisconnect: function(elementName) {
- console.log("RpcClient: onDisconnect");
- },
- onFailed: function() {
- console.log("RpcClient: onFailed");
- }
- };
- let want = {
- "bundleName": "com.ohos.server",
- "abilityName": "com.ohos.server.MainAbility",
- };
- FA.connectAbility(want, connect);
上述onConnect回調(diào)函數(shù)中的proxy對象需要等ability異步連接成功后才會被賦值,然后才可調(diào)用proxy對象的getDescriptor接口方法獲取對象的接口描述符
- try {
- let descriptor = proxy.getDescriptor();
- console.log("RpcClient: descriptor is " + descriptor);
- } catch(error) {
- console.info("rpc get interface descriptor fail, errorCode " + error.code);
- console.info("rpc get interface descriptor fail, errorMessage " + error.message);
- }
從API version 9 開始不再維護(hù),建議使用getDescriptor類替代。
getInterfaceDescriptor(): string
查詢當(dāng)前代理對象接口的描述符。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
string | 當(dāng)前的接口描述符。 |
示例:
獲取服務(wù)
- import FA from "@ohos.ability.featureAbility";
- let proxy;
- let connect = {
- onConnect: function(elementName, remoteProxy) {
- console.log("RpcClient: js onConnect called.");
- proxy = remoteProxy;
- },
- onDisconnect: function(elementName) {
- console.log("RpcClient: onDisconnect");
- },
- onFailed: function() {
- console.log("RpcClient: onFailed");
- }
- };
- let want = {
- "bundleName": "com.ohos.server",
- "abilityName": "com.ohos.server.MainAbility",
- };
- FA.connectAbility(want, connect);
- ```
- 上述onConnect回調(diào)函數(shù)中的proxy對象需要等ability異步連接成功后才會被賦值,然后才可調(diào)用proxy對象的isObjectDead接口方法判斷當(dāng)前對象是否已經(jīng)死亡
- ```ts
- let descriptor = proxy.getInterfaceDescriptor();
- console.log("RpcClient: descriptor is " + descriptor);
isObjectDead(): boolean
指示對應(yīng)的RemoteObject是否死亡。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
boolean | true:對應(yīng)的對象已經(jīng)死亡,false:對應(yīng)的對象未死亡 |
示例:
獲取服務(wù)
- import FA from "@ohos.ability.featureAbility";
- let proxy;
- let connect = {
- onConnect: function(elementName, remoteProxy) {
- console.log("RpcClient: js onConnect called.");
- proxy = remoteProxy;
- },
- onDisconnect: function(elementName) {
- console.log("RpcClient: onDisconnect");
- },
- onFailed: function() {
- console.log("RpcClient: onFailed");
- }
- };
- let want = {
- "bundleName": "com.ohos.server",
- "abilityName": "com.ohos.server.MainAbility",
- };
- FA.connectAbility(want, connect);
上述onConnect回調(diào)函數(shù)中的proxy對象需要等ability異步連接成功后才會被賦值,然后才可調(diào)用proxy對象的isObjectDead接口方法判斷當(dāng)前對象是否已經(jīng)死亡
- let isDead = proxy.isObjectDead();
- console.log("RpcClient: isObjectDead is " + isDead);
公共消息選項(int標(biāo)志,int等待時間),使用標(biāo)志中指定的標(biāo)志構(gòu)造指定的MessageOption對象。
系統(tǒng)能力:以下各項對應(yīng)的系統(tǒng)能力均為SystemCapability.Communication.IPC.Core。
名稱 | 值 | 說明 |
---|---|---|
TF_SYNC | 0 | 同步調(diào)用標(biāo)識。 |
TF_ASYNC | 1 | 異步調(diào)用標(biāo)識。 |
TF_ACCEPT_FDS | 0x10 | 指示sendMessageRequest9+接口可以返回文件描述符。 |
TF_WAIT_TIME | 8 | 默認(rèn)等待時間(單位/秒)。 |
constructor(async?: boolean);
MessageOption構(gòu)造函數(shù)。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
syncFlags | number | 否 | 同步調(diào)用或異步調(diào)用標(biāo)志。默認(rèn)同步調(diào)用。 |
示例:
- class TestRemoteObject extends rpc.MessageOption {
- constructor(async) {
- super(async);
- }
- }
constructor(syncFlags?: number, waitTime?: number)
MessageOption構(gòu)造函數(shù)。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
syncFlags | number | 否 | 同步調(diào)用或異步調(diào)用標(biāo)志。默認(rèn)同步調(diào)用。 |
waitTime | number | 否 | 調(diào)用rpc最長等待時間。默認(rèn) TF_WAIT_TIME。 |
示例:
- class TestRemoteObject extends rpc.MessageOption {
- constructor(syncFlags,waitTime) {
- super(syncFlags,waitTime);
- }
- }
isAsync(): boolean;
獲取SendMessageRequest調(diào)用中確定同步或是異步的標(biāo)志。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
boolean | true:同步調(diào)用成功,false:異步調(diào)用成功。 |
示例:
- let option = new rpc.MessageOption();
- let isAsync = option.isAsync();
setAsync(async: boolean): void;
設(shè)置SendMessageRequest調(diào)用中確定同步或是異步的標(biāo)志。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
示例:
- let option = new rpc.MessageOption();
- let setAsync = option.setAsync(true);
- console.log("Set synchronization flag");
getFlags(): number
獲取同步調(diào)用或異步調(diào)用標(biāo)志。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number | 調(diào)用成功返回同步調(diào)用或異步調(diào)用標(biāo)志。 |
示例:
- try {
- let option = new rpc.MessageOption();
- console.info("create object successfully.");
- let flog = option.getFlags();
- console.info("run getFlags success, flog is " + flog);
- option.setFlags(1)
- console.info("run setFlags success");
- let flog2 = option.getFlags();
- console.info("run getFlags success, flog2 is " + flog2);
- } catch (error) {
- console.info("error " + error);
- }
setFlags(flags: number): void
設(shè)置同步調(diào)用或異步調(diào)用標(biāo)志。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
flags | number | 是 | 同步調(diào)用或異步調(diào)用標(biāo)志。 |
示例:
- try {
- let option = new rpc.MessageOption();
- option.setFlags(1)
- console.info("run setFlags success");
- let flog = option.getFlags();
- console.info("run getFlags success, flog is " + flog);
- } catch (error) {
- console.info("error " + error);
- }
getWaitTime(): number
獲取rpc調(diào)用的最長等待時間。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number | rpc最長等待時間。 |
示例:
- try {
- let option = new rpc.MessageOption();
- let time = option.getWaitTime();
- console.info("run getWaitTime success");
- option.setWaitTime(16);
- let time2 = option.getWaitTime();
- console.info("run getWaitTime success, time is " + time);
- } catch (error) {
- console.info("error " + error);
- }
setWaitTime(waitTime: number): void
設(shè)置rpc調(diào)用最長等待時間。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
waitTime | number | 是 | rpc調(diào)用最長等待時間。 |
示例:
- try {
- let option = new rpc.MessageOption();
- option.setWaitTime(16);
- let time = option.getWaitTime();
- console.info("run getWaitTime success, time is " + time);
- } catch (error) {
- console.info("error " + error);
- }
static getContextObject(): IRemoteObject
靜態(tài)方法,獲取系統(tǒng)能力的管理者。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
返回系統(tǒng)能力管理者。 |
示例:
- let samgr = rpc.IPCSkeleton.getContextObject();
- console.log("RpcServer: getContextObject result: " + samgr);
static getCallingPid(): number
靜態(tài)方法,獲取調(diào)用者的PID。此方法由RemoteObject對象在onRemoteRequest方法中調(diào)用,不在IPC上下文環(huán)境(onRemoteRequest)中調(diào)用則返回本進(jìn)程的PID。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number | 返回調(diào)用者的PID。 |
示例:
- class Stub extends rpc.RemoteObject {
- onRemoteMessageRequest(code, data, reply, option) {
- let callerPid = rpc.IPCSkeleton.getCallingPid();
- console.log("RpcServer: getCallingPid result: " + callerPid);
- return true;
- }
- }
static getCallingUid(): number
靜態(tài)方法,獲取調(diào)用者的UID。此方法由RemoteObject對象在onRemoteRequest方法中調(diào)用,不在IPC上下文環(huán)境(onRemoteRequest)中調(diào)用則返回本進(jìn)程的UID。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number | 返回調(diào)用者的UID。 |
示例:
- class Stub extends rpc.RemoteObject {
- onRemoteMessageRequest(code, data, reply, option) {
- let callerUid = rpc.IPCSkeleton.getCallingUid();
- console.log("RpcServer: getCallingUid result: " + callerUid);
- return true;
- }
- }
static getCallingTokenId(): number;
靜態(tài)方法,獲取調(diào)用者的TokenId,用于被調(diào)用方對調(diào)用方的身份校驗。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number | 返回調(diào)用者的TokenId。 |
示例:
- class Stub extends rpc.RemoteObject {
- onRemoteMessageRequest(code, data, reply, option) {
- let callerTokenId = rpc.IPCSkeleton.getCallingTokenId();
- console.log("RpcServer: getCallingTokenId result: " + callerTokenId);
- return true;
- }
- }
static getCallingDeviceID(): string
靜態(tài)方法,獲取調(diào)用者進(jìn)程所在的設(shè)備ID。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
string | 返回調(diào)用者進(jìn)程所在的設(shè)備ID。 |
示例:
- class Stub extends rpc.RemoteObject {
- onRemoteMessageRequest(code, data, reply, option) {
- let callerDeviceID = rpc.IPCSkeleton.getCallingDeviceID();
- console.log("RpcServer: callerDeviceID is: " + callerDeviceID);
- return true;
- }
- }
static getLocalDeviceID(): string
靜態(tài)方法,獲取本端設(shè)備ID。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
string | 返回本地設(shè)備的ID。 |
示例:
- class Stub extends rpc.RemoteObject {
- onRemoteMessageRequest(code, data, reply, option) {
- let localDeviceID = rpc.IPCSkeleton.getLocalDeviceID();
- console.log("RpcServer: localDeviceID is: " + localDeviceID);
- return true;
- }
- }
static isLocalCalling(): boolean
靜態(tài)方法,檢查當(dāng)前通信對端是否是本設(shè)備的進(jìn)程。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
boolean | true:調(diào)用在同一臺設(shè)備,false:調(diào)用未在同一臺設(shè)備。 |
示例:
- class Stub extends rpc.RemoteObject {
- onRemoteMessageRequest(code, data, reply, option) {
- let isLocalCalling = rpc.IPCSkeleton.isLocalCalling();
- console.log("RpcServer: isLocalCalling is: " + isLocalCalling);
- return true;
- }
- }
static flushCmdBuffer(object: IRemoteObject): void
靜態(tài)方法,將所有掛起的命令從指定的RemoteProxy刷新到相應(yīng)的RemoteObject。建議在執(zhí)行任何時間敏感操作之前調(diào)用此方法。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
object | 是 | 指定的RemoteProxy。 |
示例:
- class TestRemoteObject extends rpc.RemoteObject {
- constructor(descriptor) {
- super(descriptor);
- }
- }
- let remoteObject = new TestRemoteObject("aaa");
- try {
- rpc.IPCSkeleton.flushCmdBuffer(remoteObject);
- } catch(error) {
- console.info("proxy set calling identity fail, errorCode " + error.code);
- console.info("proxy set calling identity fail, errorMessage " + error.message);
- }
從API version 9 開始不再維護(hù),建議使用flushCmdBuffer類替代。
static flushCommands(object: IRemoteObject): number
靜態(tài)方法,將所有掛起的命令從指定的RemoteProxy刷新到相應(yīng)的RemoteObject。建議在執(zhí)行任何時間敏感操作之前調(diào)用此方法。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
object | 是 | 指定的RemoteProxy。 |
返回值:
類型 | 說明 |
---|---|
number | 如果操作成功,返回0;如果輸入對象為空或RemoteObject,或者操作失敗,返回錯誤代碼。 |
示例:
- 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 remoteObject = new TestRemoteObject("aaa");
- let ret = rpc.IPCSkeleton.flushCommands(remoteObject);
- console.log("RpcServer: flushCommands result: " + ret);
static resetCallingIdentity(): string
靜態(tài)方法,將遠(yuǎn)程用戶的UID和PID替換為本地用戶的UID和PID。它可以用于身份驗證等場景。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
string | 返回包含遠(yuǎn)程用戶的UID和PID的字符串。 |
示例:
- class Stub extends rpc.RemoteObject {
- onRemoteMessageRequest(code, data, reply, option) {
- let callingIdentity = rpc.IPCSkeleton.resetCallingIdentity();
- console.log("RpcServer: callingIdentity is: " + callingIdentity);
- return true;
- }
- }
static restoreCallingIdentity(identity: string): void
靜態(tài)方法,將遠(yuǎn)程用戶的UID和PID替換為本地用戶的UID和PID。它可以用于身份驗證等場景。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
identity | string | 是 | 標(biāo)識表示包含遠(yuǎn)程用戶UID和PID的字符串。由resetCallingIdentity返回。 |
示例:
- class Stub extends rpc.RemoteObject {
- onRemoteMessageRequest(code, data, reply, option) {
- let callingIdentity = null;
- try {
- callingIdentity = rpc.IPCSkeleton.resetCallingIdentity();
- console.log("RpcServer: callingIdentity is: " + callingIdentity);
- } finally {
- rpc.IPCSkeleton.restoreCallingIdentity("callingIdentity ");
- }
- return true;
- }
- }
從API version 9 開始不再維護(hù),建議使用restoreCallingIdentity類替代。
static setCallingIdentity(identity: string): boolean
靜態(tài)方法,將UID和PID恢復(fù)為遠(yuǎn)程用戶的UID和PID。它通常在使用resetCallingIdentity后調(diào)用,需要resetCallingIdentity返回的遠(yuǎn)程用戶的UID和PID。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
identity | string | 是 | 標(biāo)識表示包含遠(yuǎn)程用戶UID和PID的字符串。由resetCallingIdentity返回。 |
返回值:
類型 | 說明 |
---|---|
boolean | true:設(shè)置成功,false:設(shè)置失敗。 |
示例:
- class Stub extends rpc.RemoteObject {
- onRemoteMessageRequest(code, data, reply, option) {
- let callingIdentity = null;
- try {
- callingIdentity = rpc.IPCSkeleton.resetCallingIdentity();
- console.log("RpcServer: callingIdentity is: " + callingIdentity);
- } finally {
- let ret = rpc.IPCSkeleton.setCallingIdentity("callingIdentity ");
- console.log("RpcServer: setCallingIdentity is: " + ret);
- }
- return true;
- }
- }
constructor(descriptor: string)
RemoteObject構(gòu)造函數(shù)。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
descriptor | string | 是 | 接口描述符。 |
從API version 9 開始不再維護(hù),建議使用sendMessageRequest類替代。
sendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption): boolean
以同步或異步方式向?qū)Χ诉M(jìn)程發(fā)送MessageParcel消息。如果為選項設(shè)置了異步模式,則期約立即兌現(xiàn),reply報文里沒有內(nèi)容,具體回復(fù)需要在業(yè)務(wù)側(cè)的回調(diào)中獲取。如果為選項設(shè)置了同步模式,則期約將在sendRequest返回時兌現(xiàn),回復(fù)內(nèi)容在reply報文里。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
code | number | 是 | 本次請求調(diào)用的消息碼,由通信雙方確定。如果接口由IDL工具生成,則消息代碼由IDL自動生成。 |
data | 是 | 保存待發(fā)送數(shù)據(jù)的 MessageParcel對象。 | |
reply | 是 | 接收應(yīng)答數(shù)據(jù)的MessageParcel對象。 | |
options | 是 | 本次請求的同異步模式,默認(rèn)同步調(diào)用。 |
返回值:
類型 | 說明 |
---|---|
boolean | true:發(fā)送成功,false:發(fā)送失敗。 |
示例:
- 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 testRemoteObject = new TestRemoteObject("testObject");
- let option = new rpc.MessageOption();
- let data = rpc.MessageParcel.create();
- let reply = rpc.MessageParcel.create();
- data.writeInt(1);
- data.writeString("hello");
- let ret: boolean = testRemoteObject.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();
從API version 9 開始不再維護(hù),建議使用sendMessageRequest類替代。
sendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption): Promise<SendRequestResult>
以同步或異步方式向?qū)Χ诉M(jìn)程發(fā)送MessageParcel消息。如果為選項設(shè)置了異步模式,則期約立即兌現(xiàn),reply報文里沒有內(nèi)容,具體回復(fù)需要在業(yè)務(wù)側(cè)的回調(diào)中獲取。如果為選項設(shè)置了同步模式,則期約將在sendRequest返回時兌現(xiàn),回復(fù)內(nèi)容在reply報文里。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
code | number | 是 | 本次請求調(diào)用的消息碼,由通信雙方確定。如果接口由IDL工具生成,則消息代碼由IDL自動生成。 |
data | 是 | 保存待發(fā)送數(shù)據(jù)的 MessageParcel對象。 | |
reply | 是 | 接收應(yīng)答數(shù)據(jù)的MessageParcel對象。 | |
options | 是 | 本次請求的同異步模式,默認(rèn)同步調(diào)用。 |
返回值:
類型 | 說明 |
---|---|
Promise<SendRequestResult> | 返回一個期約,兌現(xiàn)值是sendRequestResult實例。 |
示例:
- 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 testRemoteObject = new TestRemoteObject("testObject");
- let option = new rpc.MessageOption();
- let data = rpc.MessageParcel.create();
- let reply = rpc.MessageParcel.create();
- data.writeInt(1);
- data.writeString("hello");
- testRemoteObject.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();
- });
sendMessageRequest(code: number, data: MessageSequence, reply: MessageSequence, options: MessageOption): Promise<RequestResult>
以同步或異步方式向?qū)Χ诉M(jìn)程發(fā)送MessageSequence消息。如果為選項設(shè)置了異步模式,則期約立即兌現(xiàn),reply報文里沒有內(nèi)容,具體回復(fù)需要在業(yè)務(wù)側(cè)的回調(diào)中獲取。如果為選項設(shè)置了同步模式,則期約將在sendMessageRequest返回時兌現(xiàn),回復(fù)內(nèi)容在reply報文里。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
code | number | 是 | 本次請求調(diào)用的消息碼,由通信雙方確定。如果接口由IDL工具生成,則消息代碼由IDL自動生成。 |
data | 是 | 保存待發(fā)送數(shù)據(jù)的 MessageSequence對象。 | |
reply | 是 | 接收應(yīng)答數(shù)據(jù)的MessageSequence對象。 | |
options | 是 | 本次請求的同異步模式,默認(rèn)同步調(diào)用。 |
返回值:
類型 | 說明 |
---|---|
Promise<RequestResult> | 返回一個期約,兌現(xiàn)值是sendRequestResult實例。 |
示例:
- class TestRemoteObject extends rpc.RemoteObject {
- constructor(descriptor) {
- super(descriptor);
- }
- }
- let testRemoteObject = new TestRemoteObject("testObject");
- let option = new rpc.MessageOption();
- let data = rpc.MessageSequence.create();
- let reply = rpc.MessageSequence.create();
- data.writeInt(1);
- data.writeString("hello");
- testRemoteObject.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();
- });
sendMessageRequest(code: number, data: MessageSequence, reply: MessageSequence, options: MessageOption, callback: AsyncCallback<RequestResult>): void
以同步或異步方式向?qū)Χ诉M(jìn)程發(fā)送MessageSequence消息。如果為選項設(shè)置了異步模式,則立即收到回調(diào),reply報文里沒有內(nèi)容,具體回復(fù)需要在業(yè)務(wù)側(cè)的回調(diào)中獲取。如果為選項設(shè)置了同步模式,則將在sendMessageRequest返回時收到回調(diào),回復(fù)內(nèi)容在reply報文里。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
code | number | 是 | 本次請求調(diào)用的消息碼,由通信雙方確定。如果接口由IDL工具生成,則消息代碼由IDL自動生成。 |
data | 是 | 保存待發(fā)送數(shù)據(jù)的 MessageSequence對象。 | |
reply | 是 | 接收應(yīng)答數(shù)據(jù)的MessageSequence對象。 | |
options | 是 | 本次請求的同異步模式,默認(rèn)同步調(diào)用。 | |
AsyncCallback | AsyncCallback<RequestResult> | 是 | 接收發(fā)送結(jié)果的回調(diào)。 |
示例:
- class TestRemoteObject extends rpc.RemoteObject {
- constructor(descriptor) {
- super(descriptor);
- }
- }
- function sendRequestCallback(result) {
- if (result.errCode === 0) {
- console.log("sendRequest got result");
- result.reply.readException();
- let msg = result.reply.readString();
- console.log("RPCTest: reply msg: " + msg);
- } else {
- console.log("RPCTest: sendRequest failed, errCode: " + result.errCode);
- }
- console.log("RPCTest: sendRequest ends, reclaim parcel");
- result.data.reclaim();
- result.reply.reclaim();
- }
- let testRemoteObject = new TestRemoteObject("testObject");
- let option = new rpc.MessageOption();
- let data = rpc.MessageSequence.create();
- let reply = rpc.MessageSequence.create();
- data.writeInt(1);
- data.writeString("hello");
- testRemoteObject.sendMessageRequest(1, data, reply, option, sendRequestCallback);
從API version 9 開始不再維護(hù),建議使用sendMessageRequest類替代。
sendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption, callback: AsyncCallback<SendRequestResult>): void
以同步或異步方式向?qū)Χ诉M(jìn)程發(fā)送MessageParcel消息。如果為選項設(shè)置了異步模式,則立即收到回調(diào),reply報文里沒有內(nèi)容,具體回復(fù)需要在業(yè)務(wù)側(cè)的回調(diào)中獲取。如果為選項設(shè)置了同步模式,則將在sendRequest返回時收到回調(diào),回復(fù)內(nèi)容在reply報文里。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
code | number | 是 | 本次請求調(diào)用的消息碼,由通信雙方確定。如果接口由IDL工具生成,則消息代碼由IDL自動生成。 |
data | 是 | 保存待發(fā)送數(shù)據(jù)的 MessageParcel對象。 | |
reply | 是 | 接收應(yīng)答數(shù)據(jù)的MessageParcel對象。 | |
options | 是 | 本次請求的同異步模式,默認(rèn)同步調(diào)用。 | |
AsyncCallback | AsyncCallback<SendRequestResult> | 是 | 接收發(fā)送結(jié)果的回調(diào)。 |
示例:
- 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;
- }
- }
- function sendRequestCallback(result) {
- if (result.errCode === 0) {
- console.log("sendRequest got result");
- result.reply.readException();
- let msg = result.reply.readString();
- console.log("RPCTest: reply msg: " + msg);
- } else {
- console.log("RPCTest: sendRequest failed, errCode: " + result.errCode);
- }
- console.log("RPCTest: sendRequest ends, reclaim parcel");
- result.data.reclaim();
- result.reply.reclaim();
- }
- let testRemoteObject = new TestRemoteObject("testObject");
- let option = new rpc.MessageOption();
- let data = rpc.MessageParcel.create();
- let reply = rpc.MessageParcel.create();
- data.writeInt(1);
- data.writeString("hello");
- testRemoteObject.sendRequest(1, data, reply, option, sendRequestCallback);
從API version 9 開始不再維護(hù),建議使用onRemoteMessageRequest類替代。
onRemoteRequest(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption): boolean
sendMessageRequest請求的響應(yīng)處理函數(shù),服務(wù)端在該函數(shù)里處理請求,回復(fù)結(jié)果。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
code | number | 是 | 對端發(fā)送的服務(wù)請求碼。 |
data | 是 | 攜帶客戶端調(diào)用參數(shù)的MessageParcel對象。 | |
reply | 是 | 寫入結(jié)果的MessageParcel對象。 | |
option | 是 | 指示操作是同步還是異步。 |
返回值:
類型 | 說明 |
---|---|
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;
- }
- onRemoteRequest(code, data, reply, option) {
- if (code === 1) {
- console.log("RpcServer: onRemoteRequest called");
- return true;
- } else {
- console.log("RpcServer: unknown code: " + code);
- return false;
- }
- }
- }
onRemoteMessageRequest(code: number, data: MessageSequence, reply: MessageSequence, options: MessageOption): boolean | Promise<boolean>
sendMessageRequest請求的響應(yīng)處理函數(shù),服務(wù)端在該函數(shù)里同步或異步地處理請求,回復(fù)結(jié)果。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
code | number | 是 | 對端發(fā)送的服務(wù)請求碼。 |
data | 是 | 攜帶客戶端調(diào)用參數(shù)的MessageSequence對象。 | |
reply | 是 | 寫入結(jié)果的MessageSequence對象。 | |
option | 是 | 指示操作是同步還是異步。 |
返回值:
類型 | 說明 |
---|---|
boolean | 若在onRemoteMessageRequest中同步地處理請求,則返回一個布爾值:true:操作成功,false:操作失敗。 |
Promise<boolean> | 若在onRemoteMessageRequest中異步地處理請求,則返回一個Promise對象。 |
重載onRemoteMessageRequest方法同步處理請求示例:
- class TestRemoteObject extends rpc.RemoteObject {
- constructor(descriptor) {
- super(descriptor);
- }
- onRemoteMessageRequest(code, data, reply, option) {
- if (code === 1) {
- console.log("RpcServer: sync onRemoteMessageRequest is called");
- return true;
- } else {
- console.log("RpcServer: unknown code: " + code);
- return false;
- }
- }
- }
重載onRemoteMessageRequest方法異步處理請求示例:
- class TestRemoteObject extends rpc.RemoteObject {
- constructor(descriptor) {
- super(descriptor);
- }
- async onRemoteMessageRequest(code, data, reply, option) {
- if (code === 1) {
- console.log("RpcServer: async onRemoteMessageRequest is called");
- } else {
- console.log("RpcServer: unknown code: " + code);
- return false;
- }
- await new Promise((resolve) => {
- setTimeout(resolve, 100);
- })
- return true;
- }
- }
同時重載onRemoteMessageRequest和onRemoteRequest方法同步處理請求示例:
- class TestRemoteObject extends rpc.RemoteObject {
- constructor(descriptor) {
- super(descriptor);
- }
- onRemoteRequest(code, data, reply, option) {
- if (code === 1) {
- console.log("RpcServer: sync onRemoteMessageRequest is called");
- return true;
- } else {
- console.log("RpcServer: unknown code: " + code);
- return false;
- }
- }
- // 同時調(diào)用僅會執(zhí)行onRemoteMessageRequest
- onRemoteMessageRequest(code, data, reply, option) {
- if (code === 1) {
- console.log("RpcServer: async onRemoteMessageRequest is called");
- } else {
- console.log("RpcServer: unknown code: " + code);
- return false;
- }
- return true;
- }
- }
同時重載onRemoteMessageRequest和onRemoteRequest方法異步處理請求示例:
- class TestRemoteObject extends rpc.RemoteObject {
- constructor(descriptor) {
- super(descriptor);
- }
- onRemoteRequest(code, data, reply, option) {
- if (code === 1) {
- console.log("RpcServer: sync onRemoteRequest is called");
- return true;
- } else {
- console.log("RpcServer: unknown code: " + code);
- return false;
- }
- }
- // 同時調(diào)用僅會執(zhí)行onRemoteMessageRequest
- async onRemoteMessageRequest(code, data, reply, option) {
- if (code === 1) {
- console.log("RpcServer: async onRemoteMessageRequest is called");
- } else {
- console.log("RpcServer: unknown code: " + code);
- return false;
- }
- await new Promise((resolve) => {
- setTimeout(resolve, 100);
- })
- return true;
- }
- }
getCallingUid(): number
獲取通信對端的進(jìn)程Uid。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number | 返回通信對端的進(jìn)程Uid。 |
示例:
- class TestRemoteObject extends rpc.RemoteObject {
- constructor(descriptor) {
- super(descriptor);
- }
- }
- let testRemoteObject = new TestRemoteObject("testObject");
- console.log("RpcServer: getCallingUid: " + testRemoteObject.getCallingUid());
getCallingPid(): number
獲取通信對端的進(jìn)程Pid。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number | 返回通信對端的進(jìn)程Pid。 |
示例:
- class TestRemoteObject extends rpc.RemoteObject {
- constructor(descriptor) {
- super(descriptor);
- }
- }
- let testRemoteObject = new TestRemoteObject("testObject");
- console.log("RpcServer: getCallingPid: " + testRemoteObject.getCallingPid());
getLocalInterface(descriptor: string): IRemoteBroker
查詢接口描述符的字符串。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
descriptor | string | 是 | 接口描述符的字符串。 |
返回值:
類型 | 說明 |
---|---|
IRemoteBroker | 返回綁定到指定接口描述符的IRemoteBroker對象。 |
示例:
- class MyDeathRecipient {
- onRemoteDied() {
- console.log("server died");
- }
- }
- class TestRemoteObject extends rpc.RemoteObject {
- constructor(descriptor) {
- super(descriptor);
- }
- registerDeathRecipient(recipient: MyDeathRecipient, flags: number) {
- // 方法邏輯需開發(fā)者根據(jù)業(yè)務(wù)需要實現(xiàn)
- }
- unregisterDeathRecipient(recipient: MyDeathRecipient, flags: number) {
- // 方法邏輯需開發(fā)者根據(jù)業(yè)務(wù)需要實現(xiàn)
- }
- isObjectDead(): boolean {
- return false;
- }
- }
- let testRemoteObject = new TestRemoteObject("testObject");
- try {
- let broker = testRemoteObject.getLocalInterface("testObject");
- } catch(error) {
- console.info("rpc get local interface fail, errorCode " + error.code);
- console.info("rpc get local interface fail, errorMessage " + error.message);
- }
從API version 9 開始不再維護(hù),建議使用getLocalInterface類替代。
queryLocalInterface(descriptor: string): IRemoteBroker
查詢并獲取當(dāng)前接口描述符對應(yīng)的遠(yuǎn)端對象是否已經(jīng)存在。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
descriptor | string | 是 | 需要查詢的接口描述符。 |
返回值:
類型 | 說明 |
---|---|
IRemoteBroker | 如果接口描述符對應(yīng)的遠(yuǎn)端對象存在,則返回該遠(yuǎn)端對象,否則返回Null。 |
示例:
- 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 testRemoteObject = new TestRemoteObject("testObject");
- let broker = testRemoteObject.queryLocalInterface("testObject");
getDescriptor(): string
獲取對象的接口描述符。接口描述符為字符串。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
string | 返回接口描述符。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見ohos.rpc錯誤碼
錯誤碼ID | 錯誤信息 |
---|---|
1900008 | proxy or remote object is invalid |
示例:
- class MyDeathRecipient {
- onRemoteDied() {
- console.log("server died");
- }
- }
- class TestRemoteObject extends rpc.RemoteObject {
- constructor(descriptor) {
- super(descriptor);
- }
- registerDeathRecipient(recipient: MyDeathRecipient, flags: number) {
- // 方法邏輯需開發(fā)者根據(jù)業(yè)務(wù)需要實現(xiàn)
- }
- unregisterDeathRecipient(recipient: MyDeathRecipient, flags: number) {
- // 方法邏輯需開發(fā)者根據(jù)業(yè)務(wù)需要實現(xiàn)
- }
- isObjectDead(): boolean {
- return false;
- }
- }
- let testRemoteObject = new TestRemoteObject("testObject");
- console.log("RpcServer: descriptor is: " + descriptor);
- try {
- let descriptor = testRemoteObject.getDescriptor();
- } catch(error) {
- console.info("rpc get local interface fail, errorCode " + error.code);
- console.info("rpc get local interface fail, errorMessage " + error.message);
- }
從API version 9 開始不再維護(hù),建議使用getDescriptor類替代。
getInterfaceDescriptor(): string
查詢接口描述符。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
string | 返回接口描述符。 |
示例:
- 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 testRemoteObject = new TestRemoteObject("testObject");
- let descriptor = testRemoteObject.getInterfaceDescriptor();
- console.log("RpcServer: descriptor is: " + descriptor);
modifyLocalInterface(localInterface: IRemoteBroker, descriptor: string): void
此接口用于把接口描述符和IRemoteBroker對象綁定。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
localInterface | IRemoteBroker | 是 | 將與描述符綁定的IRemoteBroker對象。 |
descriptor | string | 是 | 用于與IRemoteBroker對象綁定的描述符。 |
示例:
- class MyDeathRecipient {
- onRemoteDied() {
- console.log("server died");
- }
- }
- class TestRemoteObject extends rpc.RemoteObject {
- constructor(descriptor) {
- super(descriptor);
- try {
- this.modifyLocalInterface(this, descriptor);
- } catch(error) {
- console.info(" rpc attach local interface fail, errorCode " + error.code);
- console.info(" rpc attach local interface fail, errorMessage " + error.message);
- }
- }
- registerDeathRecipient(recipient: MyDeathRecipient, flags: number) {
- // 方法邏輯需開發(fā)者根據(jù)業(yè)務(wù)需要實現(xiàn)
- }
- unregisterDeathRecipient(recipient: MyDeathRecipient, flags: number) {
- // 方法邏輯需開發(fā)者根據(jù)業(yè)務(wù)需要實現(xiàn)
- }
- isObjectDead(): boolean {
- return false;
- }
- asObject(): rpc.IRemoteObject {
- return this;
- }
- }
- let testRemoteObject = new TestRemoteObject("testObject");
從API version 9 開始不再維護(hù),建議使用modifyLocalInterface類替代。
attachLocalInterface(localInterface: IRemoteBroker, descriptor: string): void
此接口用于把接口描述符和IRemoteBroker對象綁定。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
localInterface | IRemoteBroker | 是 | 將與描述符綁定的IRemoteBroker對象。 |
descriptor | string | 是 | 用于與IRemoteBroker對象綁定的描述符。 |
示例:
- 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 testRemoteObject = new TestRemoteObject("testObject");
提供與匿名共享內(nèi)存對象相關(guān)的方法,包括創(chuàng)建、關(guān)閉、映射和取消映射Ashmem、從Ashmem讀取數(shù)據(jù)和寫入數(shù)據(jù)、獲取Ashmem大小、設(shè)置Ashmem保護(hù)。
系統(tǒng)能力:以下各項對應(yīng)的系統(tǒng)能力均為SystemCapability.Communication.IPC.Core。
映射內(nèi)存保護(hù)類型:
名稱 | 值 | 說明 |
---|---|---|
PROT_EXEC | 4 | 映射的內(nèi)存可執(zhí)行 |
PROT_NONE | 0 | 映射的內(nèi)存不可訪問 |
PROT_READ | 1 | 映射的內(nèi)存可讀 |
PROT_WRITE | 2 | 映射的內(nèi)存可寫 |
static create(name: string, size: number): Ashmem
靜態(tài)方法,根據(jù)指定的名稱和大小創(chuàng)建Ashmem對象。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
name | string | 是 | 名稱,用于查詢Ashmem信息。 |
size | number | 是 | Ashmem的大小,以字節(jié)為單位。 |
返回值:
類型 | 說明 |
---|---|
Ashmem | 返回創(chuàng)建的Ashmem對象;如果創(chuàng)建失敗,返回null。 |
示例:
- let ashmem;
- try {
- ashmem = rpc.Ashmem.create("ashmem", 1024*1024);
- } catch(error) {
- console.info("Rpc creat ashmem fail, errorCode " + error.code);
- console.info("Rpc creat ashmem fail, errorMessage " + error.message);
- }
- let size = ashmem.getAshmemSize();
- console.log("RpcTest: get ashemm by create : " + ashmem + " size is : " + size);
從API version 9 開始不再維護(hù),建議使用create類替代。
static createAshmem(name: string, size: number): Ashmem
靜態(tài)方法,根據(jù)指定的名稱和大小創(chuàng)建Ashmem對象。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
name | string | 是 | 名稱,用于查詢Ashmem信息。 |
size | number | 是 | Ashmem的大小,以字節(jié)為單位。 |
返回值:
類型 | 說明 |
---|---|
Ashmem | 返回創(chuàng)建的Ashmem對象;如果創(chuàng)建失敗,返回null。 |
示例:
- let ashmem = rpc.Ashmem.createAshmem("ashmem", 1024*1024);
- let size = ashmem.getAshmemSize();
- console.log("RpcTest: get ashemm by createAshmem : " + ashmem + " size is : " + size);
static create(ashmem: Ashmem): Ashmem
靜態(tài)方法,通過復(fù)制現(xiàn)有Ashmem對象的文件描述符(fd)來創(chuàng)建Ashmem對象。兩個Ashmem對象指向同一個共享內(nèi)存區(qū)域。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
ashmem | Ashmem | 是 | 已存在的Ashmem對象。 |
返回值:
類型 | 說明 |
---|---|
Ashmem | 返回創(chuàng)建的Ashmem對象。 |
示例:
- let ashmem2;
- try {
- let ashmem = rpc.Ashmem.create("ashmem", 1024*1024);
- let ashmem2 = rpc.Ashmem.create(ashmem);
- } catch(error) {
- console.info("Rpc creat ashmem from existing fail, errorCode " + error.code);
- console.info("Rpc creat ashmem from existing fail, errorMessage " + error.message);
- }
- let size = ashmem2.getAshmemSize();
- console.log("RpcTest: get ashemm by create : " + ashmem2 + " size is : " + size);
從API version 9 開始不再維護(hù),建議使用create類替代。
static createAshmemFromExisting(ashmem: Ashmem): Ashmem
靜態(tài)方法,通過復(fù)制現(xiàn)有Ashmem對象的文件描述符(fd)來創(chuàng)建Ashmem對象。兩個Ashmem對象指向同一個共享內(nèi)存區(qū)域。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
ashmem | Ashmem | 是 | 已存在的Ashmem對象。 |
返回值:
類型 | 說明 |
---|---|
Ashmem | 返回創(chuàng)建的Ashmem對象。 |
示例:
- let ashmem = rpc.Ashmem.createAshmem("ashmem", 1024*1024);
- let ashmem2 = rpc.Ashmem.createAshmemFromExisting(ashmem);
- let size = ashmem2.getAshmemSize();
- console.log("RpcTest: get ashemm by createAshmemFromExisting : " + ashmem2 + " size is : " + size);
closeAshmem(): void
關(guān)閉這個Ashmem。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
示例:
- let ashmem = rpc.Ashmem.create("ashmem", 1024*1024);
- ashmem.closeAshmem();
unmapAshmem(): void
刪除該Ashmem對象的地址映射。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
示例:
- let ashmem = rpc.Ashmem.create("ashmem", 1024*1024);
- ashmem.unmapAshmem();
getAshmemSize(): number
獲取Ashmem對象的內(nèi)存大小。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number | 返回Ashmem對象的內(nèi)存大小。 |
示例:
- let ashmem = rpc.Ashmem.createAshmem("ashmem", 1024*1024);
- let size = ashmem.getAshmemSize();
- console.log("RpcTest: get ashmem is " + ashmem + " size is : " + size);
mapTypedAshmem(mapType: number): void
在此進(jìn)程的虛擬地址空間上創(chuàng)建共享文件映射,映射區(qū)域大小由此Ashmem對象指定。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
mapType | number | 是 | 指定映射的內(nèi)存區(qū)域的保護(hù)等級。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見ohos.rpc錯誤碼
錯誤碼ID | 錯誤信息 |
---|---|
1900001 | call mmap function failed |
示例:
- let ashmem = rpc.Ashmem.create("ashmem", 1024*1024);
- try {
- ashmem.mapTypedAshmem(ashmem.PROT_READ | ashmem.PROT_WRITE);
- } catch(error) {
- console.info("Rpc map ashmem fail, errorCode " + error.code);
- console.info("Rpc map ashmem fail, errorMessage " + error.message);
- }
從API version 9 開始不再維護(hù),建議使用mapTypedAshmem類替代。
mapAshmem(mapType: number): boolean
在此進(jìn)程的虛擬地址空間上創(chuàng)建共享文件映射,映射區(qū)域大小由此Ashmem對象指定。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
mapType | number | 是 | 指定映射的內(nèi)存區(qū)域的保護(hù)等級。 |
返回值:
類型 | 說明 |
---|---|
boolean | true:映射成功,false:映射失敗。 |
示例:
- let ashmem = rpc.Ashmem.createAshmem("ashmem", 1024*1024);
- let mapReadAndWrite = ashmem.mapAshmem(ashmem.PROT_READ | ashmem.PROT_WRITE);
- console.log("RpcTest: map ashmem result is : " + mapReadAndWrite);
mapReadWriteAshmem(): void
在此進(jìn)程虛擬地址空間上創(chuàng)建可讀寫的共享文件映射。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見ohos.rpc錯誤碼
錯誤碼ID | 錯誤信息 |
---|---|
1900001 | call mmap function failed |
示例:
- let ashmem = rpc.Ashmem.create("ashmem", 1024*1024);
- try {
- ashmem.mapReadWriteAshmem();
- } catch(error) {
- console.info("Rpc map read and write ashmem fail, errorCode " + error.code);
- console.info("Rpc map read and write ashmem fail, errorMessage " + error.message);
- }
從API version 9 開始不再維護(hù),建議使用mapReadWriteAshmem類替代。
mapReadAndWriteAshmem(): boolean
在此進(jìn)程虛擬地址空間上創(chuàng)建可讀寫的共享文件映射。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
boolean | true:映射成功,false:映射失敗。 |
示例:
- let ashmem = rpc.Ashmem.createAshmem("ashmem", 1024*1024);
- let mapResult = ashmem.mapReadAndWriteAshmem();
- console.log("RpcTest: map ashmem result is : " + mapResult);
mapReadonlyAshmem(): void
在此進(jìn)程虛擬地址空間上創(chuàng)建只讀的共享文件映射。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見ohos.rpc錯誤碼
錯誤碼ID | 錯誤信息 |
---|---|
1900001 | call mmap function failed |
示例:
- let ashmem = rpc.Ashmem.create("ashmem", 1024*1024);
- try {
- ashmem.mapReadonlyAshmem();
- } catch(error) {
- console.info("Rpc map read and write ashmem fail, errorCode " + error.code);
- console.info("Rpc map read and write ashmem fail, errorMessage " + error.message);
- }
從API version 9 開始不再維護(hù),建議使用mapReadonlyAshmem類替代。
mapReadOnlyAshmem(): boolean
在此進(jìn)程虛擬地址空間上創(chuàng)建只讀的共享文件映射。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
boolean | true:映射成功,false:映射失敗。 |
示例:
- let ashmem = rpc.Ashmem.createAshmem("ashmem", 1024*1024);
- let mapResult = ashmem.mapReadOnlyAshmem();
- console.log("RpcTest: Ashmem mapReadOnlyAshmem result is : " + mapResult);
setProtectionType(protectionType: number): void
設(shè)置映射內(nèi)存區(qū)域的保護(hù)等級。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
protectionType | number | 是 | 要設(shè)置的保護(hù)類型。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見ohos.rpc錯誤碼
錯誤碼ID | 錯誤信息 |
---|---|
1900002 | call os ioctl function failed |
示例:
- let ashmem = rpc.Ashmem.create("ashmem", 1024*1024);
- try {
- ashmem.setProtection(ashmem.PROT_READ);
- } catch(error) {
- console.info("Rpc set protection type fail, errorCode " + error.code);
- console.info("Rpc set protection type fail, errorMessage " + error.message);
- }
從API version 9 開始不再維護(hù),建議使用setProtectionType類替代。
setProtection(protectionType: number): boolean
設(shè)置映射內(nèi)存區(qū)域的保護(hù)等級。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
protectionType | number | 是 | 要設(shè)置的保護(hù)類型。 |
返回值:
類型 | 說明 |
---|---|
boolean | true:設(shè)置成功,false:設(shè)置失敗。 |
示例:
- let ashmem = rpc.Ashmem.createAshmem("ashmem", 1024*1024);
- let result = ashmem.setProtection(ashmem.PROT_READ);
- console.log("RpcTest: Ashmem setProtection result is : " + result);
writeAshmem(buf: number[], size: number, offset: number): void
將數(shù)據(jù)寫入此Ashmem對象關(guān)聯(lián)的共享文件。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
buf | number[] | 是 | 寫入Ashmem對象的數(shù)據(jù)。 |
size | number | 是 | 要寫入的數(shù)據(jù)大小。 |
offset | number | 是 | 要寫入的數(shù)據(jù)在此Ashmem對象關(guān)聯(lián)的內(nèi)存區(qū)間的起始位置 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見ohos.rpc錯誤碼
錯誤碼ID | 錯誤信息 |
---|---|
1900003 | write to ashmem failed |
示例:
- let ashmem = rpc.Ashmem.create("ashmem", 1024*1024);
- ashmem.mapReadWriteAshmem();
- var ByteArrayVar = [1, 2, 3, 4, 5];
- try {
- ashmem.writeAshmem(ByteArrayVar, 5, 0);
- } catch(error) {
- console.info("Rpc write to ashmem fail, errorCode " + error.code);
- console.info("Rpc write to ashmem fail, errorMessage " + error.message);
- }
從API version 9 開始不再維護(hù),建議使用writeAshmem類替代。
writeToAshmem(buf: number[], size: number, offset: number): boolean
將數(shù)據(jù)寫入此Ashmem對象關(guān)聯(lián)的共享文件。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
buf | number[] | 是 | 寫入Ashmem對象的數(shù)據(jù)。 |
size | number | 是 | 要寫入的數(shù)據(jù)大小。 |
offset | number | 是 | 要寫入的數(shù)據(jù)在此Ashmem對象關(guān)聯(lián)的內(nèi)存區(qū)間的起始位置 |
返回值:
類型 | 說明 |
---|---|
boolean | true:如果數(shù)據(jù)寫入成功,false:在其他情況下,如數(shù)據(jù)寫入越界或未獲得寫入權(quán)限。 |
示例:
- let ashmem = rpc.Ashmem.createAshmem("ashmem", 1024*1024);
- let mapResult = ashmem.mapReadAndWriteAshmem();
- console.info("RpcTest map ashmem result is " + mapResult);
- var ByteArrayVar = [1, 2, 3, 4, 5];
- let writeResult = ashmem.writeToAshmem(ByteArrayVar, 5, 0);
- console.log("RpcTest: write to Ashmem result is : " + writeResult);
readAshmem(size: number, offset: number): number[]
從此Ashmem對象關(guān)聯(lián)的共享文件中讀取數(shù)據(jù)。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
size | number | 是 | 要讀取的數(shù)據(jù)的大小。 |
offset | number | 是 | 要讀取的數(shù)據(jù)在此Ashmem對象關(guān)聯(lián)的內(nèi)存區(qū)間的起始位置 |
返回值:
類型 | 說明 |
---|---|
number[] | 返回讀取的數(shù)據(jù)。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見ohos.rpc錯誤碼
錯誤碼ID | 錯誤信息 |
---|---|
1900004 | read from ashmem failed |
示例:
- let ashmem = rpc.Ashmem.create("ashmem", 1024*1024);
- ashmem.mapReadWriteAshmem();
- var ByteArrayVar = [1, 2, 3, 4, 5];
- ashmem.writeAshmem(ByteArrayVar, 5, 0);
- try {
- let readResult = ashmem.readAshmem(5, 0);
- console.log("RpcTest: read from Ashmem result is : " + readResult);
- } catch(error) {
- console.info("Rpc read from ashmem fail, errorCode " + error.code);
- console.info("Rpc read from ashmem fail, errorMessage " + error.message);
- }
從API version 9 開始不再維護(hù),建議使用readAshmem類替代。
readFromAshmem(size: number, offset: number): number[]
從此Ashmem對象關(guān)聯(lián)的共享文件中讀取數(shù)據(jù)。
系統(tǒng)能力:SystemCapability.Communication.IPC.Core
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
size | number | 是 | 要讀取的數(shù)據(jù)的大小。 |
offset | number | 是 | 要讀取的數(shù)據(jù)在此Ashmem對象關(guān)聯(lián)的內(nèi)存區(qū)間的起始位置 |
返回值:
類型 | 說明 |
---|---|
number[] | 返回讀取的數(shù)據(jù)。 |
示例:
- let ashmem = rpc.Ashmem.createAshmem("ashmem", 1024*1024);
- let mapResult = ashmem.mapReadAndWriteAshmem();
- console.info("RpcTest map ashmem result is " + mapResult);
- var ByteArrayVar = [1, 2, 3, 4, 5];
- let writeResult = ashmem.writeToAshmem(ByteArrayVar, 5, 0);
- console.log("RpcTest: write to Ashmem result is : " + writeResult);
- let readResult = ashmem.readFromAshmem(5, 0);
- console.log("RpcTest: read to Ashmem result is : " + readResult);
更多建議: