HarmonyOS API:@ohos.rpc (RPC通信)

joytrian
发布于 2023-4-7 15:58
浏览
0收藏

版本:v3.1 Beta

@ohos.rpc (RPC通信)

readBooleanArray

readBooleanArray(dataIn: boolean[]): void

从MessageSequence实例中读取布尔数组。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名

类型

必填

说明

dataIn

boolean[]

要读取的布尔数组。

错误码:

以下错误码的详细介绍请参见​​ohos.rpc错误码​

错误码ID

错误信息

1900010

read data from message sequence failed

示例:

let data = rpc.MessageSequence.create();
try {
    data.writeBooleanArray([false, true, false]);
} catch(error) {
    console.info("rpc write booleanArray fail, errorCode " + error.code);
    console.info("rpc write booleanArray fail, errorMessage" + error.message);
}
let array = new Array(3);
try {
    data.readBooleanArray(array);
} catch(error) {
    console.info("rpc read booleanArray fail, errorCode " + error.code);
    console.info("rpc read booleanArray fail, errorMessage" + error.message);
}

readBooleanArray

readBooleanArray(): boolean[]

从MessageSequence实例中读取布尔数组。

系统能力:SystemCapability.Communication.IPC.Core

返回值:

类型

说明

boolean[]

返回布尔数组。

错误码:

以下错误码的详细介绍请参见​​ohos.rpc错误码​

错误码ID

错误信息

1900010

read data from message sequence failed

示例:

let data = rpc.MessageSequence.create();
try {
    data.writeBooleanArray([false, true, false]);
} catch(error) {
    console.info("rpc write booleanArray fail, errorCode " + error.code);
    console.info("rpc write booleanArray fail, errorMessage" + error.message);
}
try {
    let array = data.readBooleanArray();
    console.log("RpcClient: readBooleanArray is " + array);
} catch(error) {
    console.info("rpc read booleanArray fail, errorCode " + error.code);
    console.info("rpc read booleanArray fail, errorMessage" + error.message);
}

writeCharArray

writeCharArray(charArray: number[]): void

将单个字符数组写入MessageSequence实例。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名

类型

必填

说明

charArray

number[]

要写入的单个字符数组。

错误码:

以下错误码的详细介绍请参见​​ohos.rpc错误码​

错误码ID

错误信息

1900009

write data to message sequence failed

示例:

let data = rpc.MessageSequence.create();
try {
    data.writeCharArray([97, 98, 88]);
} catch(error) {
    console.info("rpc write charArray fail, errorCode " + error.code);
    console.info("rpc write charArray fail, errorMessage" + error.message);
}

readCharArray

readCharArray(dataIn: number[]): void

从MessageSequence实例中读取单个字符数组。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名

类型

必填

说明

dataIn

number[]

要读取的单个字符数组。

错误码:

以下错误码的详细介绍请参见​​ohos.rpc错误码​

错误码ID

错误信息

1900010

read data from message sequence failed

示例:

let data = rpc.MessageSequence.create();
try {
    data.writeCharArray([97, 98, 88]);
} catch(error) {
    console.info("rpc write charArray fail, errorCode " + error.code);
    console.info("rpc write charArray fail, errorMessage" + error.message);
}
let array = new Array(3);
try {
    data.readCharArray(array);
} catch(error) {
    console.info("rpc read charArray fail, errorCode " + error.code);
    console.info("rpc read charArray fail, errorMessage" + error.message);
}

readCharArray

readCharArray(): number[]

从MessageSequence实例读取单个字符数组。

系统能力:SystemCapability.Communication.IPC.Core

返回值:

类型

说明

number[]

返回单个字符数组。

错误码:

以下错误码的详细介绍请参见​​ohos.rpc错误码​

错误码ID

错误信息

1900010

read data from message sequence failed

示例:

let data = rpc.MessageSequence.create();
try {
    data.writeCharArray([97, 98, 88]);
} catch(error) {
    console.info("rpc write charArray fail, errorCode " + error.code);
    console.info("rpc write charArray fail, errorMessage" + error.message);
}
let array = new Array(3);
try {
    let array = data.readCharArray();
    console.log("RpcClient: readCharArray is " + array);
} catch(error) {
    console.info("rpc read charArray fail, errorCode " + error.code);
    console.info("rpc read charArray fail, errorMessage" + error.message);
}

writeStringArray

writeStringArray(stringArray: string[]): void

将字符串数组写入MessageSequence实例。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名

类型

必填

说明

stringArray

string[]

要写入的字符串数组,数组单个元素的长度应小于40960字节。

错误码:

以下错误码的详细介绍请参见​​ohos.rpc错误码​

错误码ID

错误信息

1900009

write data to message sequence failed

示例:

let data = rpc.MessageSequence.create();
try {
    data.writeStringArray(["abc", "def"]);
} catch(error) {
    console.info("rpc write stringArray fail, errorCode " + error.code);
    console.info("rpc write stringArray fail, errorMessage" + error.message);
}

readStringArray

readStringArray(dataIn: string[]): void

从MessageSequence实例读取字符串数组。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名

类型

必填

说明

dataIn

string[]

要读取的字符串数组。

错误码:

以下错误码的详细介绍请参见​​ohos.rpc错误码​

错误码ID

错误信息

1900010

read data from message sequence failed

示例:

let data = rpc.MessageSequence.create();
try {
    data.writeStringArray(["abc", "def"]);
} catch(error) {
    console.info("rpc write stringArray fail, errorCode " + error.code);
    console.info("rpc write stringArray fail, errorMessage" + error.message);
}
let array = new Array(2);
try {
    data.readStringArray(array);
} catch(error) {
    console.info("rpc read stringArray fail, errorCode " + error.code);
    console.info("rpc read stringArray fail, errorMessage" + error.message);
}

readStringArray

readStringArray(): string[]

从MessageSequence实例读取字符串数组。

系统能力:SystemCapability.Communication.IPC.Core

返回值:

类型

说明

string[]

返回字符串数组。

错误码:

以下错误码的详细介绍请参见​​ohos.rpc错误码​

错误码ID

错误信息

1900010

read data from message sequence failed

示例:

let data = rpc.MessageSequence.create();
try {
    data.writeStringArray(["abc", "def"]);
} catch(error) {
    console.info("rpc write stringArray fail, errorCode " + error.code);
    console.info("rpc write stringArray fail, errorMessage" + error.message);
}
try {
    let array = data.readStringArray();
    console.log("RpcClient: readStringArray is " + array);
} catch(error) {
    console.info("rpc read stringArray fail, errorCode " + error.code);
    console.info("rpc read stringArray fail, errorMessage" + error.message);
}

writeNoException

writeNoException(): void

向MessageSequence写入“指示未发生异常”的信息。

系统能力:SystemCapability.Communication.IPC.Core

错误码:

以下错误码的详细介绍请参见​​ohos.rpc错误码​

错误码ID

错误信息

1900009

write data to message sequence failed

示例:

class TestRemoteObject extends rpc.RemoteObject {
    constructor(descriptor) {
        super(descriptor);
    }

    onRemoteRequest(code, data, reply, option) {
        if (code === 1) {
            console.log("RpcServer: onRemoteRequest called");
            try {
                reply.writeNoException();
            } catch(error) {
                console.info("rpc write no exception fail, errorCode " + error.code);
                console.info("rpc write no exception fail, errorMessage" + error.message);
            }
            return true;
        } else {
            console.log("RpcServer: unknown code: " + code);
            return false;
        }
    }
}

readException

readException(): void

从MessageSequence中读取异常。

系统能力:SystemCapability.Communication.IPC.Core

错误码:

以下错误码的详细介绍请参见​​ohos.rpc错误码​

错误码ID

错误信息

1900010

read data from message sequence failed

示例:

import FA from "@ohos.ability.featureAbility";
let proxy;
let connect = {
    onConnect: function(elementName, remoteProxy) {
        console.log("RpcClient: js onConnect called.");
        proxy = remoteProxy;
    },
    onDisconnect: function(elementName) {
        console.log("RpcClient: onDisconnect");
    },
    onFailed: function() {
        console.log("RpcClient: onFailed");
    }
};
let want = {
    "bundleName": "com.ohos.server",
    "abilityName": "com.ohos.server.MainAbility",
};
FA.connectAbility(want, connect);
let option = new rpc.MessageOption();
let data = rpc.MessageSequence.create();
let reply = rpc.MessageSequence.create();
data.writeInt(1);
data.writeString("hello");
proxy.sendMessageRequest(1, data, reply, option)
    .then(function(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

writeParcelableArray(parcelableArray: Parcelable[]): void

将可序列化对象数组写入MessageSequence实例。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名

类型

必填

说明

parcelableArray

Parcelable[]

要写入的可序列化对象数组。

错误码:

以下错误码的详细介绍请参见​​ohos.rpc错误码​

错误码ID

错误信息

1900009

write data to message sequence failed

示例:

class MyParcelable {
    num: number;
    str: string;
    constructor(num, str) {
        this.num = num;
        this.str = str;
    }
    marshalling(messageSequence) {
        messageSequence.writeInt(this.num);
        messageSequence.writeString(this.str);
        return true;
    }
    unmarshalling(messageSequence) {
        this.num = messageSequence.readInt();
        this.str = messageSequence.readString();
        return true;
    }
}
let parcelable = new MyParcelable(1, "aaa");
let parcelable2 = new MyParcelable(2, "bbb");
let parcelable3 = new MyParcelable(3, "ccc");
let a = [parcelable, parcelable2, parcelable3];
let data = rpc.MessageSequence.create();
try {
    data.writeParcelableArray(a);
} catch(error) {
    console.info("rpc write parcelable array fail, errorCode " + error.code);
    console.info("rpc write parcelable array fail, errorMessage" + error.message);
}

readParcelableArray

readParcelableArray(parcelableArray: Parcelable[]): void

从MessageSequence实例读取可序列化对象数组。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名

类型

必填

说明

parcelableArray

Parcelable[]

要读取的可序列化对象数组。

错误码:

以下错误码的详细介绍请参见​​ohos.rpc错误码​

错误码ID

错误信息

1900010

read data from message sequence failed

1900012

call js callback function failed

示例:

class MyParcelable {
    num: number;
    str: string;
    constructor(num, str) {
        this.num = num;
        this.str = str;
    }
    marshalling(messageSequence) {
        messageSequence.writeInt(this.num);
        messageSequence.writeString(this.str);
        return true;
    }
    unmarshalling(messageSequence) {
        this.num = messageSequence.readInt();
        this.str = messageSequence.readString();
        return true;
    }
}
let parcelable = new MyParcelable(1, "aaa");
let parcelable2 = new MyParcelable(2, "bbb");
let parcelable3 = new MyParcelable(3, "ccc");
let a = [parcelable, parcelable2, parcelable3];
let data = rpc.MessageSequence.create();
let result = data.writeParcelableArray(a);
console.log("RpcClient: writeParcelableArray is " + result);
let b = [new MyParcelable(0, ""), new MyParcelable(0, ""), new MyParcelable(0, "")];
try {
    data.readParcelableArray(b);
} catch(error) {
    console.info("rpc read parcelable array fail, errorCode " + error.code);
    console.info("rpc read parcelable array fail, errorMessage" + error.message);
}
data.readParcelableArray(b);

writeRemoteObjectArray

writeRemoteObjectArray(objectArray: IRemoteObject[]): void

将IRemoteObject对象数组写入MessageSequence。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名

类型

必填

说明

objectArray

IRemoteObject[]

要写入MessageSequence的IRemoteObject对象数组。

错误码:

以下错误码的详细介绍请参见​​ohos.rpc错误码​

错误码ID

错误信息

1900009

write data to message sequence failed

示例:

class TestRemoteObject extends rpc.RemoteObject {
    constructor(descriptor) {
        super(descriptor);
        this.modifyLocalInterface(this, descriptor);
    }

    asObject(): rpc.IRemoteObject {
        return this;
    }
}
let a = [new TestRemoteObject("testObject1"), new TestRemoteObject("testObject2"), new TestRemoteObject("testObject3")];
let data = rpc.MessageSequence.create();
let result = data.writeRemoteObjectArray(a);
try {
    data.writeRemoteObjectArray(a);
} catch(error) {
    console.info("rpc write remote object array fail, errorCode " + error.code);
    console.info("rpc write remote object array fail, errorMessage" + error.message);
}
console.log("RpcClient: writeRemoteObjectArray is " + result);

readRemoteObjectArray

readRemoteObjectArray(objects: IRemoteObject[]): void

从MessageSequence读取IRemoteObject对象数组。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名

类型

必填

说明

objects

IRemoteObject[]

从MessageSequence读取的IRemoteObject对象数组。

错误码:

以下错误码的详细介绍请参见​​ohos.rpc错误码​

错误码ID

错误信息

1900010

read data from message sequence failed

示例:

class MyDeathRecipient {
    onRemoteDied() {
        console.log("server died");
    }
}
class TestRemoteObject extends rpc.RemoteObject {
    constructor(descriptor) {
        super(descriptor);
        this.modifyLocalInterface(this, descriptor);
    }

    asObject(): rpc.IRemoteObject {
        return this;
    }
}
let a = [new TestRemoteObject("testObject1"), new TestRemoteObject("testObject2"), new TestRemoteObject("testObject3")];
let data = rpc.MessageSequence.create();
data.writeRemoteObjectArray(a);
let b = new Array(3);
try {
    data.readRemoteObjectArray(b);
} catch(error) {
    console.info("rpc read remote object array fail, errorCode " + error.code);
    console.info("rpc read remote object array fail, errorMessage" + error.message);
}
data.readRemoteObjectArray(b);

readRemoteObjectArray

readRemoteObjectArray(): IRemoteObject[]

从MessageSequence读取IRemoteObject对象数组。

系统能力:SystemCapability.Communication.IPC.Core

返回值:

类型

说明

IRemoteObject[]

返回IRemoteObject对象数组。

错误码:

以下错误码的详细介绍请参见​​ohos.rpc错误码​

错误码ID

错误信息

1900010

read data from message sequence failed

示例:

class TestRemoteObject extends rpc.RemoteObject {
    constructor(descriptor) {
        super(descriptor);
        this.modifyLocalInterface(this, descriptor);
    }
 
    asObject(): rpc.IRemoteObject {
        return this;
    }
}
let a = [new TestRemoteObject("testObject1"), new TestRemoteObject("testObject2"), new TestRemoteObject("testObject3")];
let data = rpc.MessageSequence.create();
data.writeRemoteObjectArray(a);
try {
    let b = data.readRemoteObjectArray();
    console.log("RpcClient: readRemoteObjectArray is " + b);
} catch(error) {
    console.info("rpc read remote object array fail, errorCode " + error.code);
    console.info("rpc read remote object array fail, errorMessage" + error.message);
}

closeFileDescriptor9+

static closeFileDescriptor(fd: number): void

关闭给定的文件描述符。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名

类型

必填

说明

fd

number

要关闭的文件描述符。

示例:

import fileio from '@ohos.fileio';
let filePath = "path/to/file";
let fd = fileio.openSync(filePath, 0o2| 0o100, 0o666);
try {
    rpc.MessageSequence.closeFileDescriptor(fd);
} catch(error) {
    console.info("rpc close file descriptor fail, errorCode " + error.code);
    console.info("rpc close file descriptor fail, errorMessage" + error.message);
}

dupFileDescriptor

static dupFileDescriptor(fd: number) :number

复制给定的文件描述符。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名

类型

必填

说明

fd

number

表示已存在的文件描述符。

返回值:

类型

说明

number

返回新的文件描述符。

错误码:

以下错误码的详细介绍请参见​​ohos.rpc错误码​

错误码ID

错误信息

1900013

call os dup function failed

示例:

import fileio from '@ohos.fileio';
let filePath = "path/to/file";
let fd = fileio.openSync(filePath, 0o2| 0o100, 0o666);
try {
    let newFd = rpc.MessageSequence.dupFileDescriptor(fd);
} catch(error) {
    console.info("rpc dup file descriptor fail, errorCode " + error.code);
    console.info("rpc dup file descriptor fail, errorMessage" + error.message);
}

containFileDescriptors

containFileDescriptors(): boolean

检查此MessageSequence对象是否包含文件描述符。

系统能力:SystemCapability.Communication.IPC.Core

返回值:

类型

说明

boolean

如果此MessageSequence对象包含文件描述符,则返回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

writeFileDescriptor(fd: number): void

写入文件描述符到MessageSequence。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名

类型

必填

说明

fd

number

文件描述符。

错误码:

以下错误码的详细介绍请参见​​ohos.rpc错误码​

错误码ID

错误信息

1900009

write data to message sequence failed

示例:

import fileio from '@ohos.fileio';
let sequence = new rpc.MessageSequence();
let filePath = "path/to/file";
let fd = fileio.openSync(filePath, 0o2| 0o100, 0o666);
try {
    sequence.writeFileDescriptor(fd);
} catch(error) {
    console.info("rpc write file descriptor fail, errorCode " + error.code);
    console.info("rpc write file descriptor fail, errorMessage" + error.message);
}

readFileDescriptor

readFileDescriptor(): number

从MessageSequence中读取文件描述符。

系统能力:SystemCapability.Communication.IPC.Core

返回值:

类型

说明

number

返回文件描述符。

错误码:

以下错误码的详细介绍请参见​​ohos.rpc错误码​

错误码ID

错误信息

1900010

read data from message sequence failed

示例:

import fileio from '@ohos.fileio';
let sequence = new rpc.MessageSequence();
let filePath = "path/to/file";
let fd = fileio.openSync(filePath, 0o2| 0o100, 0o666);
try {
    sequence.writeFileDescriptor(fd);
} catch(error) {
    console.info("rpc write file descriptor fail, errorCode " + error.code);
    console.info("rpc write file descriptor fail, errorMessage" + error.message);
}
try {
    let readFD = sequence.readFileDescriptor();
} catch(error) {
    console.info("rpc read file descriptor fail, errorCode " + error.code);
    console.info("rpc read file descriptor fail, errorMessage" + error.message);
}

writeAshmem

writeAshmem(ashmem: Ashmem): void

将指定的匿名共享对象写入此MessageSequence。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名

类型

必填

说明

ashmem

Ashmem

要写入MessageSequence的匿名共享对象。

错误码:

以下错误码的详细介绍请参见​​ohos.rpc错误码​

错误码ID

错误信息

1900003

write to ashmem failed

示例:

let sequence = new rpc.MessageSequence();
let ashmem;
try {
    ashmem = rpc.Ashmem.create("ashmem", 1024);
} catch(error) {
    console.info("rpc create ashmem fail, errorCode " + error.code);
    console.info("rpc creat ashmem fail, errorMessage" + error.message);
}
try {
    sequence.writeAshmem(ashmem);
} catch(error) {
    console.info("rpc write ashmem fail, errorCode " + error.code);
    console.info("rpc write ashmem fail, errorMessage" + error.message);
}

readAshmem

readAshmem(): Ashmem

从MessageSequence读取匿名共享对象。

系统能力:SystemCapability.Communication.IPC.Core

返回值:

类型

说明

Ashmem

返回匿名共享对象。

错误码:

以下错误码的详细介绍请参见​​ohos.rpc错误码​

错误码ID

错误信息

1900004

read from ashmem failed

示例:

let sequence = new rpc.MessageSequence();
let ashmem;
try {
    ashmem = rpc.Ashmem.create("ashmem", 1024);
} catch(error) {
    console.info("rpc create ashmem fail, errorCode " + error.code);
    console.info("rpc creat ashmem fail, errorMessage" + error.message);
}
try {
    sequence.writeAshmem(ashmem);
} catch(error) {
    console.info("rpc write ashmem fail, errorCode " + error.code);
    console.info("rpc write ashmem fail, errorMessage" + error.message);
}
try {
    let readAshmem = sequence.readAshmem();
    console.log("RpcTest: read ashmem to result is : " + readAshmem);
} catch(error) {
    console.info("rpc read ashmem fail, errorCode " + error.code);
    console.info("rpc read ashmem fail, errorMessage" + error.message);
}

getRawDataCapacity

getRawDataCapacity(): number

获取MessageSequence可以容纳的最大原始数据量。

系统能力:SystemCapability.Communication.IPC.Core

返回值:

类型

说明

number

返回MessageSequence可以容纳的最大原始数据量,即128 Mb。

示例:

let sequence = new rpc.MessageSequence();
let result = sequence.getRawDataCapacity();
console.log("RpcTest: sequence get RawDataCapacity result is : " + result);

writeRawData

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

将原始数据写入MessageSequence对象。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名

类型

必填

说明

rawData

number[]

要写入的原始数据。

size

number

发送的原始数据大小,以字节为单位。

错误码:

以下错误码的详细介绍请参见​​ohos.rpc错误码​

错误码ID

错误信息

1900009

write data to message sequence failed

示例:

let sequence = new rpc.MessageSequence();
let arr = [1, 2, 3, 4, 5];
try {
    sequence.writeRawData(arr, arr.length);
} catch(error) {
    console.info("rpc write rawdata fail, errorCode " + error.code);
    console.info("rpc write rawdata fail, errorMessage" + error.message);
}

readRawData

readRawData(size: number): number[]

从MessageSequence读取原始数据。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名

类型

必填

说明

size

number

要读取的原始数据的大小。

返回值:

类型

说明

number[]

返回原始数据(以字节为单位)。

错误码:

以下错误码的详细介绍请参见​​ohos.rpc错误码​

错误码ID

错误信息

1900010

read data from message sequence failed

示例:

let sequence = new rpc.MessageSequence();
let arr = [1, 2, 3, 4, 5];
try {
    sequence.writeRawData(arr, arr.length);
} catch(error) {
    console.info("rpc write rawdata fail, errorCode " + error.code);
    console.info("rpc write rawdata fail, errorMessage" + error.message);
}
try {
    let result = sequence.readRawData(5);
    console.log("RpcTest: sequence read raw data result is : " + result);
} catch(error) {
    console.info("rpc read rawdata fail, errorCode " + error.code);
    console.info("rpc read rawdata fail, errorMessage" + error.message);
}

MessageParcel(deprecated)

从API version 9 开始不再维护,建议使用​​MessageSequence​​类替代。

在RPC过程中,发送方可以使用MessageParcel提供的写方法,将待发送的数据以特定格式写入该对象。接收方可以使用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 {
    onRemoteMessageRequest(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 {
    onRemoteMessageRequest(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);

文章转载自:​​https://developer.harmonyos.com/cn/docs/documentation/doc-references-V3/js-apis-rpc-0000001427902704-V3?catalogVersion=V3#ZH-CN_TOPIC_0000001427902704__writelongarray-1​

已于2023-4-7 15:58:24修改
收藏
回复
举报
回复
    相关推荐