欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

鴻蒙開發(fā)通信與連接:ohos.rpc RPC通信

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-06-21 09:40 ? 次閱讀

RPC通信

本模塊提供進(jìn)程間通信能力,包括設(shè)備內(nèi)的進(jìn)程間通信(IPC)和設(shè)備間的進(jìn)程間通信(RPC),前者基于Binder驅(qū)動(dòng),后者基于軟總線驅(qū)動(dòng)。

icon-note.gif說明: 本模塊首批接口從API version 7開始支持。后續(xù)版本的新增接口,采用上角標(biāo)單獨(dú)標(biāo)記接口的起始版本。 開發(fā)前請(qǐng)熟悉鴻蒙開發(fā)指導(dǎo)文檔 :[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]

導(dǎo)入模塊

import rpc from '@ohos.rpc';

MessageParcel

該類提供讀寫基礎(chǔ)類型及數(shù)組、IPC對(duì)象、接口描述符和自定義序列化對(duì)象的方法。

create

create(): MessageParcel

靜態(tài)方法,創(chuàng)建MessageParcel對(duì)象。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

返回值:

類型說明
MessageParcel返回創(chuàng)建的MessageParcel對(duì)象。

示例:

let data = rpc.MessageParcel.create();
console.log("RpcClient: data is " + data);

reclaim

reclaim(): void

釋放不再使用的MessageParcel對(duì)象。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

示例:

let reply = rpc.MessageParcel.create();
reply.reclaim();

writeRemoteObject

writeRemoteObject(object: [IRemoteObject]): boolean

序列化遠(yuǎn)程對(duì)象并將其寫入MessageParcel對(duì)象。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

參數(shù)

參數(shù)名類型必填說明
object[IRemoteObject]要序列化并寫入MessageParcel的遠(yuǎn)程對(duì)象。

返回值:

類型說明
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讀取遠(yuǎn)程對(duì)象。此方法用于反序列化MessageParcel對(duì)象以生成IRemoteObject。遠(yuǎn)程對(duì)象按寫入MessageParcel的順序讀取。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

返回值:

類型說明
[IRemoteObject]讀取到的遠(yuǎn)程對(duì)象。

示例:

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對(duì)象。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

參數(shù):

參數(shù)名類型必填說明
tokenstring字符串類型描述符。

返回值:

類型說明
boolean如果操作成功,則返回true;否則返回false。

示例:

let data = rpc.MessageParcel.create();
let result = data.writeInterfaceToken("aaa");
console.log("RpcServer: writeInterfaceToken is " + result);

readInterfaceToken

readInterfaceToken(): string

從MessageParcel中讀取接口描述符。接口描述符按寫入MessageParcel的順序讀取。

系統(tǒng)能力 :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

獲取當(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

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

setSize(size: number): boolean

設(shè)置MessageParcel實(shí)例中包含的數(shù)據(jù)大小。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

參數(shù):

參數(shù)名類型必填說明
sizenumberMessageParcel實(shí)例的數(shù)據(jù)大小。以字節(jié)為單位。

返回值:

類型說明
boolean設(shè)置成功返回true,否則返回false。

示例:

let data = rpc.MessageParcel.create();
let setSize = data.setSize(16);
console.log("RpcClient: setSize is " + setSize);

setCapacity

setCapacity(size: number): boolean

設(shè)置MessageParcel實(shí)例的存儲(chǔ)容量。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

參數(shù):

參數(shù)名類型必填說明
sizenumberMessageParcel實(shí)例的存儲(chǔ)容量。以字節(jié)為單位。

返回值:

類型說明
boolean設(shè)置成功返回true,否則返回false。

示例:

let data = rpc.MessageParcel.create();
let result = data.setCapacity(100);
console.log("RpcClient: setCapacity is " + result);

getWritableBytes

getWritableBytes(): number

獲取MessageParcel的可寫字節(jié)空間。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

返回值:

類型說明
number獲取到的MessageParcel的可寫字節(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

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

getReadPosition(): number

獲取MessageParcel的讀位置。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

返回值:

類型說明
number返回MessageParcel實(shí)例中的當(dāng)前讀取位置。

示例:

let data = rpc.MessageParcel.create();
let readPos = data.getReadPosition();
console.log("RpcClient: readPos is " + readPos);

getWritePosition

getWritePosition(): number

獲取MessageParcel的寫位置。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

返回值:

類型說明
number返回MessageParcel實(shí)例中的當(dāng)前寫入位置。

示例:

let data = rpc.MessageParcel.create();
data.writeInt(10);
let bwPos = data.getWritePosition();
console.log("RpcClient: bwPos is " + bwPos);

rewindRead

rewindRead(pos: number): boolean

重新偏移讀取位置到指定的位置。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

參數(shù):

參數(shù)名類型必填說明
posnumber開始讀取數(shù)據(jù)的目標(biāo)位置。

返回值:

類型說明
boolean如果讀取位置發(fā)生更改,則返回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

重新偏移寫位置到指定的位置。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

參數(shù):

參數(shù)名類型必填說明
posnumber開始寫入數(shù)據(jù)的目標(biāo)位置。

返回值:

類型說明
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

將字節(jié)值寫入MessageParcel實(shí)例。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

參數(shù):

參數(shù)名類型必填說明
valnumber要寫入的字節(jié)值。

返回值:

類型說明
boolean寫入返回成功,否則返回false。

示例:

let data = rpc.MessageParcel.create();
let result = data.writeByte(2);
console.log("RpcClient: writeByte is: " + result);

readByte

readByte(): number

從MessageParcel實(shí)例讀取字節(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

writeShort(val: number): boolean

將短整數(shù)值寫入MessageParcel實(shí)例。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

參數(shù):

參數(shù)名類型必填說明
valnumber要寫入的短整數(shù)值。

返回值:

類型說明
boolean寫入返回true,否則返回false。

示例:

let data = rpc.MessageParcel.create();
let result = data.writeShort(8);
console.log("RpcClient: writeShort is: " + result);

readShort

readShort(): number

從MessageParcel實(shí)例讀取短整數(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

writeInt(val: number): boolean

將整數(shù)值寫入MessageParcel實(shí)例。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

參數(shù):

參數(shù)名類型必填說明
valnumber要寫入的整數(shù)值。

返回值:

類型說明
boolean寫入返回成功,否則返回false。

示例:

let data = rpc.MessageParcel.create();
let result = data.writeInt(10);
console.log("RpcClient: writeInt is " + result);

readInt

readInt(): number

從MessageParcel實(shí)例讀取整數(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

writeLong(val: number): boolean

將長整數(shù)值寫入MessageParcel實(shí)例。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

參數(shù):

參數(shù)名類型必填說明
valnumber要寫入的長整數(shù)值

返回值:

類型說明
boolean寫入成功返回true,否則返回false。

示例:

let data = rpc.MessageParcel.create();
let result = data.writeLong(10000);
console.log("RpcClient: writeLong is " + result);

readLong

readLong(): number

從MessageParcel實(shí)例中讀取長整數(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

writeFloat(val: number): boolean

將浮點(diǎn)值寫入MessageParcel實(shí)例。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

參數(shù):

參數(shù)名類型必填說明
valnumber要寫入的浮點(diǎn)值。

返回值:

類型說明
boolean寫入成功返回true,否則返回false。

示例:

let data = rpc.MessageParcel.create();
let result = data.writeFloat(1.2);
console.log("RpcClient: writeFloat is " + result);

readFloat

readFloat(): number

從MessageParcel實(shí)例中讀取浮點(diǎn)值。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

返回值:

類型說明
number返回浮點(diǎn)值。

示例:

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

將雙精度浮點(diǎn)值寫入MessageParcel實(shí)例。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

參數(shù):

參數(shù)名類型必填說明
valnumber要寫入的雙精度浮點(diǎn)值。

返回值:

類型說明
boolean寫入成功返回true,否則返回false。

示例:

let data = rpc.MessageParcel.create();
let result = data.writeDouble(10.2);
console.log("RpcClient: writeDouble is " + result);

readDouble

readDouble(): number

從MessageParcel實(shí)例讀取雙精度浮點(diǎn)值。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

返回值:

類型說明
number返回雙精度浮點(diǎn)值。

示例:

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實(shí)例。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

參數(shù):

參數(shù)名類型必填說明
valboolean要寫入的布爾值。

返回值:

類型說明
boolean寫入成功返回true,否則返回false。

示例:

let data = rpc.MessageParcel.create();
let result = data.writeBoolean(false);
console.log("RpcClient: writeBoolean is " + result);

readBoolean

readBoolean(): boolean

從MessageParcel實(shí)例讀取布爾值。

系統(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

writeChar(val: number): boolean

將單個(gè)字符值寫入MessageParcel實(shí)例。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

參數(shù):

參數(shù)名類型必填說明
valnumber要寫入的單個(gè)字符值。

返回值:

類型說明
boolean寫入返回true,否則返回false。

示例:

let data = rpc.MessageParcel.create();
let result = data.writeChar(97);
console.log("RpcClient: writeChar is " + result);

readChar

readChar(): number

從MessageParcel實(shí)例中讀取單個(gè)字符值。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

返回值:

類型說明
number返回單個(gè)字符值。

示例:

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實(shí)例。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

參數(shù):

參數(shù)名類型必填說明
valstring要寫入的字符串值,其長度應(yīng)小于40960字節(jié)。

返回值:

類型說明
boolean寫入成功返回true,否則返回false。

示例:

let data = rpc.MessageParcel.create();
let result = data.writeString('abc');
console.log("RpcClient: writeString  is " + result);

readString

readString(): string

從MessageParcel實(shí)例讀取字符串值。

系統(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

writeSequenceable(val: Sequenceable): boolean

將自定義序列化對(duì)象寫入MessageParcel實(shí)例。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

參數(shù):

參數(shù)名類型必填說明
val[Sequenceable]要寫入的可序列對(duì)象。

返回值:

類型說明
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實(shí)例中讀取成員變量到指定的對(duì)象(dataIn)。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

參數(shù):

參數(shù)名類型必填說明
dataIn[Sequenceable]需要從MessageParcel讀取成員變量的對(duì)象。

返回值:

類型說明
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

將字節(jié)數(shù)組寫入MessageParcel實(shí)例。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

參數(shù):

參數(shù)名類型必填說明
byteArraynumber[]要寫入的字節(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

readByteArray(dataIn: number[]) : void

從MessageParcel實(shí)例讀取字節(jié)數(shù)組。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

參數(shù):

參數(shù)名類型必填說明
dataInnumber[]要讀取的字節(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

readByteArray(): number[]

從MessageParcel實(shí)例中讀取字節(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

writeShortArray(shortArray: number[]): boolean

將短整數(shù)數(shù)組寫入MessageParcel實(shí)例。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

參數(shù):

參數(shù)名類型必填說明
shortArraynumber[]要寫入的短整數(shù)數(shù)組。

返回值:

類型說明
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實(shí)例中讀取短整數(shù)數(shù)組。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

參數(shù):

參數(shù)名類型必填說明
dataInnumber[]要讀取的短整數(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

readShortArray(): number[]

從MessageParcel實(shí)例中讀取短整數(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

writeIntArray(intArray: number[]): boolean

將整數(shù)數(shù)組寫入MessageParcel實(shí)例。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

參數(shù):

參數(shù)名類型必填說明
intArraynumber[]要寫入的整數(shù)數(shù)組。

返回值:

類型說明
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實(shí)例中讀取整數(shù)數(shù)組。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

參數(shù):

參數(shù)名類型必填說明
dataInnumber[]要讀取的整數(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

readIntArray(): number[]

從MessageParcel實(shí)例中讀取整數(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

writeLongArray(longArray: number[]): boolean

將長整數(shù)數(shù)組寫入MessageParcel實(shí)例。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

參數(shù):

參數(shù)名類型必填說明
longArraynumber[]要寫入的長整數(shù)數(shù)組。

返回值:

類型說明
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實(shí)例讀取長整數(shù)數(shù)組。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

參數(shù):

參數(shù)名類型必填說明
dataInnumber[]要讀取的長整數(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

readLongArray(): number[]

從MessageParcel實(shí)例中讀取長整數(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

writeFloatArray(floatArray: number[]): boolean

將浮點(diǎn)數(shù)組寫入MessageParcel實(shí)例。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

參數(shù):

參數(shù)名類型必填說明
floatArraynumber[]要寫入的浮點(diǎn)數(shù)組。

返回值:

類型說明
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實(shí)例中讀取浮點(diǎn)數(shù)組。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

參數(shù):

參數(shù)名類型必填說明
dataInnumber[]要讀取的浮點(diǎn)數(shù)組。

示例:

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實(shí)例中讀取浮點(diǎn)數(shù)組。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

返回值:

類型說明
number[]返回浮點(diǎn)數(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

writeDoubleArray(doubleArray: number[]): boolean

將雙精度浮點(diǎn)數(shù)組寫入MessageParcel實(shí)例。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

參數(shù):

參數(shù)名類型必填說明
doubleArraynumber[]要寫入的雙精度浮點(diǎn)數(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

readDoubleArray(dataIn: number[]) : void

從MessageParcel實(shí)例中讀取雙精度浮點(diǎn)數(shù)組。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

參數(shù):

參數(shù)名類型必填說明
dataInnumber[]要讀取的雙精度浮點(diǎn)數(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

readDoubleArray(): number[]

從MessageParcel實(shí)例讀取雙精度浮點(diǎn)數(shù)組。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

返回值:

類型說明
number[]返回雙精度浮點(diǎn)數(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

writeBooleanArray(booleanArray: boolean[]): boolean

將布爾數(shù)組寫入MessageParcel實(shí)例。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

參數(shù):

參數(shù)名類型必填說明
booleanArrayboolean[]要寫入的布爾數(shù)組。

返回值:

類型說明
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實(shí)例中讀取布爾數(shù)組。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

參數(shù):

參數(shù)名類型必填說明
dataInboolean[]要讀取的布爾數(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

readBooleanArray(): boolean[]

從MessageParcel實(shí)例中讀取布爾數(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

writeCharArray(charArray: number[]): boolean

將單個(gè)字符數(shù)組寫入MessageParcel實(shí)例。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

參數(shù):

參數(shù)名類型必填說明
charArraynumber[]要寫入的單個(gè)字符數(shù)組。

返回值:

類型說明
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實(shí)例中讀取單個(gè)字符數(shù)組。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

參數(shù):

參數(shù)名類型必填說明
dataInnumber[]要讀取的單個(gè)字符數(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

readCharArray(): number[]

從MessageParcel實(shí)例讀取單個(gè)字符數(shù)組。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

返回值:

類型說明
number[]返回單個(gè)字符數(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

writeStringArray(stringArray: string[]): boolean

將字符串?dāng)?shù)組寫入MessageParcel實(shí)例。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

參數(shù):

參數(shù)名類型必填說明
stringArraystring[]要寫入的字符串?dāng)?shù)組,數(shù)組單個(gè)元素的長度應(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

readStringArray(dataIn: string[]) : void

從MessageParcel實(shí)例讀取字符串?dāng)?shù)組。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

參數(shù):

參數(shù)名類型必填說明
dataInstring[]要讀取的字符串?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

readStringArray(): string[]

從MessageParcel實(shí)例讀取字符串?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);

writeNoException8+

writeNoException(): void

向MessageParcel寫入“指示未發(fā)生異?!钡?a target="_blank">信息

系統(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;
        }
    }
}

readException8+

readException(): void

從MessageParcel中讀取異常。

系統(tǒng)能力 :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

將可序列化對(duì)象數(shù)組寫入MessageParcel實(shí)例。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

參數(shù):

參數(shù)名類型必填說明
sequenceableArraySequenceable[]要寫入的可序列化對(duì)象數(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);

readSequenceableArray8+

readSequenceableArray(sequenceableArray: Sequenceable[]): void

從MessageParcel實(shí)例讀取可序列化對(duì)象數(shù)組。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

參數(shù):

參數(shù)名類型必填說明
sequenceableArraySequenceable[]要讀取的可序列化對(duì)象數(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);

writeRemoteObjectArray8+

writeRemoteObjectArray(objectArray: IRemoteObject[]): boolean

將IRemoteObject對(duì)象數(shù)組寫入MessageParcel。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

參數(shù):

參數(shù)名類型必填說明
objectArrayIRemoteObject[]要寫入MessageParcel的IRemoteObject對(duì)象數(shù)組。

返回值:

類型說明
boolean如果IRemoteObject對(duì)象數(shù)組成功寫入MessageParcel,則返回true;如果對(duì)象為null或數(shù)組寫入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對(duì)象數(shù)組。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

參數(shù):

參數(shù)名類型必填說明
objectsIRemoteObject[]從MessageParcel讀取的IRemoteObject對(duì)象數(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);

readRemoteObjectArray8+

readRemoteObjectArray(): IRemoteObject[]

從MessageParcel讀取IRemoteObject對(duì)象數(shù)組。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

返回值:

類型說明
IRemoteObject[]返回IRemoteObject對(duì)象數(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);

closeFileDescriptor8+

static closeFileDescriptor(fd: number): void

關(guān)閉給定的文件描述符。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

參數(shù):

參數(shù)名類型必填說明
fdnumber要關(guān)閉的文件描述符。

示例:

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

復(fù)制給定的文件描述符。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

參數(shù):

參數(shù)名類型必填說明
fdnumber表示已存在的文件描述符。

返回值:

類型說明
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對(duì)象是否包含文件描述符。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

返回值:

類型說明
boolean如果此MessageParcel對(duì)象包含文件描述符,則返回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。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

參數(shù):

參數(shù)名類型必填說明
fdnumber文件描述符。

返回值:

類型說明
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中讀取文件描述符。

系統(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);

writeAshmem8+

writeAshmem(ashmem: Ashmem): boolean

將指定的匿名共享對(duì)象寫入此MessageParcel。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

參數(shù):

參數(shù)名類型必填說明
ashmemAshmem要寫入MessageParcel的匿名共享對(duì)象。

返回值:

類型說明
boolean如果匿名共享對(duì)象成功寫入此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讀取匿名共享對(duì)象。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

返回值:

類型說明
Ashmem返回匿名共享對(duì)象。

示例:

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可以容納的最大原始數(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);

writeRawData8+

writeRawData(rawData: number[], size: number): boolean

將原始數(shù)據(jù)寫入MessageParcel對(duì)象。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

參數(shù):

參數(shù)名類型必填說明
rawDatanumber[]要寫入的原始數(shù)據(jù)。
sizenumber發(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);

readRawData8+

readRawData(size: number): number[]

從MessageParcel讀取原始數(shù)據(jù)。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

參數(shù):

參數(shù)名類型必填說明
sizenumber要讀取的原始數(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);

Sequenceable

在進(jìn)程間通信(IPC)期間,將類的對(duì)象寫入MessageParcel并從MessageParcel中恢復(fù)它們。

marshalling

marshalling(dataOut: MessageParcel): boolean

將此可序列對(duì)象封送到MessageParcel中。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

參數(shù):

參數(shù)名類型必填說明
dataOut[MessageParcel]可序列對(duì)象將被封送到的MessageParcel對(duì)象。

返回值:

類型說明
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中解封此可序列對(duì)象。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

參數(shù):

參數(shù)名類型必填說明
dataIn[MessageParcel]已將可序列對(duì)象封送到其中的MessageParcel對(duì)象。

返回值:

類型說明
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

遠(yuǎn)端對(duì)象的代理持有者。用于獲取代理對(duì)象。

asObject

asObject(): IRemoteObject

需派生類實(shí)現(xiàn),獲取代理或遠(yuǎn)端對(duì)象。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

返回值:

類型說明
[IRemoteObject]如果調(diào)用者是[RemoteObject]對(duì)象,則直接返回本身;如果調(diào)用者是[RemoteProxy]對(duì)象,則返回它的持有者[IRemoteObject]。

示例:

class TestAbility extends rpc.RemoteObject {
    asObject() {
        return this;
    }
}

示例:

class TestProxy {
    remote: rpc.RemoteObject;
    constructor(remote) {
        this.remote = remote;
    }
    asObject() {
        return this.remote;
    }
}

DeathRecipient

用于訂閱遠(yuǎn)端對(duì)象的死亡通知。當(dāng)被訂閱該通知的遠(yuǎn)端對(duì)象死亡時(shí),本端可收到消息,調(diào)用[onRemoteDied]接口。遠(yuǎn)端對(duì)象死亡可以為遠(yuǎn)端對(duì)象所在進(jìn)程死亡,遠(yuǎn)端對(duì)象所在設(shè)備關(guān)機(jī)或重啟,當(dāng)遠(yuǎn)端對(duì)象與本端對(duì)象屬于不同設(shè)備時(shí),也可為遠(yuǎn)端對(duì)象離開組網(wǎng)時(shí)。

onRemoteDied

onRemoteDied(): void

HarmonyOS與OpenHarmony鴻蒙文檔籽料:mau123789是v直接拿

搜狗高速瀏覽器截圖20240326151450.png

在成功添加死亡通知訂閱后,當(dāng)遠(yuǎn)端對(duì)象死亡時(shí),將自動(dòng)調(diào)用本方法。

系統(tǒng)能力 :SystemCapability.Communication.IPC.Core

示例:

class MyDeathRecipient {
    onRemoteDied() {
        console.log("server died");
    }
}

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 鴻蒙
    +關(guān)注

    關(guān)注

    57

    文章

    2398

    瀏覽量

    43103
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    HarmonyOS跨進(jìn)程通信—IPC與RPC通信開發(fā)

    一、IPC與RPC通信概述 基本概念 IPC(Inter-Process Communication)與RPC(Remote Procedure Call)用于實(shí)現(xiàn)跨進(jìn)程通信,不同的是
    的頭像 發(fā)表于 02-02 17:47 ?1368次閱讀
    HarmonyOS跨進(jìn)程<b class='flag-5'>通信</b>—IPC與<b class='flag-5'>RPC</b><b class='flag-5'>通信</b><b class='flag-5'>開發(fā)</b>

    TSMaster RPC 基礎(chǔ)入門:編程指導(dǎo)和使用說明

    另一臺(tái)計(jì)算機(jī)上的程序或服務(wù),就像調(diào)用本地的程序一樣。RPC的主要目的是簡化分布式計(jì)算,使得開發(fā)者無需關(guān)注底層的網(wǎng)絡(luò)通信細(xì)節(jié)。2.什么情況下需要了解此文章?用戶基于T
    的頭像 發(fā)表于 07-13 08:21 ?971次閱讀
    TSMaster <b class='flag-5'>RPC</b> 基礎(chǔ)入門:編程指導(dǎo)和使用說明

    鴻蒙OS跨進(jìn)程IPC與RPC通信

    IPC通信結(jié)束后,使用featureAbility的接口斷開連接。 import rpc from \"@ohos.rpc\" import featureAbility
    發(fā)表于 02-17 14:20

    鴻蒙原生應(yīng)用元服務(wù)-訪問控制(權(quán)限)開發(fā)校驗(yàn)環(huán)節(jié)

    rpc from \'@ohos.rpc\' class Stub extends rpc.RemoteObject { onRemoteRequest(code, data, reply
    發(fā)表于 04-22 17:52

    RPC的結(jié)構(gòu)原理是什么?

    遠(yuǎn)程過程調(diào)用(RPC)是一個(gè)協(xié)議,程序可以使用這個(gè)協(xié)議請(qǐng)求網(wǎng)絡(luò)中另一臺(tái)計(jì)算機(jī)上某程序的服務(wù)而不需知道網(wǎng)絡(luò)細(xì)節(jié)。(過程調(diào)用有時(shí)也稱作函數(shù)調(diào)用,或子例行程序調(diào)用。)RPC使用client/server模型。請(qǐng)求程序是client,而服務(wù)提供程序則為server。
    發(fā)表于 10-12 10:43

    直連設(shè)備怎么rpc雙向控制

    Thing***oard提供非常強(qiáng)大的可視化部件,除了圖表、地圖車聯(lián)網(wǎng)外,還有控制部件,通過mqtt rpc可以輕松實(shí)現(xiàn)平臺(tái) -- 設(shè)備端 設(shè)備到平臺(tái)雙向數(shù)據(jù)傳輸及控制。Thingboard 連接
    發(fā)表于 07-12 06:55

    RPC是什么

    RPC是什么?RabbitMQ又是什么?
    發(fā)表于 10-08 09:24

    【學(xué)習(xí)打卡】OpenHarmony的RPC連接介紹

    OpenHarmony的示例中有關(guān)于RPC連接的演示,展示了同一設(shè)備中前后臺(tái)的數(shù)據(jù)交互,用戶前臺(tái)選擇相應(yīng)的商品與數(shù)目,后臺(tái)計(jì)算出結(jié)果,回傳給前臺(tái)展示。今天我們就介紹以下RPC連接相關(guān)的
    發(fā)表于 07-28 18:13

    使用matlab和freemaster rpc-server進(jìn)行自動(dòng)數(shù)據(jù)記錄,無法打開通信端口的原因?

    rpc-server api,或者至少我找不到它。 到目前為止它已經(jīng)工作,我可以讀寫變量并停止通信,但是開始通信的結(jié)構(gòu)不起作用。這里有人知道這有什么問題嗎?jsonMessage2(1
    發(fā)表于 04-21 07:04

    【中秋國慶不斷更】HarmonyOS跨進(jìn)程通信—IPC與RPC通信開發(fā)指導(dǎo)

    ,使用Proxy與遠(yuǎn)端通信 二、IPC與RPC通信開發(fā)指導(dǎo) 場景介紹 IPC/RPC的主要工作是讓運(yùn)行在不同進(jìn)程的Proxy和Stub互相
    發(fā)表于 09-27 15:48

    什么是RPC

    什么是RPC   英文原義:Remote Procedure Call Protocol 中文釋義:(RFC-1831)遠(yuǎn)過程調(diào)用協(xié)議 注  解:一種通過
    發(fā)表于 02-23 11:48 ?923次閱讀

    什么是RPC?為什么需要RPC

    首先要明確一點(diǎn):RPC可以用HTTP協(xié)議實(shí)現(xiàn),并且用HTTP是建立在 TCP 之上最廣泛使用的 RPC,但是互聯(lián)網(wǎng)公司往往用自己的私有協(xié)議,比如鵝廠的JCE協(xié)議,私有協(xié)議不具備通用性為什么還要用呢?因?yàn)橄啾扔贖TTP協(xié)議,RPC
    的頭像 發(fā)表于 04-16 12:49 ?1.5w次閱讀
    什么是<b class='flag-5'>RPC</b>?為什么需要<b class='flag-5'>RPC</b>?

    OpenDaylight中的RPC &amp; Notification是什么

    我們將介紹RPC和Notification,并從進(jìn)程內(nèi)外的通信開始,著重介紹遠(yuǎn)程過程調(diào)用和發(fā)布-訂閱機(jī)制,然后分析MD-SAL的通信交互過程。
    的頭像 發(fā)表于 02-14 15:15 ?1026次閱讀
    OpenDaylight中的<b class='flag-5'>RPC</b> &amp; Notification是什么

    RPC 和 REST 區(qū)別是什么

    01. 既 REST ,何 RPC ? 在 OpenStack 里的進(jìn)程間通信方式主要有兩種,一種是基于HTTP協(xié)議的RESTFul API方式,另一種則是RPC調(diào)用。 那么這兩種方式在應(yīng)用場景上有
    的頭像 發(fā)表于 11-02 10:40 ?3251次閱讀
    <b class='flag-5'>RPC</b> 和 REST 區(qū)別是什么

    鴻蒙Ability Kit(程序框架服務(wù))【Ability與ServiceExtensionAbility通信

    本示例展示通過[IDL的方式]和?[@ohos.rpc]?等接口實(shí)現(xiàn)了Ability與ServiceExtensionAbility之間的通信。
    的頭像 發(fā)表于 06-05 09:28 ?547次閱讀
    <b class='flag-5'>鴻蒙</b>Ability Kit(程序框架服務(wù))【Ability與ServiceExtensionAbility<b class='flag-5'>通信</b>】