RPC通信
本模塊提供進程間通信能力,包括設備內的進程間通信(IPC)和設備間的進程間通信(RPC),前者基于Binder驅動,后者基于軟總線驅動。
說明: 本模塊首批接口從API version 7開始支持。后續版本的新增接口,采用上角標單獨標記接口的起始版本。 開發前請熟悉鴻蒙開發指導文檔 :[
gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md
]
導入模塊
import rpc from '@ohos.rpc';
MessageParcel
該類提供讀寫基礎類型及數組、IPC對象、接口描述符和自定義序列化對象的方法。
create
create(): MessageParcel
靜態方法,創建MessageParcel對象。
系統能力 :SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
MessageParcel | 返回創建的MessageParcel對象。 |
示例:
let data = rpc.MessageParcel.create();
console.log("RpcClient: data is " + data);
reclaim
reclaim(): void
釋放不再使用的MessageParcel對象。
系統能力 :SystemCapability.Communication.IPC.Core
示例:
let reply = rpc.MessageParcel.create();
reply.reclaim();
writeRemoteObject
writeRemoteObject(object: [IRemoteObject]): boolean
序列化遠程對象并將其寫入MessageParcel對象。
系統能力 :SystemCapability.Communication.IPC.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
object | [IRemoteObject] | 是 | 要序列化并寫入MessageParcel的遠程對象。 |
返回值:
類型 | 說明 |
---|---|
boolean | 如果操作成功,則返回true;否則返回false。 |
示例:
class MyDeathRecipient {
onRemoteDied() {
console.log("server died");
}
}
class TestRemoteObject extends rpc.RemoteObject {
constructor(descriptor) {
super(descriptor);
}
addDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
return true;
}
removeDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
return true;
}
isObjectDead(): boolean {
return false;
}
}
let data = rpc.MessageParcel.create();
let testRemoteObject = new TestRemoteObject("testObject");
data.writeRemoteObject(testRemoteObject);
readRemoteObject
readRemoteObject(): IRemoteObject
從MessageParcel讀取遠程對象。此方法用于反序列化MessageParcel對象以生成IRemoteObject。遠程對象按寫入MessageParcel的順序讀取。
系統能力 :SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
[IRemoteObject] | 讀取到的遠程對象。 |
示例:
class MyDeathRecipient {
onRemoteDied() {
console.log("server died");
}
}
class TestRemoteObject extends rpc.RemoteObject {
constructor(descriptor) {
super(descriptor);
}
addDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
return true;
}
removeDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
return true;
}
isObjectDead(): boolean {
return false;
}
}
let data = rpc.MessageParcel.create();
let testRemoteObject = new TestRemoteObject("testObject");
data.writeRemoteObject(testRemoteObject);
let proxy = data.readRemoteObject();
writeInterfaceToken
writeInterfaceToken(token: string): boolean
將接口描述符寫入MessageParcel對象。
系統能力 :SystemCapability.Communication.IPC.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
token | string | 是 | 字符串類型描述符。 |
返回值:
類型 | 說明 |
---|---|
boolean | 如果操作成功,則返回true;否則返回false。 |
示例:
let data = rpc.MessageParcel.create();
let result = data.writeInterfaceToken("aaa");
console.log("RpcServer: writeInterfaceToken is " + result);
readInterfaceToken
readInterfaceToken(): string
從MessageParcel中讀取接口描述符。接口描述符按寫入MessageParcel的順序讀取。
系統能力 :SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
string | 返回讀取到的接口描述符。 |
示例:
class Stub extends rpc.RemoteObject {
onRemoteRequest(code, data, reply, option) {
let interfaceToken = data.readInterfaceToken();
console.log("RpcServer: interfaceToken is " + interfaceToken);
return true;
}
}
getSize
getSize(): number
獲取當前MessageParcel的數據大小。
系統能力 :SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number | 獲取的MessageParcel的數據大小。以字節為單位。 |
示例:
let data = rpc.MessageParcel.create();
let size = data.getSize();
console.log("RpcClient: size is " + size);
getCapacity
getCapacity(): number
獲取當前MessageParcel的容量。
系統能力 :SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number | 獲取的MessageParcel的容量大小。以字節為單位。 |
示例:
let data = rpc.MessageParcel.create();
let result = data.getCapacity();
console.log("RpcClient: capacity is " + result);
setSize
setSize(size: number): boolean
設置MessageParcel實例中包含的數據大小。
系統能力 :SystemCapability.Communication.IPC.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
size | number | 是 | MessageParcel實例的數據大小。以字節為單位。 |
返回值:
類型 | 說明 |
---|---|
boolean | 設置成功返回true,否則返回false。 |
示例:
let data = rpc.MessageParcel.create();
let setSize = data.setSize(16);
console.log("RpcClient: setSize is " + setSize);
setCapacity
setCapacity(size: number): boolean
設置MessageParcel實例的存儲容量。
系統能力 :SystemCapability.Communication.IPC.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
size | number | 是 | MessageParcel實例的存儲容量。以字節為單位。 |
返回值:
類型 | 說明 |
---|---|
boolean | 設置成功返回true,否則返回false。 |
示例:
let data = rpc.MessageParcel.create();
let result = data.setCapacity(100);
console.log("RpcClient: setCapacity is " + result);
getWritableBytes
getWritableBytes(): number
獲取MessageParcel的可寫字節空間。
系統能力 :SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number | 獲取到的MessageParcel的可寫字節空間。以字節為單位。 |
示例:
class Stub extends rpc.RemoteObject {
onRemoteRequest(code, data, reply, option) {
let getWritableBytes = data.getWritableBytes();
console.log("RpcServer: getWritableBytes is " + getWritableBytes);
return true;
}
}
getReadableBytes
getReadableBytes(): number
獲取MessageParcel的可讀字節空間。
系統能力 :SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number | 獲取到的MessageParcel的可讀字節空間。以字節為單位。 |
示例:
class Stub extends rpc.RemoteObject {
onRemoteRequest(code, data, reply, option) {
let result = data.getReadableBytes();
console.log("RpcServer: getReadableBytes is " + result);
return true;
}
}
getReadPosition
getReadPosition(): number
獲取MessageParcel的讀位置。
系統能力 :SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number | 返回MessageParcel實例中的當前讀取位置。 |
示例:
let data = rpc.MessageParcel.create();
let readPos = data.getReadPosition();
console.log("RpcClient: readPos is " + readPos);
getWritePosition
getWritePosition(): number
獲取MessageParcel的寫位置。
系統能力 :SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number | 返回MessageParcel實例中的當前寫入位置。 |
示例:
let data = rpc.MessageParcel.create();
data.writeInt(10);
let bwPos = data.getWritePosition();
console.log("RpcClient: bwPos is " + bwPos);
rewindRead
rewindRead(pos: number): boolean
重新偏移讀取位置到指定的位置。
系統能力 :SystemCapability.Communication.IPC.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
pos | number | 是 | 開始讀取數據的目標位置。 |
返回值:
類型 | 說明 |
---|---|
boolean | 如果讀取位置發生更改,則返回true;否則返回false。 |
示例:
let data = rpc.MessageParcel.create();
data.writeInt(12);
data.writeString("parcel");
let number = data.readInt();
console.log("RpcClient: number is " + number);
data.rewindRead(0);
let number2 = data.readInt();
console.log("RpcClient: rewindRead is " + number2);
rewindWrite
rewindWrite(pos: number): boolean
重新偏移寫位置到指定的位置。
系統能力 :SystemCapability.Communication.IPC.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
pos | number | 是 | 開始寫入數據的目標位置。 |
返回值:
類型 | 說明 |
---|---|
boolean | 如果寫入位置更改,則返回true;否則返回false。 |
示例:
let data = rpc.MessageParcel.create();
data.writeInt(4);
data.rewindWrite(0);
data.writeInt(5);
let number = data.readInt();
console.log("RpcClient: rewindWrite is: " + number);
writeByte
writeByte(val: number): boolean
將字節值寫入MessageParcel實例。
系統能力 :SystemCapability.Communication.IPC.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
val | number | 是 | 要寫入的字節值。 |
返回值:
類型 | 說明 |
---|---|
boolean | 寫入返回成功,否則返回false。 |
示例:
let data = rpc.MessageParcel.create();
let result = data.writeByte(2);
console.log("RpcClient: writeByte is: " + result);
readByte
readByte(): number
從MessageParcel實例讀取字節值。
系統能力 :SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number | 返回字節值。 |
示例:
let data = rpc.MessageParcel.create();
let result = data.writeByte(2);
console.log("RpcClient: writeByte is: " + result);
let ret = data.readByte();
console.log("RpcClient: readByte is: " + ret);
writeShort
writeShort(val: number): boolean
將短整數值寫入MessageParcel實例。
系統能力 :SystemCapability.Communication.IPC.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
val | number | 是 | 要寫入的短整數值。 |
返回值:
類型 | 說明 |
---|---|
boolean | 寫入返回true,否則返回false。 |
示例:
let data = rpc.MessageParcel.create();
let result = data.writeShort(8);
console.log("RpcClient: writeShort is: " + result);
readShort
readShort(): number
從MessageParcel實例讀取短整數值。
系統能力 :SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number | 返回短整數值。 |
示例:
let data = rpc.MessageParcel.create();
let result = data.writeShort(8);
console.log("RpcClient: writeShort is: " + result);
let ret = data.readShort();
console.log("RpcClient: readShort is: " + ret);
writeInt
writeInt(val: number): boolean
將整數值寫入MessageParcel實例。
系統能力 :SystemCapability.Communication.IPC.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
val | number | 是 | 要寫入的整數值。 |
返回值:
類型 | 說明 |
---|---|
boolean | 寫入返回成功,否則返回false。 |
示例:
let data = rpc.MessageParcel.create();
let result = data.writeInt(10);
console.log("RpcClient: writeInt is " + result);
readInt
readInt(): number
從MessageParcel實例讀取整數值。
系統能力 :SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number | 返回整數值。 |
示例:
let data = rpc.MessageParcel.create();
let result = data.writeInt(10);
console.log("RpcClient: writeInt is " + result);
let ret = data.readInt();
console.log("RpcClient: readInt is " + ret);
writeLong
writeLong(val: number): boolean
將長整數值寫入MessageParcel實例。
系統能力 :SystemCapability.Communication.IPC.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
val | number | 是 | 要寫入的長整數值 |
返回值:
類型 | 說明 |
---|---|
boolean | 寫入成功返回true,否則返回false。 |
示例:
let data = rpc.MessageParcel.create();
let result = data.writeLong(10000);
console.log("RpcClient: writeLong is " + result);
readLong
readLong(): number
從MessageParcel實例中讀取長整數值。
系統能力 :SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number | 返回長整數值。 |
示例:
let data = rpc.MessageParcel.create();
let result = data.writeLong(10000);
console.log("RpcClient: writeLong is " + result);
let ret = data.readLong();
console.log("RpcClient: readLong is " + ret);
writeFloat
writeFloat(val: number): boolean
將浮點值寫入MessageParcel實例。
系統能力 :SystemCapability.Communication.IPC.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
val | number | 是 | 要寫入的浮點值。 |
返回值:
類型 | 說明 |
---|---|
boolean | 寫入成功返回true,否則返回false。 |
示例:
let data = rpc.MessageParcel.create();
let result = data.writeFloat(1.2);
console.log("RpcClient: writeFloat is " + result);
readFloat
readFloat(): number
從MessageParcel實例中讀取浮點值。
系統能力 :SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number | 返回浮點值。 |
示例:
let data = rpc.MessageParcel.create();
let result = data.writeFloat(1.2);
console.log("RpcClient: writeFloat is " + result);
let ret = data.readFloat();
console.log("RpcClient: readFloat is " + ret);
writeDouble
writeDouble(val: number): boolean
將雙精度浮點值寫入MessageParcel實例。
系統能力 :SystemCapability.Communication.IPC.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
val | number | 是 | 要寫入的雙精度浮點值。 |
返回值:
類型 | 說明 |
---|---|
boolean | 寫入成功返回true,否則返回false。 |
示例:
let data = rpc.MessageParcel.create();
let result = data.writeDouble(10.2);
console.log("RpcClient: writeDouble is " + result);
readDouble
readDouble(): number
從MessageParcel實例讀取雙精度浮點值。
系統能力 :SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number | 返回雙精度浮點值。 |
示例:
let data = rpc.MessageParcel.create();
let result = data.writeDouble(10.2);
console.log("RpcClient: writeDouble is " + result);
let ret = data.readDouble();
console.log("RpcClient: readDouble is " + ret);
writeBoolean
writeBoolean(val: boolean): boolean
將布爾值寫入MessageParcel實例。
系統能力 :SystemCapability.Communication.IPC.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
val | boolean | 是 | 要寫入的布爾值。 |
返回值:
類型 | 說明 |
---|---|
boolean | 寫入成功返回true,否則返回false。 |
示例:
let data = rpc.MessageParcel.create();
let result = data.writeBoolean(false);
console.log("RpcClient: writeBoolean is " + result);
readBoolean
readBoolean(): boolean
從MessageParcel實例讀取布爾值。
系統能力 :SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
boolean | 返回讀取到的布爾值。 |
示例:
let data = rpc.MessageParcel.create();
let result = data.writeBoolean(false);
console.log("RpcClient: writeBoolean is " + result);
let ret = data.readBoolean();
console.log("RpcClient: readBoolean is " + ret);
writeChar
writeChar(val: number): boolean
將單個字符值寫入MessageParcel實例。
系統能力 :SystemCapability.Communication.IPC.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
val | number | 是 | 要寫入的單個字符值。 |
返回值:
類型 | 說明 |
---|---|
boolean | 寫入返回true,否則返回false。 |
示例:
let data = rpc.MessageParcel.create();
let result = data.writeChar(97);
console.log("RpcClient: writeChar is " + result);
readChar
readChar(): number
從MessageParcel實例中讀取單個字符值。
系統能力 :SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number | 返回單個字符值。 |
示例:
let data = rpc.MessageParcel.create();
let result = data.writeChar(97);
console.log("RpcClient: writeChar is " + result);
let ret = data.readChar();
console.log("RpcClient: readChar is " + ret);
writeString
writeString(val: string): boolean
將字符串值寫入MessageParcel實例。
系統能力 :SystemCapability.Communication.IPC.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
val | string | 是 | 要寫入的字符串值,其長度應小于40960字節。 |
返回值:
類型 | 說明 |
---|---|
boolean | 寫入成功返回true,否則返回false。 |
示例:
let data = rpc.MessageParcel.create();
let result = data.writeString('abc');
console.log("RpcClient: writeString is " + result);
readString
readString(): string
從MessageParcel實例讀取字符串值。
系統能力 :SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
string | 返回字符串值。 |
示例:
let data = rpc.MessageParcel.create();
let result = data.writeString('abc');
console.log("RpcClient: writeString is " + result);
let ret = data.readString();
console.log("RpcClient: readString is " + ret);
writeSequenceable
writeSequenceable(val: Sequenceable): boolean
將自定義序列化對象寫入MessageParcel實例。
系統能力 :SystemCapability.Communication.IPC.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
val | [Sequenceable] | 是 | 要寫入的可序列對象。 |
返回值:
類型 | 說明 |
---|---|
boolean | 寫入成功返回true,否則返回false。 |
示例:
class MySequenceable {
num: number;
str: string;
constructor(num, str) {
this.num = num;
this.str = str;
}
marshalling(messageParcel) {
messageParcel.writeInt(this.num);
messageParcel.writeString(this.str);
return true;
}
unmarshalling(messageParcel) {
this.num = messageParcel.readInt();
this.str = messageParcel.readString();
return true;
}
}
let sequenceable = new MySequenceable(1, "aaa");
let data = rpc.MessageParcel.create();
let result = data.writeSequenceable(sequenceable);
console.log("RpcClient: writeSequenceable is " + result);
readSequenceable
readSequenceable(dataIn: Sequenceable) : boolean
從MessageParcel實例中讀取成員變量到指定的對象(dataIn)。
系統能力 :SystemCapability.Communication.IPC.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
dataIn | [Sequenceable] | 是 | 需要從MessageParcel讀取成員變量的對象。 |
返回值:
類型 | 說明 |
---|---|
boolean | 如果反序列成功,則返回true;否則返回false。 |
示例:
class MySequenceable {
num: number;
str: string;
constructor(num, str) {
this.num = num;
this.str = str;
}
marshalling(messageParcel) {
messageParcel.writeInt(this.num);
messageParcel.writeString(this.str);
return true;
}
unmarshalling(messageParcel) {
this.num = messageParcel.readInt();
this.str = messageParcel.readString();
return true;
}
}
let sequenceable = new MySequenceable(1, "aaa");
let data = rpc.MessageParcel.create();
let result = data.writeSequenceable(sequenceable);
console.log("RpcClient: writeSequenceable is " + result);
let ret = new MySequenceable(0, "");
let result2 = data.readSequenceable(ret);
console.log("RpcClient: writeSequenceable is " + result2);
writeByteArray
writeByteArray(byteArray: number[]): boolean
將字節數組寫入MessageParcel實例。
系統能力 :SystemCapability.Communication.IPC.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
byteArray | number[] | 是 | 要寫入的字節數組。 |
返回值:
類型 | 說明 |
---|---|
boolean | 寫入成功返回true,否則返回false。 |
示例:
let data = rpc.MessageParcel.create();
let ByteArrayVar = [1, 2, 3, 4, 5];
let result = data.writeByteArray(ByteArrayVar);
console.log("RpcClient: writeByteArray is " + result);
readByteArray
readByteArray(dataIn: number[]) : void
從MessageParcel實例讀取字節數組。
系統能力 :SystemCapability.Communication.IPC.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
dataIn | number[] | 是 | 要讀取的字節數組。 |
示例:
let data = rpc.MessageParcel.create();
let ByteArrayVar = [1, 2, 3, 4, 5];
let result = data.writeByteArray(ByteArrayVar);
console.log("RpcClient: writeByteArray is " + result);
let array = new Array(5);
data.readByteArray(array);
readByteArray
readByteArray(): number[]
從MessageParcel實例中讀取字節數組。
系統能力 :SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number[] | 返回字節數組。 |
示例:
let data = rpc.MessageParcel.create();
let ByteArrayVar = [1, 2, 3, 4, 5];
let result = data.writeByteArray(ByteArrayVar);
console.log("RpcClient: writeByteArray is " + result);
let array = data.readByteArray();
console.log("RpcClient: readByteArray is " + array);
writeShortArray
writeShortArray(shortArray: number[]): boolean
將短整數數組寫入MessageParcel實例。
系統能力 :SystemCapability.Communication.IPC.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
shortArray | number[] | 是 | 要寫入的短整數數組。 |
返回值:
類型 | 說明 |
---|---|
boolean | 寫入返回true,否則返回false。 |
示例:
let data = rpc.MessageParcel.create();
let result = data.writeShortArray([11, 12, 13]);
console.log("RpcClient: writeShortArray is " + result);
readShortArray
readShortArray(dataIn: number[]) : void
從MessageParcel實例中讀取短整數數組。
系統能力 :SystemCapability.Communication.IPC.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
dataIn | number[] | 是 | 要讀取的短整數數組。 |
示例:
let data = rpc.MessageParcel.create();
let result = data.writeShortArray([11, 12, 13]);
console.log("RpcClient: writeShortArray is " + result);
let array = new Array(3);
data.readShortArray(array);
readShortArray
readShortArray(): number[]
從MessageParcel實例中讀取短整數數組。
系統能力 :SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number[] | 返回短整數數組。 |
示例:
let data = rpc.MessageParcel.create();
let result = data.writeShortArray([11, 12, 13]);
console.log("RpcClient: writeShortArray is " + result);
let array = data.readShortArray();
console.log("RpcClient: readShortArray is " + array);
writeIntArray
writeIntArray(intArray: number[]): boolean
將整數數組寫入MessageParcel實例。
系統能力 :SystemCapability.Communication.IPC.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
intArray | number[] | 是 | 要寫入的整數數組。 |
返回值:
類型 | 說明 |
---|---|
boolean | 寫入返回true,否則返回false。 |
示例:
let data = rpc.MessageParcel.create();
let result = data.writeIntArray([100, 111, 112]);
console.log("RpcClient: writeIntArray is " + result);
readIntArray
readIntArray(dataIn: number[]) : void
從MessageParcel實例中讀取整數數組。
系統能力 :SystemCapability.Communication.IPC.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
dataIn | number[] | 是 | 要讀取的整數數組。 |
示例:
let data = rpc.MessageParcel.create();
let result = data.writeIntArray([100, 111, 112]);
console.log("RpcClient: writeIntArray is " + result);
let array = new Array(3);
data.readIntArray(array);
readIntArray
readIntArray(): number[]
從MessageParcel實例中讀取整數數組。
系統能力 :SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number[] | 返回整數數組。 |
示例:
let data = rpc.MessageParcel.create();
let result = data.writeIntArray([100, 111, 112]);
console.log("RpcClient: writeIntArray is " + result);
let array = data.readIntArray();
console.log("RpcClient: readIntArray is " + array);
writeLongArray
writeLongArray(longArray: number[]): boolean
將長整數數組寫入MessageParcel實例。
系統能力 :SystemCapability.Communication.IPC.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
longArray | number[] | 是 | 要寫入的長整數數組。 |
返回值:
類型 | 說明 |
---|---|
boolean | 寫入返回true,否則返回false。 |
示例:
let data = rpc.MessageParcel.create();
let result = data.writeLongArray([1111, 1112, 1113]);
console.log("RpcClient: writeLongArray is " + result);
readLongArray
readLongArray(dataIn: number[]) : void
從MessageParcel實例讀取長整數數組。
系統能力 :SystemCapability.Communication.IPC.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
dataIn | number[] | 是 | 要讀取的長整數數組。 |
示例:
let data = rpc.MessageParcel.create();
let result = data.writeLongArray([1111, 1112, 1113]);
console.log("RpcClient: writeLongArray is " + result);
let array = new Array(3);
data.readLongArray(array);
readLongArray
readLongArray(): number[]
從MessageParcel實例中讀取長整數數組。
系統能力 :SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number[] | 返回長整數數組。 |
示例:
let data = rpc.MessageParcel.create();
let result = data.writeLongArray([1111, 1112, 1113]);
console.log("RpcClient: writeLongArray is " + result);
let array = data.readLongArray();
console.log("RpcClient: readLongArray is " + array);
writeFloatArray
writeFloatArray(floatArray: number[]): boolean
將浮點數組寫入MessageParcel實例。
系統能力 :SystemCapability.Communication.IPC.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
floatArray | number[] | 是 | 要寫入的浮點數組。 |
返回值:
類型 | 說明 |
---|---|
boolean | 寫入返回true,否則返回false。 |
示例:
let data = rpc.MessageParcel.create();
let result = data.writeFloatArray([1.2, 1.3, 1.4]);
console.log("RpcClient: writeFloatArray is " + result);
readFloatArray
readFloatArray(dataIn: number[]) : void
從MessageParcel實例中讀取浮點數組。
系統能力 :SystemCapability.Communication.IPC.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
dataIn | number[] | 是 | 要讀取的浮點數組。 |
示例:
let data = rpc.MessageParcel.create();
let result = data.writeFloatArray([1.2, 1.3, 1.4]);
console.log("RpcClient: writeFloatArray is " + result);
let array = new Array(3);
data.readFloatArray(array);
readFloatArray
readFloatArray(): number[]
從MessageParcel實例中讀取浮點數組。
系統能力 :SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number[] | 返回浮點數組。 |
示例:
let data = rpc.MessageParcel.create();
let result = data.writeFloatArray([1.2, 1.3, 1.4]);
console.log("RpcClient: writeFloatArray is " + result);
let array = data.readFloatArray();
console.log("RpcClient: readFloatArray is " + array);
writeDoubleArray
writeDoubleArray(doubleArray: number[]): boolean
將雙精度浮點數組寫入MessageParcel實例。
系統能力 :SystemCapability.Communication.IPC.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
doubleArray | number[] | 是 | 要寫入的雙精度浮點數組。 |
返回值:
類型 | 說明 |
---|---|
boolean | 寫入返回true,否則返回false。 |
示例:
let data = rpc.MessageParcel.create();
let result = data.writeDoubleArray([11.1, 12.2, 13.3]);
console.log("RpcClient: writeDoubleArray is " + result);
readDoubleArray
readDoubleArray(dataIn: number[]) : void
從MessageParcel實例中讀取雙精度浮點數組。
系統能力 :SystemCapability.Communication.IPC.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
dataIn | number[] | 是 | 要讀取的雙精度浮點數組。 |
示例:
let data = rpc.MessageParcel.create();
let result = data.writeDoubleArray([11.1, 12.2, 13.3]);
console.log("RpcClient: writeDoubleArray is " + result);
let array = new Array(3);
data.readDoubleArray(array);
readDoubleArray
readDoubleArray(): number[]
從MessageParcel實例讀取雙精度浮點數組。
系統能力 :SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number[] | 返回雙精度浮點數組。 |
示例:
let data = rpc.MessageParcel.create();
let result = data.writeDoubleArray([11.1, 12.2, 13.3]);
console.log("RpcClient: writeDoubleArray is " + result);
let array = data.readDoubleArray();
console.log("RpcClient: readDoubleArray is " + array);
writeBooleanArray
writeBooleanArray(booleanArray: boolean[]): boolean
將布爾數組寫入MessageParcel實例。
系統能力 :SystemCapability.Communication.IPC.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
booleanArray | boolean[] | 是 | 要寫入的布爾數組。 |
返回值:
類型 | 說明 |
---|---|
boolean | 寫入成功返回true,否則返回false。 |
示例:
let data = rpc.MessageParcel.create();
let result = data.writeBooleanArray([false, true, false]);
console.log("RpcClient: writeBooleanArray is " + result);
readBooleanArray
readBooleanArray(dataIn: boolean[]) : void
從MessageParcel實例中讀取布爾數組。
系統能力 :SystemCapability.Communication.IPC.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
dataIn | boolean[] | 是 | 要讀取的布爾數組。 |
示例:
let data = rpc.MessageParcel.create();
let result = data.writeBooleanArray([false, true, false]);
console.log("RpcClient: writeBooleanArray is " + result);
let array = new Array(3);
data.readBooleanArray(array);
readBooleanArray
readBooleanArray(): boolean[]
從MessageParcel實例中讀取布爾數組。
系統能力 :SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
boolean[] | 返回布爾數組。 |
let data = rpc.MessageParcel.create();
let result = data.writeBooleanArray([false, true, false]);
console.log("RpcClient: writeBooleanArray is " + result);
let array = data.readBooleanArray();
console.log("RpcClient: readBooleanArray is " + array);
writeCharArray
writeCharArray(charArray: number[]): boolean
將單個字符數組寫入MessageParcel實例。
系統能力 :SystemCapability.Communication.IPC.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
charArray | number[] | 是 | 要寫入的單個字符數組。 |
返回值:
類型 | 說明 |
---|---|
boolean | 寫入成功返回true,否則返回false。 |
示例:
let data = rpc.MessageParcel.create();
let result = data.writeCharArray([97, 98, 88]);
console.log("RpcClient: writeCharArray is " + result);
readCharArray
readCharArray(dataIn: number[]) : void
從MessageParcel實例中讀取單個字符數組。
系統能力 :SystemCapability.Communication.IPC.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
dataIn | number[] | 是 | 要讀取的單個字符數組。 |
示例:
let data = rpc.MessageParcel.create();
let result = data.writeCharArray([97, 98, 99]);
console.log("RpcClient: writeCharArray is " + result);
let array = new Array(3);
data.readCharArray(array);
readCharArray
readCharArray(): number[]
從MessageParcel實例讀取單個字符數組。
系統能力 :SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number[] | 返回單個字符數組。 |
示例:
let data = rpc.MessageParcel.create();
let result = data.writeCharArray([97, 98, 99]);
console.log("RpcClient: writeCharArray is " + result);
let array = data.readCharArray();
console.log("RpcClient: readCharArray is " + array);
writeStringArray
writeStringArray(stringArray: string[]): boolean
將字符串數組寫入MessageParcel實例。
系統能力 :SystemCapability.Communication.IPC.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
stringArray | string[] | 是 | 要寫入的字符串數組,數組單個元素的長度應小于40960字節。 |
返回值:
類型 | 說明 |
---|---|
boolean | 寫入成功返回true,否則返回false。 |
示例:
let data = rpc.MessageParcel.create();
let result = data.writeStringArray(["abc", "def"]);
console.log("RpcClient: writeStringArray is " + result);
readStringArray
readStringArray(dataIn: string[]) : void
從MessageParcel實例讀取字符串數組。
系統能力 :SystemCapability.Communication.IPC.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
dataIn | string[] | 是 | 要讀取的字符串數組。 |
示例:
let data = rpc.MessageParcel.create();
let result = data.writeStringArray(["abc", "def"]);
console.log("RpcClient: writeStringArray is " + result);
let array = new Array(2);
data.readStringArray(array);
readStringArray
readStringArray(): string[]
從MessageParcel實例讀取字符串數組。
系統能力 :SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
string[] | 返回字符串數組。 |
示例:
let data = rpc.MessageParcel.create();
let result = data.writeStringArray(["abc", "def"]);
console.log("RpcClient: writeStringArray is " + result);
let array = data.readStringArray();
console.log("RpcClient: readStringArray is " + array);
writeNoException8+
writeNoException(): void
向MessageParcel寫入“指示未發生異常”的信息。
系統能力 :SystemCapability.Communication.IPC.Core
示例:
class MyDeathRecipient {
onRemoteDied() {
console.log("server died");
}
}
class TestRemoteObject extends rpc.RemoteObject {
constructor(descriptor) {
super(descriptor);
}
addDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
return true;
}
removeDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
return true;
}
isObjectDead(): boolean {
return false;
}
onRemoteRequest(code, data, reply, option) {
if (code === 1) {
console.log("RpcServer: onRemoteRequest called");
reply.writeNoException();
return true;
} else {
console.log("RpcServer: unknown code: " + code);
return false;
}
}
}
readException8+
readException(): void
從MessageParcel中讀取異常。
系統能力 :SystemCapability.Communication.IPC.Core
示例:
import FA from "@ohos.ability.featureAbility";
let proxy;
let connect = {
onConnect: function(elementName, remoteProxy) {
console.log("RpcClient: js onConnect called.");
proxy = remoteProxy;
},
onDisconnect: function(elementName) {
console.log("RpcClient: onDisconnect");
},
onFailed: function() {
console.log("RpcClient: onFailed");
}
};
let want = {
"bundleName": "com.ohos.server",
"abilityName": "com.ohos.server.MainAbility",
};
FA.connectAbility(want, connect);
let option = new rpc.MessageOption();
let data = rpc.MessageParcel.create();
let reply = rpc.MessageParcel.create();
data.writeInt(1);
data.writeString("hello");
proxy.sendRequest(1, data, reply, option)
.then(function(errCode) {
if (errCode === 0) {
console.log("sendRequest got result");
reply.readException();
let msg = reply.readString();
console.log("RPCTest: reply msg: " + msg);
} else {
console.log("RPCTest: sendRequest failed, errCode: " + errCode);
}
}).catch(function(e) {
console.log("RPCTest: sendRequest got exception: " + e.message);
}).finally (() = > {
console.log("RPCTest: sendRequest ends, reclaim parcel");
data.reclaim();
reply.reclaim();
});
writeSequenceableArray
writeSequenceableArray(sequenceableArray: Sequenceable[]): boolean
將可序列化對象數組寫入MessageParcel實例。
系統能力 :SystemCapability.Communication.IPC.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
sequenceableArray | Sequenceable[] | 是 | 要寫入的可序列化對象數組。 |
返回值:
類型 | 說明 |
---|---|
boolean | 寫入成功返回true,否則返回false。 |
示例:
class MySequenceable {
num: number;
str: string;
constructor(num, str) {
this.num = num;
this.str = str;
}
marshalling(messageParcel) {
messageParcel.writeInt(this.num);
messageParcel.writeString(this.str);
return true;
}
unmarshalling(messageParcel) {
this.num = messageParcel.readInt();
this.str = messageParcel.readString();
return true;
}
}
let sequenceable = new MySequenceable(1, "aaa");
let sequenceable2 = new MySequenceable(2, "bbb");
let sequenceable3 = new MySequenceable(3, "ccc");
let a = [sequenceable, sequenceable2, sequenceable3];
let data = rpc.MessageParcel.create();
let result = data.writeSequenceableArray(a);
console.log("RpcClient: writeSequenceableArray is " + result);
readSequenceableArray8+
readSequenceableArray(sequenceableArray: Sequenceable[]): void
從MessageParcel實例讀取可序列化對象數組。
系統能力 :SystemCapability.Communication.IPC.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
sequenceableArray | Sequenceable[] | 是 | 要讀取的可序列化對象數組。 |
示例:
class MySequenceable {
num: number;
str: string;
constructor(num, str) {
this.num = num;
this.str = str;
}
marshalling(messageParcel) {
messageParcel.writeInt(this.num);
messageParcel.writeString(this.str);
return true;
}
unmarshalling(messageParcel) {
this.num = messageParcel.readInt();
this.str = messageParcel.readString();
return true;
}
}
let sequenceable = new MySequenceable(1, "aaa");
let sequenceable2 = new MySequenceable(2, "bbb");
let sequenceable3 = new MySequenceable(3, "ccc");
let a = [sequenceable, sequenceable2, sequenceable3];
let data = rpc.MessageParcel.create();
let result = data.writeSequenceableArray(a);
console.log("RpcClient: writeSequenceableArray is " + result);
let b = [new MySequenceable(0, ""), new MySequenceable(0, ""), new MySequenceable(0, "")];
data.readSequenceableArray(b);
writeRemoteObjectArray8+
writeRemoteObjectArray(objectArray: IRemoteObject[]): boolean
將IRemoteObject對象數組寫入MessageParcel。
系統能力 :SystemCapability.Communication.IPC.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
objectArray | IRemoteObject[] | 是 | 要寫入MessageParcel的IRemoteObject對象數組。 |
返回值:
類型 | 說明 |
---|---|
boolean | 如果IRemoteObject對象數組成功寫入MessageParcel,則返回true;如果對象為null或數組寫入MessageParcel失敗,則返回false。 |
示例:
class MyDeathRecipient {
onRemoteDied() {
console.log("server died");
}
}
class TestRemoteObject extends rpc.RemoteObject {
constructor(descriptor) {
super(descriptor);
this.attachLocalInterface(this, descriptor);
}
addDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
return true;
}
removeDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
return true;
}
isObjectDead(): boolean {
return false;
}
asObject(): rpc.IRemoteObject {
return this;
}
}
let a = [new TestRemoteObject("testObject1"), new TestRemoteObject("testObject2"), new TestRemoteObject("testObject3")];
let data = rpc.MessageParcel.create();
let result = data.writeRemoteObjectArray(a);
console.log("RpcClient: writeRemoteObjectArray is " + result);
[](https://gitee.com/openharmony/docs/blob/OpenHarmony-3.2-Beta1/zh-cn/application-dev/reference/apis/js-apis-rpc.md#readremoteobjectarray8)readRemoteObjectArray8+
readRemoteObjectArray(objects: IRemoteObject[]): void
從MessageParcel讀取IRemoteObject對象數組。
系統能力 :SystemCapability.Communication.IPC.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
objects | IRemoteObject[] | 是 | 從MessageParcel讀取的IRemoteObject對象數組。 |
示例:
class MyDeathRecipient {
onRemoteDied() {
console.log("server died");
}
}
class TestRemoteObject extends rpc.RemoteObject {
constructor(descriptor) {
super(descriptor);
this.attachLocalInterface(this, descriptor);
}
addDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
return true;
}
removeDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
return true;
}
isObjectDead(): boolean {
return false;
}
asObject(): rpc.IRemoteObject {
return this;
}
}
let a = [new TestRemoteObject("testObject1"), new TestRemoteObject("testObject2"), new TestRemoteObject("testObject3")];
let data = rpc.MessageParcel.create();
let result = data.writeRemoteObjectArray(a);
let b = new Array(3);
data.readRemoteObjectArray(b);
readRemoteObjectArray8+
readRemoteObjectArray(): IRemoteObject[]
從MessageParcel讀取IRemoteObject對象數組。
系統能力 :SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
IRemoteObject[] | 返回IRemoteObject對象數組。 |
示例:
class MyDeathRecipient {
onRemoteDied() {
console.log("server died");
}
}
class TestRemoteObject extends rpc.RemoteObject {
constructor(descriptor) {
super(descriptor);
this.attachLocalInterface(this, descriptor);
}
addDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
return true;
}
removeDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
return true;
}
isObjectDead(): boolean {
return false;
}
asObject(): rpc.IRemoteObject {
return this;
}
}
let a = [new TestRemoteObject("testObject1"), new TestRemoteObject("testObject2"), new TestRemoteObject("testObject3")];
let data = rpc.MessageParcel.create();
let result = data.writeRemoteObjectArray(a);
console.log("RpcClient: readRemoteObjectArray is " + result);
let b = data.readRemoteObjectArray();
console.log("RpcClient: readRemoteObjectArray is " + b);
closeFileDescriptor8+
static closeFileDescriptor(fd: number): void
關閉給定的文件描述符。
系統能力 :SystemCapability.Communication.IPC.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
fd | number | 是 | 要關閉的文件描述符。 |
示例:
import fileio from '@ohos.fileio';
let filePath = "path/to/file";
let fd = fileio.openSync(filePath, 0o2| 0o100, 0o666);
rpc.MessageParcel.closeFileDescriptor(fd);
dupFileDescriptor8+
static dupFileDescriptor(fd: number) :number
復制給定的文件描述符。
系統能力 :SystemCapability.Communication.IPC.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
fd | number | 是 | 表示已存在的文件描述符。 |
返回值:
類型 | 說明 |
---|---|
number | 返回新的文件描述符。 |
示例:
import fileio from '@ohos.fileio';
let filePath = "path/to/file";
let fd = fileio.openSync(filePath, 0o2| 0o100, 0o666);
let newFd = rpc.MessageParcel.dupFileDescriptor(fd);
containFileDescriptors8+
containFileDescriptors(): boolean
檢查此MessageParcel對象是否包含文件描述符。
系統能力 :SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
boolean | 如果此MessageParcel對象包含文件描述符,則返回true;否則返回false。 |
示例:
import fileio from '@ohos.fileio';
let parcel = new rpc.MessageParcel();
let filePath = "path/to/file";
let r1 = parcel.containFileDescriptors();
let fd = fileio.openSync(filePath, 0o2| 0o100, 0o666);
let writeResult = parcel.writeFileDescriptor(fd);
console.log("RpcTest: parcel writeFd result is : " + writeResult);
let containFD = parcel.containFileDescriptors();
console.log("RpcTest: parcel after write fd containFd result is : " + containFD);
writeFileDescriptor8+
writeFileDescriptor(fd: number): boolean
寫入文件描述符到MessageParcel。
系統能力 :SystemCapability.Communication.IPC.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
fd | number | 是 | 文件描述符。 |
返回值:
類型 | 說明 |
---|---|
boolean | 如果操作成功,則返回true;否則返回false。 |
示例:
import fileio from '@ohos.fileio';
let parcel = new rpc.MessageParcel();
let filePath = "path/to/file";
let fd = fileio.openSync(filePath, 0o2| 0o100, 0o666);
let writeResult = parcel.writeFileDescriptor(fd);
console.log("RpcTest: parcel writeFd result is : " + writeResult);
readFileDescriptor8+
readFileDescriptor(): number
從MessageParcel中讀取文件描述符。
系統能力 :SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number | 返回文件描述符。 |
示例:
import fileio from '@ohos.fileio';
let parcel = new rpc.MessageParcel();
let filePath = "path/to/file";
let fd = fileio.openSync(filePath, 0o2| 0o100, 0o666);
let writeResult = parcel.writeFileDescriptor(fd);
let readFD = parcel.readFileDescriptor();
console.log("RpcTest: parcel read fd is : " + readFD);
writeAshmem8+
writeAshmem(ashmem: Ashmem): boolean
將指定的匿名共享對象寫入此MessageParcel。
系統能力 :SystemCapability.Communication.IPC.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
ashmem | Ashmem | 是 | 要寫入MessageParcel的匿名共享對象。 |
返回值:
類型 | 說明 |
---|---|
boolean | 如果匿名共享對象成功寫入此MessageParcel,則返回true;否則返回false。 |
示例:
let parcel = new rpc.MessageParcel();
let ashmem = rpc.Ashmem.createAshmem("ashmem", 1024);
let isWriteSuccess = parcel.writeAshmem(ashmem);
console.log("RpcTest: write ashmem to result is : " + isWriteSuccess);
readAshmem8+
readAshmem(): Ashmem
從MessageParcel讀取匿名共享對象。
系統能力 :SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
Ashmem | 返回匿名共享對象。 |
示例:
let parcel = new rpc.MessageParcel();
let ashmem = rpc.Ashmem.createAshmem("ashmem", 1024);
let isWriteSuccess = parcel.writeAshmem(ashmem);
console.log("RpcTest: write ashmem to result is : " + isWriteSuccess);
let readAshmem = parcel.readAshmem();
console.log("RpcTest: read ashmem to result is : " + readAshmem);
getRawDataCapacity8+
getRawDataCapacity(): number
獲取MessageParcel可以容納的最大原始數據量。
系統能力 :SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
number | 返回MessageParcel可以容納的最大原始數據量,即128 Mb。 |
示例:
let parcel = new rpc.MessageParcel();
let result = parcel.getRawDataCapacity();
console.log("RpcTest: parcel get RawDataCapacity result is : " + result);
writeRawData8+
writeRawData(rawData: number[], size: number): boolean
將原始數據寫入MessageParcel對象。
系統能力 :SystemCapability.Communication.IPC.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
rawData | number[] | 是 | 要寫入的原始數據。 |
size | number | 是 | 發送的原始數據大小,以字節為單位。 |
返回值:
類型 | 說明 |
---|---|
boolean | 如果操作成功,則返回true;否則返回false。 |
示例:
let parcel = new rpc.MessageParcel();
let arr = [1, 2, 3, 4, 5];
let isWriteSuccess = parcel.writeRawData(arr, arr.length);
console.log("RpcTest: parcel write raw data result is : " + isWriteSuccess);
readRawData8+
readRawData(size: number): number[]
從MessageParcel讀取原始數據。
系統能力 :SystemCapability.Communication.IPC.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
size | number | 是 | 要讀取的原始數據的大小。 |
返回值:
類型 | 說明 |
---|---|
number[] | 返回原始數據(以字節為單位)。 |
示例:
let parcel = new rpc.MessageParcel();
let arr = [1, 2, 3, 4, 5];
let isWriteSuccess = parcel.writeRawData(arr, arr.length);
console.log("RpcTest: parcel write raw data result is : " + isWriteSuccess);
let result = parcel.readRawData(5);
console.log("RpcTest: parcel read raw data result is : " + result);
Sequenceable
在進程間通信(IPC)期間,將類的對象寫入MessageParcel并從MessageParcel中恢復它們。
marshalling
marshalling(dataOut: MessageParcel): boolean
將此可序列對象封送到MessageParcel中。
系統能力 :SystemCapability.Communication.IPC.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
dataOut | [MessageParcel] | 是 | 可序列對象將被封送到的MessageParcel對象。 |
返回值:
類型 | 說明 |
---|---|
boolean | 如果封送成功,則返回true;否則返回false。 |
示例:
class MySequenceable {
num: number;
str: string;
constructor(num, str) {
this.num = num;
this.str = str;
}
marshalling(messageParcel) {
messageParcel.writeInt(this.num);
messageParcel.writeString(this.str);
return true;
}
unmarshalling(messageParcel) {
this.num = messageParcel.readInt();
this.str = messageParcel.readString();
return true;
}
}
let sequenceable = new MySequenceable(1, "aaa");
let data = rpc.MessageParcel.create();
let result = data.writeSequenceable(sequenceable);
console.log("RpcClient: writeSequenceable is " + result);
let ret = new MySequenceable(0, "");
let result2 = data.readSequenceable(ret);
console.log("RpcClient: readSequenceable is " + result2);
unmarshalling
unmarshalling(dataIn: MessageParcel) : boolean
從MessageParcel中解封此可序列對象。
系統能力 :SystemCapability.Communication.IPC.Core
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
dataIn | [MessageParcel] | 是 | 已將可序列對象封送到其中的MessageParcel對象。 |
返回值:
類型 | 說明 |
---|---|
boolean | 如果可序列化成功,則返回true;否則返回false。 |
示例:
class MySequenceable {
num: number;
str: string;
constructor(num, str) {
this.num = num;
this.str = str;
}
marshalling(messageParcel) {
messageParcel.writeInt(this.num);
messageParcel.writeString(this.str);
return true;
}
unmarshalling(messageParcel) {
this.num = messageParcel.readInt();
this.str = messageParcel.readString();
return true;
}
}
let sequenceable = new MySequenceable(1, "aaa");
let data = rpc.MessageParcel.create();
let result = data.writeSequenceable(sequenceable);
console.log("RpcClient: writeSequenceable is " + result);
let ret = new MySequenceable(0, "");
let result2 = data.readSequenceable(ret);
console.log("RpcClient: readSequenceable is " + result2);
IRemoteBroker
遠端對象的代理持有者。用于獲取代理對象。
asObject
asObject(): IRemoteObject
需派生類實現,獲取代理或遠端對象。
系統能力 :SystemCapability.Communication.IPC.Core
返回值:
類型 | 說明 |
---|---|
[IRemoteObject] | 如果調用者是[RemoteObject]對象,則直接返回本身;如果調用者是[RemoteProxy]對象,則返回它的持有者[IRemoteObject]。 |
示例:
class TestAbility extends rpc.RemoteObject {
asObject() {
return this;
}
}
示例:
class TestProxy {
remote: rpc.RemoteObject;
constructor(remote) {
this.remote = remote;
}
asObject() {
return this.remote;
}
}
DeathRecipient
用于訂閱遠端對象的死亡通知。當被訂閱該通知的遠端對象死亡時,本端可收到消息,調用[onRemoteDied]接口。遠端對象死亡可以為遠端對象所在進程死亡,遠端對象所在設備關機或重啟,當遠端對象與本端對象屬于不同設備時,也可為遠端對象離開組網時。
onRemoteDied
onRemoteDied(): void
HarmonyOS與OpenHarmony鴻蒙文檔籽料:mau123789是v直接拿
在成功添加死亡通知訂閱后,當遠端對象死亡時,將自動調用本方法。
系統能力 :SystemCapability.Communication.IPC.Core
示例:
class MyDeathRecipient {
onRemoteDied() {
console.log("server died");
}
}
審核編輯 黃宇
-
鴻蒙
+關注
關注
57文章
2392瀏覽量
43048
發布評論請先 登錄
相關推薦
評論