1e41f4b71Sopenharmony_ci# @ohos.rpc (RPC)
2e41f4b71Sopenharmony_ci
3e41f4b71Sopenharmony_ciThe **RPC** module implements communication between processes, including inter-process communication (IPC) on a single device and remote procedure call (RPC) between processes on difference devices. IPC is implemented based on the Binder driver, and RPC is based on the DSoftBus driver.
4e41f4b71Sopenharmony_ci
5e41f4b71Sopenharmony_ci> **NOTE**
6e41f4b71Sopenharmony_ci>
7e41f4b71Sopenharmony_ci> - The initial APIs of this module are supported since API version 7. Newly added APIs will be marked with a superscript to indicate their earliest API version.
8e41f4b71Sopenharmony_ci>
9e41f4b71Sopenharmony_ci> - This module supports return of error codes since API version 9.
10e41f4b71Sopenharmony_ci
11e41f4b71Sopenharmony_ci## Modules to Import
12e41f4b71Sopenharmony_ci
13e41f4b71Sopenharmony_ci```
14e41f4b71Sopenharmony_ciimport { rpc } from '@kit.IPCKit';
15e41f4b71Sopenharmony_ci```
16e41f4b71Sopenharmony_ci
17e41f4b71Sopenharmony_ci## ErrorCode<sup>9+</sup>
18e41f4b71Sopenharmony_ci
19e41f4b71Sopenharmony_ciThe APIs of this module return exceptions since API version 9. The following table lists the error codes.
20e41f4b71Sopenharmony_ci
21e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
22e41f4b71Sopenharmony_ci
23e41f4b71Sopenharmony_ci| Name                                 | Value     | Description                                         |
24e41f4b71Sopenharmony_ci| ------------------------------------- | ------- | --------------------------------------------- |
25e41f4b71Sopenharmony_ci| CHECK_PARAM_ERROR                     | 401     | Parameter check failed.                               |
26e41f4b71Sopenharmony_ci| OS_MMAP_ERROR                         | 1900001 | Failed to call mmap.                       |
27e41f4b71Sopenharmony_ci| OS_IOCTL_ERROR                        | 1900002 | Failed to call **ioctl** with the shared memory file descriptor.|
28e41f4b71Sopenharmony_ci| WRITE_TO_ASHMEM_ERROR                 | 1900003 | Failed to write data to the shared memory.                       |
29e41f4b71Sopenharmony_ci| READ_FROM_ASHMEM_ERROR                | 1900004 | Failed to read data from the shared memory.                       |
30e41f4b71Sopenharmony_ci| ONLY_PROXY_OBJECT_PERMITTED_ERROR     | 1900005 | This operation is allowed only on the proxy object.                    |
31e41f4b71Sopenharmony_ci| ONLY_REMOTE_OBJECT_PERMITTED_ERROR    | 1900006 | This operation is allowed only on the remote object.                   |
32e41f4b71Sopenharmony_ci| COMMUNICATION_ERROR                   | 1900007 | Failed to communicate with the remote object over IPC.               |
33e41f4b71Sopenharmony_ci| PROXY_OR_REMOTE_OBJECT_INVALID_ERROR  | 1900008 | Invalid proxy or remote object.                 |
34e41f4b71Sopenharmony_ci| WRITE_DATA_TO_MESSAGE_SEQUENCE_ERROR  | 1900009 | Failed to write data to MessageSequence.                |
35e41f4b71Sopenharmony_ci| READ_DATA_FROM_MESSAGE_SEQUENCE_ERROR | 1900010 | Failed to read data from MessageSequence.                |
36e41f4b71Sopenharmony_ci| PARCEL_MEMORY_ALLOC_ERROR             | 1900011 | Failed to allocate memory during serialization.                   |
37e41f4b71Sopenharmony_ci| CALL_JS_METHOD_ERROR                  | 1900012 | Failed to invoke the JS callback.                         |
38e41f4b71Sopenharmony_ci| OS_DUP_ERROR                          | 1900013 | Failed to call dup.                        |
39e41f4b71Sopenharmony_ci
40e41f4b71Sopenharmony_ci
41e41f4b71Sopenharmony_ci## TypeCode<sup>12+</sup>
42e41f4b71Sopenharmony_ci
43e41f4b71Sopenharmony_ciSince API version 12, [writeArrayBuffer](#writearraybuffer12) and [readArrayBuffer](#readarraybuffer12) are added to pass ArrayBuffer data. The specific TypedArray type is determined by **TypeCode** defined as follows:
44e41f4b71Sopenharmony_ci
45e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
46e41f4b71Sopenharmony_ci
47e41f4b71Sopenharmony_ci| Name                        | Value    | Description                                         |
48e41f4b71Sopenharmony_ci| ---------------------------- | ------ | --------------------------------------------  |
49e41f4b71Sopenharmony_ci| INT8_ARRAY                   | 0      | The TypedArray type is **INT8_ARRAY**.                 |
50e41f4b71Sopenharmony_ci| UINT8_ARRAY                  | 1      | The TypedArray type is **UINT8_ARRAY**.                |
51e41f4b71Sopenharmony_ci| INT16_ARRAY                  | 2      | The TypedArray type is **INT16_ARRAY**.                |
52e41f4b71Sopenharmony_ci| UINT16_ARRAY                 | 3      | The TypedArray type is **UINT16_ARRAY**.               |
53e41f4b71Sopenharmony_ci| INT32_ARRAY                  | 4      | The TypedArray type is **INT32_ARRAY**.                |
54e41f4b71Sopenharmony_ci| UINT32_ARRAY                 | 5      | The TypedArray type is **UINT32_ARRAY**.               |
55e41f4b71Sopenharmony_ci| FLOAT32_ARRAY                | 6      | The TypedArray type is **FLOAT32_ARRAY**.              |
56e41f4b71Sopenharmony_ci| FLOAT64_ARRAY                | 7      | The TypedArray type is **FLOAT64_ARRAY**.              |
57e41f4b71Sopenharmony_ci| BIGINT64_ARRAY               | 8      | The TypedArray type is **BIGINT64_ARRAY**.             |
58e41f4b71Sopenharmony_ci| BIGUINT64_ARRAY              | 9      | The TypedArray type is **BIGUINT64_ARRAY**.            |
59e41f4b71Sopenharmony_ci
60e41f4b71Sopenharmony_ci
61e41f4b71Sopenharmony_ci## MessageSequence<sup>9+</sup>
62e41f4b71Sopenharmony_ci
63e41f4b71Sopenharmony_ciProvides APIs for reading and writing data in specific format. During RPC or IPC, the sender can use the **write()** method provided by **MessageSequence** to write data in specific format to a **MessageSequence** object. The receiver can use the **read()** method provided by **MessageSequence** to read data in specific format from a **MessageSequence** object. The data formats include basic data types and arrays, IPC objects, interface tokens, and custom sequenceable objects.
64e41f4b71Sopenharmony_ci
65e41f4b71Sopenharmony_ci### create
66e41f4b71Sopenharmony_ci
67e41f4b71Sopenharmony_cistatic create(): MessageSequence
68e41f4b71Sopenharmony_ci
69e41f4b71Sopenharmony_ciCreates a **MessageSequence** object. This API is a static method.
70e41f4b71Sopenharmony_ci
71e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
72e41f4b71Sopenharmony_ci
73e41f4b71Sopenharmony_ci**Return value**
74e41f4b71Sopenharmony_ci
75e41f4b71Sopenharmony_ci| Type           | Description                           |
76e41f4b71Sopenharmony_ci| --------------- | ------------------------------- |
77e41f4b71Sopenharmony_ci| [MessageSequence](#messagesequence9) | **MessageSequence** object created.|
78e41f4b71Sopenharmony_ci
79e41f4b71Sopenharmony_ci**Example**
80e41f4b71Sopenharmony_ci
81e41f4b71Sopenharmony_ci  ```ts
82e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
83e41f4b71Sopenharmony_ci
84e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
85e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: data is ' + data);
86e41f4b71Sopenharmony_ci  ```
87e41f4b71Sopenharmony_ci
88e41f4b71Sopenharmony_ci### reclaim
89e41f4b71Sopenharmony_ci
90e41f4b71Sopenharmony_cireclaim(): void
91e41f4b71Sopenharmony_ci
92e41f4b71Sopenharmony_ciReclaims the **MessageSequence** object that is no longer used.
93e41f4b71Sopenharmony_ci
94e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
95e41f4b71Sopenharmony_ci
96e41f4b71Sopenharmony_ci**Example**
97e41f4b71Sopenharmony_ci
98e41f4b71Sopenharmony_ci  ```ts
99e41f4b71Sopenharmony_ci  let reply = rpc.MessageSequence.create();
100e41f4b71Sopenharmony_ci  reply.reclaim();
101e41f4b71Sopenharmony_ci  ```
102e41f4b71Sopenharmony_ci
103e41f4b71Sopenharmony_ci### writeRemoteObject
104e41f4b71Sopenharmony_ci
105e41f4b71Sopenharmony_ciwriteRemoteObject(object: IRemoteObject): void
106e41f4b71Sopenharmony_ci
107e41f4b71Sopenharmony_ciSerializes a remote object and writes it to this **MessageSequence** object.
108e41f4b71Sopenharmony_ci
109e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
110e41f4b71Sopenharmony_ci
111e41f4b71Sopenharmony_ci**Parameters**
112e41f4b71Sopenharmony_ci
113e41f4b71Sopenharmony_ci| Name| Type                           | Mandatory| Description                                     |
114e41f4b71Sopenharmony_ci| ------ | ------------------------------- | ---- | ----------------------------------------- |
115e41f4b71Sopenharmony_ci| object | [IRemoteObject](#iremoteobject) | Yes  | Remote object to serialize and write to the **MessageSequence** object.|
116e41f4b71Sopenharmony_ci
117e41f4b71Sopenharmony_ci**Error codes**
118e41f4b71Sopenharmony_ci
119e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
120e41f4b71Sopenharmony_ci
121e41f4b71Sopenharmony_ci| ID| Error Message|
122e41f4b71Sopenharmony_ci| -------- | -------- |
123e41f4b71Sopenharmony_ci| 401      | check param failed |
124e41f4b71Sopenharmony_ci| 1900008  | proxy or remote object is invalid |
125e41f4b71Sopenharmony_ci| 1900009  | write data to message sequence failed |
126e41f4b71Sopenharmony_ci
127e41f4b71Sopenharmony_ci**Example**
128e41f4b71Sopenharmony_ci
129e41f4b71Sopenharmony_ci  ```ts
130e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
131e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
132e41f4b71Sopenharmony_ci
133e41f4b71Sopenharmony_ci  class TestRemoteObject extends rpc.RemoteObject {
134e41f4b71Sopenharmony_ci    constructor(descriptor: string) {
135e41f4b71Sopenharmony_ci      super(descriptor);
136e41f4b71Sopenharmony_ci    }
137e41f4b71Sopenharmony_ci  }
138e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
139e41f4b71Sopenharmony_ci  let testRemoteObject = new TestRemoteObject("testObject");
140e41f4b71Sopenharmony_ci  try {
141e41f4b71Sopenharmony_ci    data.writeRemoteObject(testRemoteObject);
142e41f4b71Sopenharmony_ci  } catch (error) {
143e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
144e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'Rpc write remote object fail, errorCode ' + e.code);
145e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'Rpc write remote object fail, errorMessage ' + e.message);
146e41f4b71Sopenharmony_ci  }
147e41f4b71Sopenharmony_ci  ```
148e41f4b71Sopenharmony_ci
149e41f4b71Sopenharmony_ci### readRemoteObject
150e41f4b71Sopenharmony_ci
151e41f4b71Sopenharmony_cireadRemoteObject(): IRemoteObject
152e41f4b71Sopenharmony_ci
153e41f4b71Sopenharmony_ciReads the remote object from **MessageSequence**. You can use this API to deserialize the **MessageSequence** object to generate an **IRemoteObject**. The remote object is read in the order in which it is written to this **MessageSequence** object.
154e41f4b71Sopenharmony_ci
155e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
156e41f4b71Sopenharmony_ci
157e41f4b71Sopenharmony_ci**Return value**
158e41f4b71Sopenharmony_ci
159e41f4b71Sopenharmony_ci| Type                           | Description              |
160e41f4b71Sopenharmony_ci| ------------------------------- | ------------------ |
161e41f4b71Sopenharmony_ci| [IRemoteObject](#iremoteobject) | Remote object obtained.|
162e41f4b71Sopenharmony_ci
163e41f4b71Sopenharmony_ci**Error codes**
164e41f4b71Sopenharmony_ci
165e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
166e41f4b71Sopenharmony_ci
167e41f4b71Sopenharmony_ci| ID| Error Message|
168e41f4b71Sopenharmony_ci| -------- | -------- |
169e41f4b71Sopenharmony_ci| 1900008  | proxy or remote object is invalid |
170e41f4b71Sopenharmony_ci| 1900010  | read data from message sequence failed |
171e41f4b71Sopenharmony_ci
172e41f4b71Sopenharmony_ci**Example**
173e41f4b71Sopenharmony_ci
174e41f4b71Sopenharmony_ci  ```ts
175e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
176e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
177e41f4b71Sopenharmony_ci
178e41f4b71Sopenharmony_ci  class TestRemoteObject extends rpc.RemoteObject {
179e41f4b71Sopenharmony_ci    constructor(descriptor: string) {
180e41f4b71Sopenharmony_ci      super(descriptor);
181e41f4b71Sopenharmony_ci    }
182e41f4b71Sopenharmony_ci  }
183e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
184e41f4b71Sopenharmony_ci  let testRemoteObject = new TestRemoteObject("testObject");
185e41f4b71Sopenharmony_ci  try {
186e41f4b71Sopenharmony_ci    data.writeRemoteObject(testRemoteObject);
187e41f4b71Sopenharmony_ci    let proxy = data.readRemoteObject();
188e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', 'RpcClient: readRemoteObject is ' + proxy);
189e41f4b71Sopenharmony_ci  } catch (error) {
190e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
191e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'Rpc write remote object fail, errorCode ' + e.code);
192e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'Rpc write remote object fail, errorMessage ' + e.message);
193e41f4b71Sopenharmony_ci  }
194e41f4b71Sopenharmony_ci  ```
195e41f4b71Sopenharmony_ci
196e41f4b71Sopenharmony_ci### writeInterfaceToken
197e41f4b71Sopenharmony_ci
198e41f4b71Sopenharmony_ciwriteInterfaceToken(token: string): void
199e41f4b71Sopenharmony_ci
200e41f4b71Sopenharmony_ciWrites an interface token to this **MessageSequence** object. The remote object can use this interface token to verify the communication.
201e41f4b71Sopenharmony_ci
202e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
203e41f4b71Sopenharmony_ci
204e41f4b71Sopenharmony_ci**Parameters**
205e41f4b71Sopenharmony_ci
206e41f4b71Sopenharmony_ci| Name| Type  | Mandatory| Description              |
207e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------ |
208e41f4b71Sopenharmony_ci| token  | string | Yes  | Interface token to write.|
209e41f4b71Sopenharmony_ci
210e41f4b71Sopenharmony_ci**Error codes**
211e41f4b71Sopenharmony_ci
212e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
213e41f4b71Sopenharmony_ci
214e41f4b71Sopenharmony_ci| ID| Error Message|
215e41f4b71Sopenharmony_ci| -------- | -------- |
216e41f4b71Sopenharmony_ci| 401      | check param failed |
217e41f4b71Sopenharmony_ci| 1900009  | write data to message sequence failed |
218e41f4b71Sopenharmony_ci
219e41f4b71Sopenharmony_ci**Example**
220e41f4b71Sopenharmony_ci
221e41f4b71Sopenharmony_ci  ```ts
222e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
223e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
224e41f4b71Sopenharmony_ci
225e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
226e41f4b71Sopenharmony_ci  try {
227e41f4b71Sopenharmony_ci    data.writeInterfaceToken("aaa");
228e41f4b71Sopenharmony_ci  } catch (error) {
229e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
230e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write interface fail, errorCode ' + e.code);
231e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write interface fail, errorMessage ' + e.message);
232e41f4b71Sopenharmony_ci  }
233e41f4b71Sopenharmony_ci  ```
234e41f4b71Sopenharmony_ci
235e41f4b71Sopenharmony_ci### readInterfaceToken
236e41f4b71Sopenharmony_ci
237e41f4b71Sopenharmony_cireadInterfaceToken(): string
238e41f4b71Sopenharmony_ci
239e41f4b71Sopenharmony_ciReads the interface token from this **MessageSequence** object. The interface token is read in the sequence in which it is written to the **MessageSequence** object. The local object can use it to verify the communication.
240e41f4b71Sopenharmony_ci
241e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
242e41f4b71Sopenharmony_ci
243e41f4b71Sopenharmony_ci**Return value**
244e41f4b71Sopenharmony_ci
245e41f4b71Sopenharmony_ci| Type  | Description                    |
246e41f4b71Sopenharmony_ci| ------ | ------------------------ |
247e41f4b71Sopenharmony_ci| string | Interface token obtained.|
248e41f4b71Sopenharmony_ci
249e41f4b71Sopenharmony_ci**Error codes**
250e41f4b71Sopenharmony_ci
251e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
252e41f4b71Sopenharmony_ci
253e41f4b71Sopenharmony_ci| ID| Error Message|
254e41f4b71Sopenharmony_ci| -------- | -------- |
255e41f4b71Sopenharmony_ci| 1900010  | read data from message sequence failed |
256e41f4b71Sopenharmony_ci
257e41f4b71Sopenharmony_ci**Example**
258e41f4b71Sopenharmony_ci
259e41f4b71Sopenharmony_ci```ts
260e41f4b71Sopenharmony_ciimport { hilog } from '@kit.PerformanceAnalysisKit';
261e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
262e41f4b71Sopenharmony_ci
263e41f4b71Sopenharmony_ciclass Stub extends rpc.RemoteObject {
264e41f4b71Sopenharmony_ci  onRemoteMessageRequest(code: number, data: rpc.MessageSequence, reply: rpc.MessageSequence, option: rpc.MessageOption): boolean | Promise<boolean> {
265e41f4b71Sopenharmony_ci    try {
266e41f4b71Sopenharmony_ci      let interfaceToken = data.readInterfaceToken();
267e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcServer: interfaceToken is ' + interfaceToken);
268e41f4b71Sopenharmony_ci    } catch (error) {
269e41f4b71Sopenharmony_ci      let e: BusinessError = error as BusinessError;
270e41f4b71Sopenharmony_ci      hilog.error(0x0000, 'testTag', 'RpcServer: read interfaceToken failed, errorCode ' + e.code);
271e41f4b71Sopenharmony_ci      hilog.error(0x0000, 'testTag', 'RpcServer: read interfaceToken failed, errorMessage ' + e.message);
272e41f4b71Sopenharmony_ci    }
273e41f4b71Sopenharmony_ci    return true;
274e41f4b71Sopenharmony_ci  }
275e41f4b71Sopenharmony_ci}
276e41f4b71Sopenharmony_ci```
277e41f4b71Sopenharmony_ci
278e41f4b71Sopenharmony_ci### getSize
279e41f4b71Sopenharmony_ci
280e41f4b71Sopenharmony_cigetSize(): number
281e41f4b71Sopenharmony_ci
282e41f4b71Sopenharmony_ciObtains the data size of this **MessageSequence** object.
283e41f4b71Sopenharmony_ci
284e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
285e41f4b71Sopenharmony_ci
286e41f4b71Sopenharmony_ci**Return value**
287e41f4b71Sopenharmony_ci
288e41f4b71Sopenharmony_ci| Type  | Description                                           |
289e41f4b71Sopenharmony_ci| ------ | ----------------------------------------------- |
290e41f4b71Sopenharmony_ci| number | Size of the **MessageSequence** instance obtained, in bytes.|
291e41f4b71Sopenharmony_ci
292e41f4b71Sopenharmony_ci**Example**
293e41f4b71Sopenharmony_ci
294e41f4b71Sopenharmony_ci  ```ts
295e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
296e41f4b71Sopenharmony_ci
297e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
298e41f4b71Sopenharmony_ci  let size = data.getSize();
299e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: size is ' + size);
300e41f4b71Sopenharmony_ci  ```
301e41f4b71Sopenharmony_ci
302e41f4b71Sopenharmony_ci### getCapacity
303e41f4b71Sopenharmony_ci
304e41f4b71Sopenharmony_cigetCapacity(): number
305e41f4b71Sopenharmony_ci
306e41f4b71Sopenharmony_ciObtains the capacity of this **MessageSequence** object.
307e41f4b71Sopenharmony_ci
308e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
309e41f4b71Sopenharmony_ci
310e41f4b71Sopenharmony_ci**Return value**
311e41f4b71Sopenharmony_ci
312e41f4b71Sopenharmony_ci| Type  | Description |
313e41f4b71Sopenharmony_ci| ------ | ----- |
314e41f4b71Sopenharmony_ci| number | Capacity of the obtained **MessageSequence** object, in bytes.|
315e41f4b71Sopenharmony_ci
316e41f4b71Sopenharmony_ci**Example**
317e41f4b71Sopenharmony_ci
318e41f4b71Sopenharmony_ci  ```ts
319e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
320e41f4b71Sopenharmony_ci
321e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
322e41f4b71Sopenharmony_ci  let result = data.getCapacity();
323e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: capacity is ' + result);
324e41f4b71Sopenharmony_ci  ```
325e41f4b71Sopenharmony_ci
326e41f4b71Sopenharmony_ci### setSize
327e41f4b71Sopenharmony_ci
328e41f4b71Sopenharmony_cisetSize(size: number): void
329e41f4b71Sopenharmony_ci
330e41f4b71Sopenharmony_ciSets the size of the data contained in this **MessageSequence** object.
331e41f4b71Sopenharmony_ci
332e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
333e41f4b71Sopenharmony_ci
334e41f4b71Sopenharmony_ci**Parameters**
335e41f4b71Sopenharmony_ci
336e41f4b71Sopenharmony_ci| Name| Type  | Mandatory| Description  |
337e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------ |
338e41f4b71Sopenharmony_ci| size   | number | Yes  | Data size to set, in bytes.|
339e41f4b71Sopenharmony_ci
340e41f4b71Sopenharmony_ci**Error codes**
341e41f4b71Sopenharmony_ci
342e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
343e41f4b71Sopenharmony_ci
344e41f4b71Sopenharmony_ci| ID| Error Message|
345e41f4b71Sopenharmony_ci| -------- | -------- |
346e41f4b71Sopenharmony_ci| 401      | check param failed |
347e41f4b71Sopenharmony_ci
348e41f4b71Sopenharmony_ci**Example**
349e41f4b71Sopenharmony_ci
350e41f4b71Sopenharmony_ci  ```ts
351e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
352e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
353e41f4b71Sopenharmony_ci
354e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
355e41f4b71Sopenharmony_ci  data.writeString('Hello World');
356e41f4b71Sopenharmony_ci  try {
357e41f4b71Sopenharmony_ci    data.setSize(16);
358e41f4b71Sopenharmony_ci  } catch (error) {
359e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
360e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc set size of MessageSequence fail, errorCode ' + e.code);
361e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc set size of MessageSequence fail, errorMessage ' + e.message);
362e41f4b71Sopenharmony_ci  }
363e41f4b71Sopenharmony_ci  ```
364e41f4b71Sopenharmony_ci
365e41f4b71Sopenharmony_ci### setCapacity
366e41f4b71Sopenharmony_ci
367e41f4b71Sopenharmony_cisetCapacity(size: number): void
368e41f4b71Sopenharmony_ci
369e41f4b71Sopenharmony_ciSets the storage capacity of this **MessageSequence** object.
370e41f4b71Sopenharmony_ci
371e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
372e41f4b71Sopenharmony_ci
373e41f4b71Sopenharmony_ci**Parameters**
374e41f4b71Sopenharmony_ci
375e41f4b71Sopenharmony_ci| Name| Type  | Mandatory| Description                                         |
376e41f4b71Sopenharmony_ci| ------ | ------ | ---- | --------------------------------------------- |
377e41f4b71Sopenharmony_ci| size   | number | Yes  | Storage capacity of the **MessageSequence** object to set, in bytes.|
378e41f4b71Sopenharmony_ci
379e41f4b71Sopenharmony_ci**Error codes**
380e41f4b71Sopenharmony_ci
381e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
382e41f4b71Sopenharmony_ci
383e41f4b71Sopenharmony_ci| ID| Error Message|
384e41f4b71Sopenharmony_ci| -------- | -------- |
385e41f4b71Sopenharmony_ci| 401      | check param failed |
386e41f4b71Sopenharmony_ci| 1900011  | parcel memory alloc failed |
387e41f4b71Sopenharmony_ci
388e41f4b71Sopenharmony_ci**Example**
389e41f4b71Sopenharmony_ci
390e41f4b71Sopenharmony_ci  ```ts
391e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
392e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
393e41f4b71Sopenharmony_ci
394e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
395e41f4b71Sopenharmony_ci  try {
396e41f4b71Sopenharmony_ci    data.setCapacity(100);
397e41f4b71Sopenharmony_ci  } catch (error) {
398e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
399e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc memory alloc fail, errorCode ' + e.code);
400e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc memory alloc fail, errorMessage ' + e.message);
401e41f4b71Sopenharmony_ci  }
402e41f4b71Sopenharmony_ci  ```
403e41f4b71Sopenharmony_ci
404e41f4b71Sopenharmony_ci### getWritableBytes
405e41f4b71Sopenharmony_ci
406e41f4b71Sopenharmony_cigetWritableBytes(): number
407e41f4b71Sopenharmony_ci
408e41f4b71Sopenharmony_ciObtains the writable capacity (in bytes) of this **MessageSequence** object.
409e41f4b71Sopenharmony_ci
410e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
411e41f4b71Sopenharmony_ci
412e41f4b71Sopenharmony_ci**Return value**
413e41f4b71Sopenharmony_ci
414e41f4b71Sopenharmony_ci| Type  | Description  |
415e41f4b71Sopenharmony_ci| ------ | ------ |
416e41f4b71Sopenharmony_ci| number | Writable capacity of the **MessageSequence** instance, in bytes.|
417e41f4b71Sopenharmony_ci
418e41f4b71Sopenharmony_ci**Example**
419e41f4b71Sopenharmony_ci
420e41f4b71Sopenharmony_ci```ts
421e41f4b71Sopenharmony_ciimport { hilog } from '@kit.PerformanceAnalysisKit';
422e41f4b71Sopenharmony_ci
423e41f4b71Sopenharmony_ciclass Stub extends rpc.RemoteObject {
424e41f4b71Sopenharmony_ci  onRemoteMessageRequest(code: number, data: rpc.MessageSequence, reply: rpc.MessageSequence, option: rpc.MessageOption): boolean | Promise<boolean> {
425e41f4b71Sopenharmony_ci    let getWritableBytes = data.getWritableBytes();
426e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', 'RpcServer: getWritableBytes is ' + getWritableBytes);
427e41f4b71Sopenharmony_ci    return true;
428e41f4b71Sopenharmony_ci  }
429e41f4b71Sopenharmony_ci}
430e41f4b71Sopenharmony_ci```
431e41f4b71Sopenharmony_ci
432e41f4b71Sopenharmony_ci### getReadableBytes
433e41f4b71Sopenharmony_ci
434e41f4b71Sopenharmony_cigetReadableBytes(): number
435e41f4b71Sopenharmony_ci
436e41f4b71Sopenharmony_ciObtains the readable capacity of this **MessageSequence** object.
437e41f4b71Sopenharmony_ci
438e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
439e41f4b71Sopenharmony_ci
440e41f4b71Sopenharmony_ci**Return value**
441e41f4b71Sopenharmony_ci
442e41f4b71Sopenharmony_ci| Type  | Description   |
443e41f4b71Sopenharmony_ci| ------ | ------- |
444e41f4b71Sopenharmony_ci| number | Readable capacity of the **MessageSequence** instance, in bytes.|
445e41f4b71Sopenharmony_ci
446e41f4b71Sopenharmony_ci**Example**
447e41f4b71Sopenharmony_ci
448e41f4b71Sopenharmony_ci```ts
449e41f4b71Sopenharmony_ciimport { hilog } from '@kit.PerformanceAnalysisKit';
450e41f4b71Sopenharmony_ci
451e41f4b71Sopenharmony_ciclass Stub extends rpc.RemoteObject {
452e41f4b71Sopenharmony_ci  onRemoteMessageRequest(code: number, data: rpc.MessageSequence, reply: rpc.MessageSequence, option: rpc.MessageOption): boolean | Promise<boolean> {
453e41f4b71Sopenharmony_ci    let result = data.getReadableBytes();
454e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', 'RpcServer: getReadableBytes is ' + result);
455e41f4b71Sopenharmony_ci    return true;
456e41f4b71Sopenharmony_ci  }
457e41f4b71Sopenharmony_ci}
458e41f4b71Sopenharmony_ci```
459e41f4b71Sopenharmony_ci
460e41f4b71Sopenharmony_ci### getReadPosition
461e41f4b71Sopenharmony_ci
462e41f4b71Sopenharmony_cigetReadPosition(): number
463e41f4b71Sopenharmony_ci
464e41f4b71Sopenharmony_ciObtains the read position of this **MessageSequence** object.
465e41f4b71Sopenharmony_ci
466e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
467e41f4b71Sopenharmony_ci
468e41f4b71Sopenharmony_ci**Return value**
469e41f4b71Sopenharmony_ci
470e41f4b71Sopenharmony_ci| Type  | Description  |
471e41f4b71Sopenharmony_ci| ------ | ------ |
472e41f4b71Sopenharmony_ci| number | Read position obtained.|
473e41f4b71Sopenharmony_ci
474e41f4b71Sopenharmony_ci**Example**
475e41f4b71Sopenharmony_ci
476e41f4b71Sopenharmony_ci  ```ts
477e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
478e41f4b71Sopenharmony_ci
479e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
480e41f4b71Sopenharmony_ci  let readPos = data.getReadPosition();
481e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: readPos is ' + readPos);
482e41f4b71Sopenharmony_ci  ```
483e41f4b71Sopenharmony_ci
484e41f4b71Sopenharmony_ci### getWritePosition
485e41f4b71Sopenharmony_ci
486e41f4b71Sopenharmony_cigetWritePosition(): number
487e41f4b71Sopenharmony_ci
488e41f4b71Sopenharmony_ciObtains the write position of this **MessageSequence** object.
489e41f4b71Sopenharmony_ci
490e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
491e41f4b71Sopenharmony_ci
492e41f4b71Sopenharmony_ci**Return value**
493e41f4b71Sopenharmony_ci
494e41f4b71Sopenharmony_ci| Type  | Description |
495e41f4b71Sopenharmony_ci| ------ | ----- |
496e41f4b71Sopenharmony_ci| number | Write position obtained.|
497e41f4b71Sopenharmony_ci
498e41f4b71Sopenharmony_ci**Example**
499e41f4b71Sopenharmony_ci
500e41f4b71Sopenharmony_ci  ```ts
501e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
502e41f4b71Sopenharmony_ci
503e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
504e41f4b71Sopenharmony_ci  data.writeInt(10);
505e41f4b71Sopenharmony_ci  let bwPos = data.getWritePosition();
506e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: bwPos is ' + bwPos);
507e41f4b71Sopenharmony_ci  ```
508e41f4b71Sopenharmony_ci
509e41f4b71Sopenharmony_ci### rewindRead
510e41f4b71Sopenharmony_ci
511e41f4b71Sopenharmony_cirewindRead(pos: number): void
512e41f4b71Sopenharmony_ci
513e41f4b71Sopenharmony_ciMoves the read pointer to the specified position.
514e41f4b71Sopenharmony_ci
515e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
516e41f4b71Sopenharmony_ci
517e41f4b71Sopenharmony_ci**Parameters**
518e41f4b71Sopenharmony_ci
519e41f4b71Sopenharmony_ci| Name| Type  | Mandatory| Description   |
520e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------- |
521e41f4b71Sopenharmony_ci| pos    | number | Yes  | Position from which data is to read.|
522e41f4b71Sopenharmony_ci
523e41f4b71Sopenharmony_ci**Error codes**
524e41f4b71Sopenharmony_ci
525e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
526e41f4b71Sopenharmony_ci
527e41f4b71Sopenharmony_ci| ID| Error Message|
528e41f4b71Sopenharmony_ci| -------- | -------- |
529e41f4b71Sopenharmony_ci| 401      | check param failed |
530e41f4b71Sopenharmony_ci
531e41f4b71Sopenharmony_ci**Example**
532e41f4b71Sopenharmony_ci
533e41f4b71Sopenharmony_ci  ```ts
534e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
535e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
536e41f4b71Sopenharmony_ci
537e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
538e41f4b71Sopenharmony_ci  data.writeInt(12);
539e41f4b71Sopenharmony_ci  data.writeString("sequence");
540e41f4b71Sopenharmony_ci  let number = data.readInt();
541e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: number is ' + number);
542e41f4b71Sopenharmony_ci  try {
543e41f4b71Sopenharmony_ci    data.rewindRead(0);
544e41f4b71Sopenharmony_ci  } catch (error) {
545e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
546e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc rewind read data fail, errorCode ' + e.code);
547e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc rewind read data fail, errorMessage ' + e.message);
548e41f4b71Sopenharmony_ci  }
549e41f4b71Sopenharmony_ci  let number2 = data.readInt();
550e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: rewindRead is ' + number2);
551e41f4b71Sopenharmony_ci  ```
552e41f4b71Sopenharmony_ci
553e41f4b71Sopenharmony_ci### rewindWrite
554e41f4b71Sopenharmony_ci
555e41f4b71Sopenharmony_cirewindWrite(pos: number): void
556e41f4b71Sopenharmony_ci
557e41f4b71Sopenharmony_ciMoves the write pointer to the specified position.
558e41f4b71Sopenharmony_ci
559e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
560e41f4b71Sopenharmony_ci
561e41f4b71Sopenharmony_ci**Parameters**
562e41f4b71Sopenharmony_ci
563e41f4b71Sopenharmony_ci| Name| Type  | Mandatory| Description |
564e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ----- |
565e41f4b71Sopenharmony_ci| pos    | number | Yes  | Position from which data is to write.|
566e41f4b71Sopenharmony_ci
567e41f4b71Sopenharmony_ci**Error codes**
568e41f4b71Sopenharmony_ci
569e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
570e41f4b71Sopenharmony_ci
571e41f4b71Sopenharmony_ci| ID| Error Message|
572e41f4b71Sopenharmony_ci| -------- | -------- |
573e41f4b71Sopenharmony_ci| 401      | check param failed |
574e41f4b71Sopenharmony_ci
575e41f4b71Sopenharmony_ci**Example**
576e41f4b71Sopenharmony_ci
577e41f4b71Sopenharmony_ci  ```ts
578e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
579e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
580e41f4b71Sopenharmony_ci
581e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
582e41f4b71Sopenharmony_ci  data.writeInt(4);
583e41f4b71Sopenharmony_ci  try {
584e41f4b71Sopenharmony_ci    data.rewindWrite(0);
585e41f4b71Sopenharmony_ci  } catch (error) {
586e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
587e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc rewindWrite fail, errorCode ' + e.code);
588e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc rewindWrite fail, errorMessage ' + e.message);
589e41f4b71Sopenharmony_ci  }
590e41f4b71Sopenharmony_ci  data.writeInt(5);
591e41f4b71Sopenharmony_ci  let number = data.readInt();
592e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: rewindWrite is: ' + number);
593e41f4b71Sopenharmony_ci  ```
594e41f4b71Sopenharmony_ci
595e41f4b71Sopenharmony_ci### writeByte
596e41f4b71Sopenharmony_ci
597e41f4b71Sopenharmony_ciwriteByte(val: number): void
598e41f4b71Sopenharmony_ci
599e41f4b71Sopenharmony_ciWrites a byte value to this **MessageSequence** object.
600e41f4b71Sopenharmony_ci
601e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
602e41f4b71Sopenharmony_ci
603e41f4b71Sopenharmony_ci**Parameters**
604e41f4b71Sopenharmony_ci
605e41f4b71Sopenharmony_ci| Name| Type  | Mandatory| Description |
606e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ----- |
607e41f4b71Sopenharmony_ci| val    | number | Yes  | Byte value to write.|
608e41f4b71Sopenharmony_ci
609e41f4b71Sopenharmony_ci**Error codes**
610e41f4b71Sopenharmony_ci
611e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
612e41f4b71Sopenharmony_ci
613e41f4b71Sopenharmony_ci| ID| Error Message|
614e41f4b71Sopenharmony_ci| -------- | -------  |
615e41f4b71Sopenharmony_ci| 401      | check param failed |
616e41f4b71Sopenharmony_ci| 1900009  | write data to message sequence failed |
617e41f4b71Sopenharmony_ci
618e41f4b71Sopenharmony_ci**Example**
619e41f4b71Sopenharmony_ci
620e41f4b71Sopenharmony_ci  ```ts
621e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
622e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
623e41f4b71Sopenharmony_ci
624e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
625e41f4b71Sopenharmony_ci  try {
626e41f4b71Sopenharmony_ci    data.writeByte(2);
627e41f4b71Sopenharmony_ci  } catch (error) {
628e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
629e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write byte fail, errorCode ' + e.code);
630e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write byte fail, errorMessage ' + e.message);
631e41f4b71Sopenharmony_ci  }
632e41f4b71Sopenharmony_ci  ```
633e41f4b71Sopenharmony_ci
634e41f4b71Sopenharmony_ci### readByte
635e41f4b71Sopenharmony_ci
636e41f4b71Sopenharmony_cireadByte(): number
637e41f4b71Sopenharmony_ci
638e41f4b71Sopenharmony_ciReads the byte value from this **MessageSequence** object.
639e41f4b71Sopenharmony_ci
640e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
641e41f4b71Sopenharmony_ci
642e41f4b71Sopenharmony_ci**Return value**
643e41f4b71Sopenharmony_ci
644e41f4b71Sopenharmony_ci| Type  | Description |
645e41f4b71Sopenharmony_ci| ------ | ----- |
646e41f4b71Sopenharmony_ci| number | Byte value read.|
647e41f4b71Sopenharmony_ci
648e41f4b71Sopenharmony_ci**Error codes**
649e41f4b71Sopenharmony_ci
650e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
651e41f4b71Sopenharmony_ci
652e41f4b71Sopenharmony_ci| ID| Error Message|
653e41f4b71Sopenharmony_ci| ------- | --------  |
654e41f4b71Sopenharmony_ci| 1900010 | read data from message sequence failed |
655e41f4b71Sopenharmony_ci
656e41f4b71Sopenharmony_ci**Example**
657e41f4b71Sopenharmony_ci
658e41f4b71Sopenharmony_ci  ```ts
659e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
660e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
661e41f4b71Sopenharmony_ci
662e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
663e41f4b71Sopenharmony_ci  try {
664e41f4b71Sopenharmony_ci    data.writeByte(2);
665e41f4b71Sopenharmony_ci  } catch (error) {
666e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
667e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write byte fail, errorCode ' + e.code);
668e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write byte fail, errorMessage ' + e.message);
669e41f4b71Sopenharmony_ci  }
670e41f4b71Sopenharmony_ci  try {
671e41f4b71Sopenharmony_ci    let ret = data.readByte();
672e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', 'RpcClient: readByte is: ' +  ret);
673e41f4b71Sopenharmony_ci  } catch (error) {
674e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
675e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read byte fail, errorCode ' + e.code);
676e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read byte fail, errorMessage ' + e.message);
677e41f4b71Sopenharmony_ci  }
678e41f4b71Sopenharmony_ci  ```
679e41f4b71Sopenharmony_ci
680e41f4b71Sopenharmony_ci### writeShort
681e41f4b71Sopenharmony_ci
682e41f4b71Sopenharmony_ciwriteShort(val: number): void
683e41f4b71Sopenharmony_ci
684e41f4b71Sopenharmony_ciWrites a short integer to this **MessageSequence** object.
685e41f4b71Sopenharmony_ci
686e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
687e41f4b71Sopenharmony_ci
688e41f4b71Sopenharmony_ci**Parameters**
689e41f4b71Sopenharmony_ci
690e41f4b71Sopenharmony_ci| Name| Type  | Mandatory| Description|
691e41f4b71Sopenharmony_ci| ------ | ------ | ---  | ---  |
692e41f4b71Sopenharmony_ci| val    | number | Yes  | Short integer to write.|
693e41f4b71Sopenharmony_ci
694e41f4b71Sopenharmony_ci**Error codes**
695e41f4b71Sopenharmony_ci
696e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
697e41f4b71Sopenharmony_ci
698e41f4b71Sopenharmony_ci| ID| Error Message|
699e41f4b71Sopenharmony_ci| -------- | -------- |
700e41f4b71Sopenharmony_ci| 401      | check param failed |
701e41f4b71Sopenharmony_ci| 1900009  | write data to message sequence failed |
702e41f4b71Sopenharmony_ci
703e41f4b71Sopenharmony_ci**Example**
704e41f4b71Sopenharmony_ci
705e41f4b71Sopenharmony_ci  ```ts
706e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
707e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
708e41f4b71Sopenharmony_ci
709e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
710e41f4b71Sopenharmony_ci  try {
711e41f4b71Sopenharmony_ci    data.writeShort(8);
712e41f4b71Sopenharmony_ci  } catch (error) {
713e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
714e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write short fail, errorCode ' + e.code);
715e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write short fail, errorMessage ' + e.message);
716e41f4b71Sopenharmony_ci  }
717e41f4b71Sopenharmony_ci  ```
718e41f4b71Sopenharmony_ci
719e41f4b71Sopenharmony_ci### readShort
720e41f4b71Sopenharmony_ci
721e41f4b71Sopenharmony_cireadShort(): number
722e41f4b71Sopenharmony_ci
723e41f4b71Sopenharmony_ciReads the short integer from this **MessageSequence** object.
724e41f4b71Sopenharmony_ci
725e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
726e41f4b71Sopenharmony_ci
727e41f4b71Sopenharmony_ci**Return value**
728e41f4b71Sopenharmony_ci
729e41f4b71Sopenharmony_ci| Type  | Description          |
730e41f4b71Sopenharmony_ci| ------ | -------------- |
731e41f4b71Sopenharmony_ci| number | Short integer read.|
732e41f4b71Sopenharmony_ci
733e41f4b71Sopenharmony_ci**Error codes**
734e41f4b71Sopenharmony_ci
735e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
736e41f4b71Sopenharmony_ci
737e41f4b71Sopenharmony_ci| ID| Error Message|
738e41f4b71Sopenharmony_ci| -------- | -------- |
739e41f4b71Sopenharmony_ci| 1900010  | read data from message sequence failed |
740e41f4b71Sopenharmony_ci
741e41f4b71Sopenharmony_ci**Example**
742e41f4b71Sopenharmony_ci
743e41f4b71Sopenharmony_ci  ```ts
744e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
745e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
746e41f4b71Sopenharmony_ci
747e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
748e41f4b71Sopenharmony_ci  try {
749e41f4b71Sopenharmony_ci    data.writeShort(8);
750e41f4b71Sopenharmony_ci  } catch (error) {
751e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
752e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write short fail, errorCode ' + e.code);
753e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write short fail, errorMessage ' + e.message);
754e41f4b71Sopenharmony_ci  }
755e41f4b71Sopenharmony_ci  try {
756e41f4b71Sopenharmony_ci    let ret = data.readShort();
757e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', 'RpcClient: readByte is ' + ret);
758e41f4b71Sopenharmony_ci  } catch (error) {
759e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
760e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read short fail, errorCode ' + e.code);
761e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read short fail, errorMessage ' + e.message);
762e41f4b71Sopenharmony_ci  }
763e41f4b71Sopenharmony_ci  ```
764e41f4b71Sopenharmony_ci
765e41f4b71Sopenharmony_ci### writeInt
766e41f4b71Sopenharmony_ci
767e41f4b71Sopenharmony_ciwriteInt(val: number): void
768e41f4b71Sopenharmony_ci
769e41f4b71Sopenharmony_ciWrites an integer to this **MessageSequence** object.
770e41f4b71Sopenharmony_ci
771e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
772e41f4b71Sopenharmony_ci
773e41f4b71Sopenharmony_ci**Parameters**
774e41f4b71Sopenharmony_ci
775e41f4b71Sopenharmony_ci| Name| Type  | Mandatory| Description            |
776e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ---------------- |
777e41f4b71Sopenharmony_ci| val    | number | Yes  | Integer to write.|
778e41f4b71Sopenharmony_ci
779e41f4b71Sopenharmony_ci**Error codes**
780e41f4b71Sopenharmony_ci
781e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
782e41f4b71Sopenharmony_ci
783e41f4b71Sopenharmony_ci| ID| Error Message|
784e41f4b71Sopenharmony_ci| -------- | -------- |
785e41f4b71Sopenharmony_ci| 401      | check param failed |
786e41f4b71Sopenharmony_ci| 1900009  | write data to message sequence failed |
787e41f4b71Sopenharmony_ci
788e41f4b71Sopenharmony_ci**Example**
789e41f4b71Sopenharmony_ci
790e41f4b71Sopenharmony_ci  ```ts
791e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
792e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
793e41f4b71Sopenharmony_ci
794e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
795e41f4b71Sopenharmony_ci  try {
796e41f4b71Sopenharmony_ci    data.writeInt(10);
797e41f4b71Sopenharmony_ci  } catch (error) {
798e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
799e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write int fail, errorCode ' + e.code);
800e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write int fail, errorMessage ' + e.message);
801e41f4b71Sopenharmony_ci  }
802e41f4b71Sopenharmony_ci  ```
803e41f4b71Sopenharmony_ci
804e41f4b71Sopenharmony_ci### readInt
805e41f4b71Sopenharmony_ci
806e41f4b71Sopenharmony_cireadInt(): number
807e41f4b71Sopenharmony_ci
808e41f4b71Sopenharmony_ciReads the integer from this **MessageSequence** object.
809e41f4b71Sopenharmony_ci
810e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
811e41f4b71Sopenharmony_ci
812e41f4b71Sopenharmony_ci**Return value**
813e41f4b71Sopenharmony_ci
814e41f4b71Sopenharmony_ci| Type  | Description        |
815e41f4b71Sopenharmony_ci| ------ | ------------ |
816e41f4b71Sopenharmony_ci| number | Integer read.|
817e41f4b71Sopenharmony_ci
818e41f4b71Sopenharmony_ci**Error codes**
819e41f4b71Sopenharmony_ci
820e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
821e41f4b71Sopenharmony_ci
822e41f4b71Sopenharmony_ci| ID| Error Message|
823e41f4b71Sopenharmony_ci| -------- | -------- |
824e41f4b71Sopenharmony_ci| 1900010  | read data from message sequence failed |
825e41f4b71Sopenharmony_ci
826e41f4b71Sopenharmony_ci**Example**
827e41f4b71Sopenharmony_ci
828e41f4b71Sopenharmony_ci  ```ts
829e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
830e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
831e41f4b71Sopenharmony_ci
832e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
833e41f4b71Sopenharmony_ci  try {
834e41f4b71Sopenharmony_ci    data.writeInt(10);
835e41f4b71Sopenharmony_ci  } catch (error) {
836e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
837e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write int fail, errorCode ' + e.code);
838e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write int fail, errorMessage ' + e.message);
839e41f4b71Sopenharmony_ci  }
840e41f4b71Sopenharmony_ci  try {
841e41f4b71Sopenharmony_ci    let ret = data.readInt();
842e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', 'RpcClient: readInt is ' + ret);
843e41f4b71Sopenharmony_ci  } catch (error) {
844e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
845e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read int fail, errorCode ' + e.code);
846e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read int fail, errorMessage ' + e.message);
847e41f4b71Sopenharmony_ci  }
848e41f4b71Sopenharmony_ci  ```
849e41f4b71Sopenharmony_ci
850e41f4b71Sopenharmony_ci### writeLong
851e41f4b71Sopenharmony_ci
852e41f4b71Sopenharmony_ciwriteLong(val: number): void
853e41f4b71Sopenharmony_ci
854e41f4b71Sopenharmony_ciWrites a long integer to this **MessageSequence** object.
855e41f4b71Sopenharmony_ci
856e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
857e41f4b71Sopenharmony_ci
858e41f4b71Sopenharmony_ci**Parameters**
859e41f4b71Sopenharmony_ci
860e41f4b71Sopenharmony_ci| Name| Type  | Mandatory| Description            |
861e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ---------------- |
862e41f4b71Sopenharmony_ci| val    | number | Yes  | Long integer to write.|
863e41f4b71Sopenharmony_ci
864e41f4b71Sopenharmony_ci**Error codes**
865e41f4b71Sopenharmony_ci
866e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
867e41f4b71Sopenharmony_ci
868e41f4b71Sopenharmony_ci| ID| Error Message|
869e41f4b71Sopenharmony_ci| -------- | -------- |
870e41f4b71Sopenharmony_ci| 401      | check param failed |
871e41f4b71Sopenharmony_ci| 1900009  | write data to message sequence failed |
872e41f4b71Sopenharmony_ci
873e41f4b71Sopenharmony_ci**Example**
874e41f4b71Sopenharmony_ci
875e41f4b71Sopenharmony_ci  ```ts
876e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
877e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
878e41f4b71Sopenharmony_ci
879e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
880e41f4b71Sopenharmony_ci  try {
881e41f4b71Sopenharmony_ci    data.writeLong(10000);
882e41f4b71Sopenharmony_ci  } catch (error) {
883e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
884e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write long fail, errorCode ' + e.code);
885e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write long fail, errorMessage ' + e.message);
886e41f4b71Sopenharmony_ci  }
887e41f4b71Sopenharmony_ci  ```
888e41f4b71Sopenharmony_ci
889e41f4b71Sopenharmony_ci### readLong
890e41f4b71Sopenharmony_ci
891e41f4b71Sopenharmony_cireadLong(): number
892e41f4b71Sopenharmony_ci
893e41f4b71Sopenharmony_ciReads the long integer from this **MessageSequence** object.
894e41f4b71Sopenharmony_ci
895e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
896e41f4b71Sopenharmony_ci
897e41f4b71Sopenharmony_ci**Return value**
898e41f4b71Sopenharmony_ci
899e41f4b71Sopenharmony_ci| Type  | Description          |
900e41f4b71Sopenharmony_ci| ------ | -------------- |
901e41f4b71Sopenharmony_ci| number | Long integer read.|
902e41f4b71Sopenharmony_ci
903e41f4b71Sopenharmony_ci**Error codes**
904e41f4b71Sopenharmony_ci
905e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
906e41f4b71Sopenharmony_ci
907e41f4b71Sopenharmony_ci| ID| Error Message|
908e41f4b71Sopenharmony_ci| -------- | -------- |
909e41f4b71Sopenharmony_ci| 1900010  | read data from message sequence failed |
910e41f4b71Sopenharmony_ci
911e41f4b71Sopenharmony_ci**Example**
912e41f4b71Sopenharmony_ci
913e41f4b71Sopenharmony_ci  ```ts
914e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
915e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
916e41f4b71Sopenharmony_ci
917e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
918e41f4b71Sopenharmony_ci  try {
919e41f4b71Sopenharmony_ci    data.writeLong(10000);
920e41f4b71Sopenharmony_ci  } catch (error) {
921e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
922e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write long fail, errorCode ' + e.code);
923e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write long fail, errorMessage ' + e.message);
924e41f4b71Sopenharmony_ci  }
925e41f4b71Sopenharmony_ci  try {
926e41f4b71Sopenharmony_ci    let ret = data.readLong();
927e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', 'RpcClient: readLong is ' + ret);
928e41f4b71Sopenharmony_ci  } catch (error) {
929e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
930e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read long fail, errorCode ' + e.code);
931e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read long fail, errorMessage ' + e.message);
932e41f4b71Sopenharmony_ci  }
933e41f4b71Sopenharmony_ci  ```
934e41f4b71Sopenharmony_ci
935e41f4b71Sopenharmony_ci### writeFloat
936e41f4b71Sopenharmony_ci
937e41f4b71Sopenharmony_ciwriteFloat(val: number): void
938e41f4b71Sopenharmony_ci
939e41f4b71Sopenharmony_ciWrites a floating-point number to this **MessageSequence** object.
940e41f4b71Sopenharmony_ci
941e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
942e41f4b71Sopenharmony_ci
943e41f4b71Sopenharmony_ci**Parameters**
944e41f4b71Sopenharmony_ci
945e41f4b71Sopenharmony_ci| Name| Type  | Mandatory| Description |
946e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ----- |
947e41f4b71Sopenharmony_ci| val    | number | Yes  | Floating-point number to write.|
948e41f4b71Sopenharmony_ci
949e41f4b71Sopenharmony_ci**Error codes**
950e41f4b71Sopenharmony_ci
951e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
952e41f4b71Sopenharmony_ci
953e41f4b71Sopenharmony_ci| ID| Error Message|
954e41f4b71Sopenharmony_ci| -------- | -------- |
955e41f4b71Sopenharmony_ci| 401      | check param failed |
956e41f4b71Sopenharmony_ci| 1900009  | write data to message sequence failed |
957e41f4b71Sopenharmony_ci
958e41f4b71Sopenharmony_ci**Example**
959e41f4b71Sopenharmony_ci
960e41f4b71Sopenharmony_ci  ```ts
961e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
962e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
963e41f4b71Sopenharmony_ci
964e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
965e41f4b71Sopenharmony_ci  try {
966e41f4b71Sopenharmony_ci    data.writeFloat(1.2);
967e41f4b71Sopenharmony_ci  } catch (error) {
968e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
969e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write float fail, errorCode ' + e.code);
970e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write float fail, errorMessage ' + e.message);
971e41f4b71Sopenharmony_ci  }
972e41f4b71Sopenharmony_ci  ```
973e41f4b71Sopenharmony_ci
974e41f4b71Sopenharmony_ci### readFloat
975e41f4b71Sopenharmony_ci
976e41f4b71Sopenharmony_cireadFloat(): number
977e41f4b71Sopenharmony_ci
978e41f4b71Sopenharmony_ciReads the floating-pointer number from this **MessageSequence** object.
979e41f4b71Sopenharmony_ci
980e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
981e41f4b71Sopenharmony_ci
982e41f4b71Sopenharmony_ci**Return value**
983e41f4b71Sopenharmony_ci
984e41f4b71Sopenharmony_ci| Type  | Description        |
985e41f4b71Sopenharmony_ci| ------ | ------------ |
986e41f4b71Sopenharmony_ci| number | Floating-point number read.|
987e41f4b71Sopenharmony_ci
988e41f4b71Sopenharmony_ci**Error codes**
989e41f4b71Sopenharmony_ci
990e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
991e41f4b71Sopenharmony_ci
992e41f4b71Sopenharmony_ci| ID| Error Message|
993e41f4b71Sopenharmony_ci| -------- | -------- |
994e41f4b71Sopenharmony_ci| 1900010  | read data from message sequence failed |
995e41f4b71Sopenharmony_ci
996e41f4b71Sopenharmony_ci**Example**
997e41f4b71Sopenharmony_ci
998e41f4b71Sopenharmony_ci  ```ts
999e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
1000e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
1001e41f4b71Sopenharmony_ci
1002e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
1003e41f4b71Sopenharmony_ci  try {
1004e41f4b71Sopenharmony_ci    data.writeFloat(1.2);
1005e41f4b71Sopenharmony_ci  } catch (error) {
1006e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
1007e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write float fail, errorCode ' + e.code);
1008e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write float fail, errorMessage ' + e.message);
1009e41f4b71Sopenharmony_ci  }
1010e41f4b71Sopenharmony_ci  try {
1011e41f4b71Sopenharmony_ci    let ret = data.readFloat();
1012e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', 'RpcClient: readFloat is ' + ret);
1013e41f4b71Sopenharmony_ci  } catch (error) {
1014e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
1015e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read float fail, errorCode ' + e.code);
1016e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read float fail, errorMessage ' + e.message);
1017e41f4b71Sopenharmony_ci  }
1018e41f4b71Sopenharmony_ci  ```
1019e41f4b71Sopenharmony_ci
1020e41f4b71Sopenharmony_ci### writeDouble
1021e41f4b71Sopenharmony_ci
1022e41f4b71Sopenharmony_ciwriteDouble(val: number): void
1023e41f4b71Sopenharmony_ci
1024e41f4b71Sopenharmony_ciWrites a double-precision floating-point number to this **MessageSequence** object.
1025e41f4b71Sopenharmony_ci
1026e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
1027e41f4b71Sopenharmony_ci
1028e41f4b71Sopenharmony_ci**Parameters**
1029e41f4b71Sopenharmony_ci
1030e41f4b71Sopenharmony_ci| Name| Type  | Mandatory| Description                  |
1031e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ---------------------- |
1032e41f4b71Sopenharmony_ci| val    | number | Yes  | Double-precision floating-point number to write.|
1033e41f4b71Sopenharmony_ci
1034e41f4b71Sopenharmony_ci**Error codes**
1035e41f4b71Sopenharmony_ci
1036e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
1037e41f4b71Sopenharmony_ci
1038e41f4b71Sopenharmony_ci| ID| Error Message|
1039e41f4b71Sopenharmony_ci| -------- | -------- |
1040e41f4b71Sopenharmony_ci| 401      | check param failed |
1041e41f4b71Sopenharmony_ci| 1900009  | write data to message sequence failed |
1042e41f4b71Sopenharmony_ci
1043e41f4b71Sopenharmony_ci**Example**
1044e41f4b71Sopenharmony_ci
1045e41f4b71Sopenharmony_ci  ```ts
1046e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
1047e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
1048e41f4b71Sopenharmony_ci
1049e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
1050e41f4b71Sopenharmony_ci  try {
1051e41f4b71Sopenharmony_ci    data.writeDouble(10.2);
1052e41f4b71Sopenharmony_ci  } catch (error) {
1053e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
1054e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write double fail, errorCode ' + e.code);
1055e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write double fail, errorMessage ' + e.message);
1056e41f4b71Sopenharmony_ci  }
1057e41f4b71Sopenharmony_ci  ```
1058e41f4b71Sopenharmony_ci
1059e41f4b71Sopenharmony_ci### readDouble
1060e41f4b71Sopenharmony_ci
1061e41f4b71Sopenharmony_cireadDouble(): number
1062e41f4b71Sopenharmony_ci
1063e41f4b71Sopenharmony_ciReads the double-precision floating-point number from this **MessageSequence** object.
1064e41f4b71Sopenharmony_ci
1065e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
1066e41f4b71Sopenharmony_ci
1067e41f4b71Sopenharmony_ci**Return value**
1068e41f4b71Sopenharmony_ci
1069e41f4b71Sopenharmony_ci| Type  | Description              |
1070e41f4b71Sopenharmony_ci| ------ | ------------------ |
1071e41f4b71Sopenharmony_ci| number | Double-precision floating-point number read.|
1072e41f4b71Sopenharmony_ci
1073e41f4b71Sopenharmony_ci**Error codes**
1074e41f4b71Sopenharmony_ci
1075e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
1076e41f4b71Sopenharmony_ci
1077e41f4b71Sopenharmony_ci| ID| Error Message|
1078e41f4b71Sopenharmony_ci| -------- | -------- |
1079e41f4b71Sopenharmony_ci| 1900010  | read data from message sequence failed |
1080e41f4b71Sopenharmony_ci
1081e41f4b71Sopenharmony_ci**Example**
1082e41f4b71Sopenharmony_ci
1083e41f4b71Sopenharmony_ci  ```ts
1084e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
1085e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
1086e41f4b71Sopenharmony_ci
1087e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
1088e41f4b71Sopenharmony_ci  try {
1089e41f4b71Sopenharmony_ci    data.writeDouble(10.2);
1090e41f4b71Sopenharmony_ci  } catch (error) {
1091e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
1092e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write double fail, errorCode ' + e.code);
1093e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write double fail, errorMessage ' + e.message);
1094e41f4b71Sopenharmony_ci  }
1095e41f4b71Sopenharmony_ci  try {
1096e41f4b71Sopenharmony_ci    let ret = data.readDouble();
1097e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', 'RpcClient: readDouble is ' +  ret);
1098e41f4b71Sopenharmony_ci  } catch (error) {
1099e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
1100e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read double fail, errorCode ' + e.code);
1101e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read double fail, errorMessage ' + e.message);
1102e41f4b71Sopenharmony_ci  }
1103e41f4b71Sopenharmony_ci  ```
1104e41f4b71Sopenharmony_ci
1105e41f4b71Sopenharmony_ci### writeBoolean
1106e41f4b71Sopenharmony_ci
1107e41f4b71Sopenharmony_ciwriteBoolean(val: boolean): void
1108e41f4b71Sopenharmony_ci
1109e41f4b71Sopenharmony_ciWrites a Boolean value to this **MessageSequence** object.
1110e41f4b71Sopenharmony_ci
1111e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
1112e41f4b71Sopenharmony_ci
1113e41f4b71Sopenharmony_ci**Parameters**
1114e41f4b71Sopenharmony_ci
1115e41f4b71Sopenharmony_ci| Name| Type   | Mandatory| Description            |
1116e41f4b71Sopenharmony_ci| ------ | ------- | ---- | ---------------- |
1117e41f4b71Sopenharmony_ci| val    | boolean | Yes  | Boolean value to write.|
1118e41f4b71Sopenharmony_ci
1119e41f4b71Sopenharmony_ci**Error codes**
1120e41f4b71Sopenharmony_ci
1121e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
1122e41f4b71Sopenharmony_ci
1123e41f4b71Sopenharmony_ci| ID| Error Message|
1124e41f4b71Sopenharmony_ci| -------- | -------- |
1125e41f4b71Sopenharmony_ci| 401      | check param failed |
1126e41f4b71Sopenharmony_ci| 1900009  | write data to message sequence failed |
1127e41f4b71Sopenharmony_ci
1128e41f4b71Sopenharmony_ci**Example**
1129e41f4b71Sopenharmony_ci
1130e41f4b71Sopenharmony_ci  ```ts
1131e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
1132e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
1133e41f4b71Sopenharmony_ci
1134e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
1135e41f4b71Sopenharmony_ci  try {
1136e41f4b71Sopenharmony_ci    data.writeBoolean(false);
1137e41f4b71Sopenharmony_ci  } catch (error) {
1138e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
1139e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write boolean fail, errorCode ' + e.code);
1140e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write boolean fail, errorMessage ' + e.message);
1141e41f4b71Sopenharmony_ci  }
1142e41f4b71Sopenharmony_ci  ```
1143e41f4b71Sopenharmony_ci
1144e41f4b71Sopenharmony_ci### readBoolean
1145e41f4b71Sopenharmony_ci
1146e41f4b71Sopenharmony_cireadBoolean(): boolean
1147e41f4b71Sopenharmony_ci
1148e41f4b71Sopenharmony_ciReads the Boolean value from this **MessageSequence** object.
1149e41f4b71Sopenharmony_ci
1150e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
1151e41f4b71Sopenharmony_ci
1152e41f4b71Sopenharmony_ci**Return value**
1153e41f4b71Sopenharmony_ci
1154e41f4b71Sopenharmony_ci| Type   | Description                |
1155e41f4b71Sopenharmony_ci| ------- | -------------------- |
1156e41f4b71Sopenharmony_ci| boolean | Boolean value read.|
1157e41f4b71Sopenharmony_ci
1158e41f4b71Sopenharmony_ci**Error codes**
1159e41f4b71Sopenharmony_ci
1160e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
1161e41f4b71Sopenharmony_ci
1162e41f4b71Sopenharmony_ci| ID| Error Message|
1163e41f4b71Sopenharmony_ci| -------- | -------- |
1164e41f4b71Sopenharmony_ci| 1900010  | read data from message sequence failed |
1165e41f4b71Sopenharmony_ci
1166e41f4b71Sopenharmony_ci**Example**
1167e41f4b71Sopenharmony_ci
1168e41f4b71Sopenharmony_ci  ```ts
1169e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
1170e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
1171e41f4b71Sopenharmony_ci
1172e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
1173e41f4b71Sopenharmony_ci  try {
1174e41f4b71Sopenharmony_ci    data.writeBoolean(false);
1175e41f4b71Sopenharmony_ci  } catch (error) {
1176e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
1177e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write boolean fail, errorCode ' + e.code);
1178e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write boolean fail, errorMessage ' + e.message);
1179e41f4b71Sopenharmony_ci  }
1180e41f4b71Sopenharmony_ci  try {
1181e41f4b71Sopenharmony_ci    let ret = data.readBoolean();
1182e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', 'RpcClient: readBoolean is ' + ret);
1183e41f4b71Sopenharmony_ci  } catch (error) {
1184e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
1185e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read boolean fail, errorCode ' + e.code);
1186e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read boolean fail, errorMessage ' + e.message);
1187e41f4b71Sopenharmony_ci  }
1188e41f4b71Sopenharmony_ci  ```
1189e41f4b71Sopenharmony_ci
1190e41f4b71Sopenharmony_ci### writeChar
1191e41f4b71Sopenharmony_ci
1192e41f4b71Sopenharmony_ciwriteChar(val: number): void
1193e41f4b71Sopenharmony_ci
1194e41f4b71Sopenharmony_ciWrites a character to this **MessageSequence** object.
1195e41f4b71Sopenharmony_ci
1196e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
1197e41f4b71Sopenharmony_ci
1198e41f4b71Sopenharmony_ci**Parameters**
1199e41f4b71Sopenharmony_ci
1200e41f4b71Sopenharmony_ci| Name| Type  | Mandatory| Description                |
1201e41f4b71Sopenharmony_ci| ------ | ------ | ---- | -------------------- |
1202e41f4b71Sopenharmony_ci| val    | number | Yes  | Single character to write.|
1203e41f4b71Sopenharmony_ci
1204e41f4b71Sopenharmony_ci**Error codes**
1205e41f4b71Sopenharmony_ci
1206e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
1207e41f4b71Sopenharmony_ci
1208e41f4b71Sopenharmony_ci| ID| Error Message|
1209e41f4b71Sopenharmony_ci| -------- | -------- |
1210e41f4b71Sopenharmony_ci| 401      | check param failed |
1211e41f4b71Sopenharmony_ci| 1900009  | write data to message sequence failed |
1212e41f4b71Sopenharmony_ci
1213e41f4b71Sopenharmony_ci**Example**
1214e41f4b71Sopenharmony_ci
1215e41f4b71Sopenharmony_ci  ```ts
1216e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
1217e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
1218e41f4b71Sopenharmony_ci
1219e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
1220e41f4b71Sopenharmony_ci  try {
1221e41f4b71Sopenharmony_ci    data.writeChar(97);
1222e41f4b71Sopenharmony_ci  } catch (error) {
1223e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
1224e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write char fail, errorCode ' + e.code);
1225e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write char fail, errorMessage ' + e.message);
1226e41f4b71Sopenharmony_ci  }
1227e41f4b71Sopenharmony_ci  ```
1228e41f4b71Sopenharmony_ci
1229e41f4b71Sopenharmony_ci### readChar
1230e41f4b71Sopenharmony_ci
1231e41f4b71Sopenharmony_cireadChar(): number
1232e41f4b71Sopenharmony_ci
1233e41f4b71Sopenharmony_ciReads the character from this **MessageSequence** object.
1234e41f4b71Sopenharmony_ci
1235e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
1236e41f4b71Sopenharmony_ci
1237e41f4b71Sopenharmony_ci**Return value**
1238e41f4b71Sopenharmony_ci
1239e41f4b71Sopenharmony_ci| Type  | Description|
1240e41f4b71Sopenharmony_ci| ------ | ---- |
1241e41f4b71Sopenharmony_ci| number | Character read.|
1242e41f4b71Sopenharmony_ci
1243e41f4b71Sopenharmony_ci**Error codes**
1244e41f4b71Sopenharmony_ci
1245e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
1246e41f4b71Sopenharmony_ci
1247e41f4b71Sopenharmony_ci| ID| Error Message|
1248e41f4b71Sopenharmony_ci| -------- | -------- |
1249e41f4b71Sopenharmony_ci| 1900010  | read data from message sequence failed |
1250e41f4b71Sopenharmony_ci
1251e41f4b71Sopenharmony_ci**Example**
1252e41f4b71Sopenharmony_ci
1253e41f4b71Sopenharmony_ci  ```ts
1254e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
1255e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
1256e41f4b71Sopenharmony_ci
1257e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
1258e41f4b71Sopenharmony_ci  try {
1259e41f4b71Sopenharmony_ci    data.writeChar(97);
1260e41f4b71Sopenharmony_ci  } catch (error) {
1261e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
1262e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write char fail, errorCode ' + e.code);
1263e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write char fail, errorMessage ' + e.message);
1264e41f4b71Sopenharmony_ci  }
1265e41f4b71Sopenharmony_ci  try {
1266e41f4b71Sopenharmony_ci    let ret = data.readChar();
1267e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', 'RpcClient: readChar is ' + ret);
1268e41f4b71Sopenharmony_ci  } catch (error) {
1269e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
1270e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read char fail, errorCode ' + e.code);
1271e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read char fail, errorMessage ' + e.message);
1272e41f4b71Sopenharmony_ci  }
1273e41f4b71Sopenharmony_ci  ```
1274e41f4b71Sopenharmony_ci
1275e41f4b71Sopenharmony_ci### writeString
1276e41f4b71Sopenharmony_ci
1277e41f4b71Sopenharmony_ciwriteString(val: string): void
1278e41f4b71Sopenharmony_ci
1279e41f4b71Sopenharmony_ciWrites a string to this **MessageSequence** object.
1280e41f4b71Sopenharmony_ci
1281e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
1282e41f4b71Sopenharmony_ci
1283e41f4b71Sopenharmony_ci**Parameters**
1284e41f4b71Sopenharmony_ci
1285e41f4b71Sopenharmony_ci| Name| Type  | Mandatory| Description                                     |
1286e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ----------------------------------------- |
1287e41f4b71Sopenharmony_ci| val    | string | Yes  | String to write. The length of the string must be less than 40960 bytes.|
1288e41f4b71Sopenharmony_ci
1289e41f4b71Sopenharmony_ci**Error codes**
1290e41f4b71Sopenharmony_ci
1291e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
1292e41f4b71Sopenharmony_ci
1293e41f4b71Sopenharmony_ci| ID| Error Message|
1294e41f4b71Sopenharmony_ci| -------- | -------- |
1295e41f4b71Sopenharmony_ci| 401      | check param failed |
1296e41f4b71Sopenharmony_ci| 1900009  | write data to message sequence failed |
1297e41f4b71Sopenharmony_ci
1298e41f4b71Sopenharmony_ci**Example**
1299e41f4b71Sopenharmony_ci
1300e41f4b71Sopenharmony_ci  ```ts
1301e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
1302e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
1303e41f4b71Sopenharmony_ci
1304e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
1305e41f4b71Sopenharmony_ci  try {
1306e41f4b71Sopenharmony_ci    data.writeString('abc');
1307e41f4b71Sopenharmony_ci  } catch (error) {
1308e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
1309e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write string fail, errorCode ' + e.code);
1310e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write string fail, errorMessage ' + e.message);
1311e41f4b71Sopenharmony_ci  }
1312e41f4b71Sopenharmony_ci  ```
1313e41f4b71Sopenharmony_ci
1314e41f4b71Sopenharmony_ci### readString
1315e41f4b71Sopenharmony_ci
1316e41f4b71Sopenharmony_cireadString(): string
1317e41f4b71Sopenharmony_ci
1318e41f4b71Sopenharmony_ciReads the string from this **MessageSequence** object.
1319e41f4b71Sopenharmony_ci
1320e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
1321e41f4b71Sopenharmony_ci
1322e41f4b71Sopenharmony_ci**Return value**
1323e41f4b71Sopenharmony_ci
1324e41f4b71Sopenharmony_ci| Type  | Description          |
1325e41f4b71Sopenharmony_ci| ------ | -------------- |
1326e41f4b71Sopenharmony_ci| string | String read.|
1327e41f4b71Sopenharmony_ci
1328e41f4b71Sopenharmony_ci**Error codes**
1329e41f4b71Sopenharmony_ci
1330e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
1331e41f4b71Sopenharmony_ci
1332e41f4b71Sopenharmony_ci| ID| Error Message|
1333e41f4b71Sopenharmony_ci| -------- | -------- |
1334e41f4b71Sopenharmony_ci| 1900010  | read data from message sequence failed |
1335e41f4b71Sopenharmony_ci
1336e41f4b71Sopenharmony_ci**Example**
1337e41f4b71Sopenharmony_ci
1338e41f4b71Sopenharmony_ci  ```ts
1339e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
1340e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
1341e41f4b71Sopenharmony_ci
1342e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
1343e41f4b71Sopenharmony_ci  try {
1344e41f4b71Sopenharmony_ci    data.writeString('abc');
1345e41f4b71Sopenharmony_ci  } catch (error) {
1346e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
1347e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write string fail, errorCode ' + e.code);
1348e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write string fail, errorMessage ' + e.message);
1349e41f4b71Sopenharmony_ci  }
1350e41f4b71Sopenharmony_ci  try {
1351e41f4b71Sopenharmony_ci    let ret = data.readString();
1352e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', 'RpcClient: readString is ' + ret);
1353e41f4b71Sopenharmony_ci  } catch (error) {
1354e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
1355e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read string fail, errorCode ' + e.code);
1356e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read string fail, errorMessage ' + e.message);
1357e41f4b71Sopenharmony_ci  }
1358e41f4b71Sopenharmony_ci  ```
1359e41f4b71Sopenharmony_ci
1360e41f4b71Sopenharmony_ci### writeParcelable
1361e41f4b71Sopenharmony_ci
1362e41f4b71Sopenharmony_ciwriteParcelable(val: Parcelable): void
1363e41f4b71Sopenharmony_ci
1364e41f4b71Sopenharmony_ciWrites a **Parcelable** object to this **MessageSequence** object.
1365e41f4b71Sopenharmony_ci
1366e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
1367e41f4b71Sopenharmony_ci
1368e41f4b71Sopenharmony_ci**Parameters**
1369e41f4b71Sopenharmony_ci
1370e41f4b71Sopenharmony_ci| Name| Type| Mandatory| Description|
1371e41f4b71Sopenharmony_ci| ------ | --------- | ---- | ------ |
1372e41f4b71Sopenharmony_ci| val    | [Parcelable](#parcelable9) | Yes  | **Parcelable** object to write.|
1373e41f4b71Sopenharmony_ci
1374e41f4b71Sopenharmony_ci**Error codes**
1375e41f4b71Sopenharmony_ci
1376e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
1377e41f4b71Sopenharmony_ci
1378e41f4b71Sopenharmony_ci| ID| Error Message|
1379e41f4b71Sopenharmony_ci| -------- | -------- |
1380e41f4b71Sopenharmony_ci| 401      | check param failed |
1381e41f4b71Sopenharmony_ci| 1900009  | write data to message sequence failed |
1382e41f4b71Sopenharmony_ci
1383e41f4b71Sopenharmony_ci**Example**
1384e41f4b71Sopenharmony_ci
1385e41f4b71Sopenharmony_ci  ```ts
1386e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
1387e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
1388e41f4b71Sopenharmony_ci
1389e41f4b71Sopenharmony_ci  class MyParcelable implements rpc.Parcelable {
1390e41f4b71Sopenharmony_ci    num: number = 0;
1391e41f4b71Sopenharmony_ci    str: string = '';
1392e41f4b71Sopenharmony_ci    constructor( num: number, str: string) {
1393e41f4b71Sopenharmony_ci      this.num = num;
1394e41f4b71Sopenharmony_ci      this.str = str;
1395e41f4b71Sopenharmony_ci    }
1396e41f4b71Sopenharmony_ci    marshalling(messageSequence: rpc.MessageSequence): boolean {
1397e41f4b71Sopenharmony_ci      messageSequence.writeInt(this.num);
1398e41f4b71Sopenharmony_ci      messageSequence.writeString(this.str);
1399e41f4b71Sopenharmony_ci      return true;
1400e41f4b71Sopenharmony_ci    }
1401e41f4b71Sopenharmony_ci    unmarshalling(messageSequence: rpc.MessageSequence): boolean {
1402e41f4b71Sopenharmony_ci      this.num = messageSequence.readInt();
1403e41f4b71Sopenharmony_ci      this.str = messageSequence.readString();
1404e41f4b71Sopenharmony_ci      return true;
1405e41f4b71Sopenharmony_ci    }
1406e41f4b71Sopenharmony_ci  }
1407e41f4b71Sopenharmony_ci  let parcelable = new MyParcelable(1, "aaa");
1408e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
1409e41f4b71Sopenharmony_ci  try {
1410e41f4b71Sopenharmony_ci    data.writeParcelable(parcelable);
1411e41f4b71Sopenharmony_ci  } catch (error) {
1412e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
1413e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write parcelable fail, errorCode ' + e.code);
1414e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write parcelable fail, errorMessage ' + e.message);
1415e41f4b71Sopenharmony_ci  }
1416e41f4b71Sopenharmony_ci  ```
1417e41f4b71Sopenharmony_ci
1418e41f4b71Sopenharmony_ci### readParcelable
1419e41f4b71Sopenharmony_ci
1420e41f4b71Sopenharmony_cireadParcelable(dataIn: Parcelable): void
1421e41f4b71Sopenharmony_ci
1422e41f4b71Sopenharmony_ciReads a **Parcelable** object from this **MessageSequence** object to the specified object (**dataIn**).
1423e41f4b71Sopenharmony_ci
1424e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
1425e41f4b71Sopenharmony_ci
1426e41f4b71Sopenharmony_ci**Parameters**
1427e41f4b71Sopenharmony_ci
1428e41f4b71Sopenharmony_ci| Name| Type                      | Mandatory| Description                                     |
1429e41f4b71Sopenharmony_ci| ------ | -------------------------- | ---- | ----------------------------------------- |
1430e41f4b71Sopenharmony_ci| dataIn | [Parcelable](#parcelable9) | Yes  | **Parcelable** object to read.|
1431e41f4b71Sopenharmony_ci
1432e41f4b71Sopenharmony_ci**Error codes**
1433e41f4b71Sopenharmony_ci
1434e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
1435e41f4b71Sopenharmony_ci
1436e41f4b71Sopenharmony_ci| ID| Error Message|
1437e41f4b71Sopenharmony_ci| -------- | -------- |
1438e41f4b71Sopenharmony_ci| 401      | check param failed |
1439e41f4b71Sopenharmony_ci| 1900010  | read data from message sequence failed |
1440e41f4b71Sopenharmony_ci| 1900012  | call js callback function failed |
1441e41f4b71Sopenharmony_ci
1442e41f4b71Sopenharmony_ci**Example**
1443e41f4b71Sopenharmony_ci
1444e41f4b71Sopenharmony_ci  ```ts
1445e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
1446e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
1447e41f4b71Sopenharmony_ci
1448e41f4b71Sopenharmony_ci  class MyParcelable implements rpc.Parcelable {
1449e41f4b71Sopenharmony_ci    num: number = 0;
1450e41f4b71Sopenharmony_ci    str: string = '';
1451e41f4b71Sopenharmony_ci    constructor(num: number, str: string) {
1452e41f4b71Sopenharmony_ci      this.num = num;
1453e41f4b71Sopenharmony_ci      this.str = str;
1454e41f4b71Sopenharmony_ci    }
1455e41f4b71Sopenharmony_ci    marshalling(messageSequence: rpc.MessageSequence): boolean {
1456e41f4b71Sopenharmony_ci      messageSequence.writeInt(this.num);
1457e41f4b71Sopenharmony_ci      messageSequence.writeString(this.str);
1458e41f4b71Sopenharmony_ci      return true;
1459e41f4b71Sopenharmony_ci    }
1460e41f4b71Sopenharmony_ci    unmarshalling(messageSequence: rpc.MessageSequence): boolean {
1461e41f4b71Sopenharmony_ci      this.num = messageSequence.readInt();
1462e41f4b71Sopenharmony_ci      this.str = messageSequence.readString();
1463e41f4b71Sopenharmony_ci      return true;
1464e41f4b71Sopenharmony_ci    }
1465e41f4b71Sopenharmony_ci  }
1466e41f4b71Sopenharmony_ci  let parcelable = new MyParcelable(1, "aaa");
1467e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
1468e41f4b71Sopenharmony_ci  data.writeParcelable(parcelable);
1469e41f4b71Sopenharmony_ci  let ret = new MyParcelable(0, "");
1470e41f4b71Sopenharmony_ci  try {
1471e41f4b71Sopenharmony_ci    data.readParcelable(ret);
1472e41f4b71Sopenharmony_ci  }catch (error) {
1473e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
1474e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read parcelable fail, errorCode ' + e.code);
1475e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read parcelable fail, errorMessage ' + e.message);
1476e41f4b71Sopenharmony_ci  }
1477e41f4b71Sopenharmony_ci  ```
1478e41f4b71Sopenharmony_ci
1479e41f4b71Sopenharmony_ci### writeByteArray
1480e41f4b71Sopenharmony_ci
1481e41f4b71Sopenharmony_ciwriteByteArray(byteArray: number[]): void
1482e41f4b71Sopenharmony_ci
1483e41f4b71Sopenharmony_ciWrites a byte array to this **MessageSequence** object.
1484e41f4b71Sopenharmony_ci
1485e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
1486e41f4b71Sopenharmony_ci
1487e41f4b71Sopenharmony_ci**Parameters**
1488e41f4b71Sopenharmony_ci
1489e41f4b71Sopenharmony_ci| Name   | Type    | Mandatory| Description              |
1490e41f4b71Sopenharmony_ci| --------- | -------- | ---- | ------------------ |
1491e41f4b71Sopenharmony_ci| byteArray | number[] | Yes  | Byte array to write.|
1492e41f4b71Sopenharmony_ci
1493e41f4b71Sopenharmony_ci**Error codes**
1494e41f4b71Sopenharmony_ci
1495e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
1496e41f4b71Sopenharmony_ci
1497e41f4b71Sopenharmony_ci| ID| Error Message|
1498e41f4b71Sopenharmony_ci| -------- | -------- |
1499e41f4b71Sopenharmony_ci| 401      | check param failed |
1500e41f4b71Sopenharmony_ci| 1900009  | write data to message sequence failed |
1501e41f4b71Sopenharmony_ci
1502e41f4b71Sopenharmony_ci**Example**
1503e41f4b71Sopenharmony_ci
1504e41f4b71Sopenharmony_ci  ```ts
1505e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
1506e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
1507e41f4b71Sopenharmony_ci
1508e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
1509e41f4b71Sopenharmony_ci  let ByteArrayVar = [1, 2, 3, 4, 5];
1510e41f4b71Sopenharmony_ci  try {
1511e41f4b71Sopenharmony_ci    data.writeByteArray(ByteArrayVar);
1512e41f4b71Sopenharmony_ci  } catch (error) {
1513e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
1514e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write byteArray fail, errorCode ' + e.code);
1515e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write byteArray fail, errorMessage ' + e.message);
1516e41f4b71Sopenharmony_ci  }
1517e41f4b71Sopenharmony_ci  ```
1518e41f4b71Sopenharmony_ci
1519e41f4b71Sopenharmony_ci### readByteArray
1520e41f4b71Sopenharmony_ci
1521e41f4b71Sopenharmony_cireadByteArray(dataIn: number[]): void
1522e41f4b71Sopenharmony_ci
1523e41f4b71Sopenharmony_ciReads a byte array from this **MessageSequence** object.
1524e41f4b71Sopenharmony_ci
1525e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
1526e41f4b71Sopenharmony_ci
1527e41f4b71Sopenharmony_ci**Parameters**
1528e41f4b71Sopenharmony_ci
1529e41f4b71Sopenharmony_ci| Name| Type    | Mandatory| Description              |
1530e41f4b71Sopenharmony_ci| ------ | -------- | ---- | ------------------ |
1531e41f4b71Sopenharmony_ci| dataIn | number[] | Yes  | Byte array to read.|
1532e41f4b71Sopenharmony_ci
1533e41f4b71Sopenharmony_ci**Error codes**
1534e41f4b71Sopenharmony_ci
1535e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
1536e41f4b71Sopenharmony_ci
1537e41f4b71Sopenharmony_ci| ID| Error Message|
1538e41f4b71Sopenharmony_ci| -------- | -------- |
1539e41f4b71Sopenharmony_ci| 401      | check param failed |
1540e41f4b71Sopenharmony_ci| 1900010  | read data from message sequence failed |
1541e41f4b71Sopenharmony_ci
1542e41f4b71Sopenharmony_ci**Example**
1543e41f4b71Sopenharmony_ci
1544e41f4b71Sopenharmony_ci  ```ts
1545e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
1546e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
1547e41f4b71Sopenharmony_ci
1548e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
1549e41f4b71Sopenharmony_ci  let ByteArrayVar = [1, 2, 3, 4, 5];
1550e41f4b71Sopenharmony_ci  try {
1551e41f4b71Sopenharmony_ci    data.writeByteArray(ByteArrayVar);
1552e41f4b71Sopenharmony_ci  } catch (error) {
1553e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
1554e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write byteArray fail, errorCode ' + e.code);
1555e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write byteArray fail, errorMessage ' + e.message);
1556e41f4b71Sopenharmony_ci  }
1557e41f4b71Sopenharmony_ci  try {
1558e41f4b71Sopenharmony_ci    let array: Array<number> = new Array(5);
1559e41f4b71Sopenharmony_ci    data.readByteArray(array);
1560e41f4b71Sopenharmony_ci  } catch (error) {
1561e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
1562e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read byteArray fail, errorCode ' + e.code);
1563e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read byteArray fail, errorMessage ' + e.message);
1564e41f4b71Sopenharmony_ci  }
1565e41f4b71Sopenharmony_ci  ```
1566e41f4b71Sopenharmony_ci
1567e41f4b71Sopenharmony_ci### readByteArray
1568e41f4b71Sopenharmony_ci
1569e41f4b71Sopenharmony_cireadByteArray(): number[]
1570e41f4b71Sopenharmony_ci
1571e41f4b71Sopenharmony_ciReads the byte array from this **MessageSequence** object.
1572e41f4b71Sopenharmony_ci
1573e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
1574e41f4b71Sopenharmony_ci
1575e41f4b71Sopenharmony_ci**Return value**
1576e41f4b71Sopenharmony_ci
1577e41f4b71Sopenharmony_ci| Type    | Description          |
1578e41f4b71Sopenharmony_ci| -------- | -------------- |
1579e41f4b71Sopenharmony_ci| number[] | Byte array read.|
1580e41f4b71Sopenharmony_ci
1581e41f4b71Sopenharmony_ci**Error codes**
1582e41f4b71Sopenharmony_ci
1583e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
1584e41f4b71Sopenharmony_ci
1585e41f4b71Sopenharmony_ci| ID| Error Message|
1586e41f4b71Sopenharmony_ci| -------- | -------- |
1587e41f4b71Sopenharmony_ci| 401      | check param failed |
1588e41f4b71Sopenharmony_ci| 1900010  | read data from message sequence failed |
1589e41f4b71Sopenharmony_ci
1590e41f4b71Sopenharmony_ci**Example**
1591e41f4b71Sopenharmony_ci
1592e41f4b71Sopenharmony_ci  ```ts
1593e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
1594e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
1595e41f4b71Sopenharmony_ci
1596e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
1597e41f4b71Sopenharmony_ci  let byteArrayVar = [1, 2, 3, 4, 5];
1598e41f4b71Sopenharmony_ci  try {
1599e41f4b71Sopenharmony_ci    data.writeByteArray(byteArrayVar);
1600e41f4b71Sopenharmony_ci  } catch (error) {
1601e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
1602e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write byteArray fail, errorCode ' + e.code);
1603e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write byteArray fail, errorMessage ' + e.message);
1604e41f4b71Sopenharmony_ci  }
1605e41f4b71Sopenharmony_ci  try {
1606e41f4b71Sopenharmony_ci    let array = data.readByteArray();
1607e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', 'RpcClient: readByteArray is ' +  array);
1608e41f4b71Sopenharmony_ci  } catch (error) {
1609e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
1610e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read byteArray fail, errorCode ' + e.code);
1611e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read byteArray fail, errorMessage ' + e.message);
1612e41f4b71Sopenharmony_ci  }
1613e41f4b71Sopenharmony_ci  ```
1614e41f4b71Sopenharmony_ci
1615e41f4b71Sopenharmony_ci### writeShortArray
1616e41f4b71Sopenharmony_ci
1617e41f4b71Sopenharmony_ciwriteShortArray(shortArray: number[]): void
1618e41f4b71Sopenharmony_ci
1619e41f4b71Sopenharmony_ciWrites a short array to this **MessageSequence** object.
1620e41f4b71Sopenharmony_ci
1621e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
1622e41f4b71Sopenharmony_ci
1623e41f4b71Sopenharmony_ci**Parameters**
1624e41f4b71Sopenharmony_ci
1625e41f4b71Sopenharmony_ci| Name    | Type    | Mandatory| Description                |
1626e41f4b71Sopenharmony_ci| ---------- | -------- | ---- | -------------------- |
1627e41f4b71Sopenharmony_ci| shortArray | number[] | Yes  | Short array to write.|
1628e41f4b71Sopenharmony_ci
1629e41f4b71Sopenharmony_ci**Error codes**
1630e41f4b71Sopenharmony_ci
1631e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
1632e41f4b71Sopenharmony_ci
1633e41f4b71Sopenharmony_ci| ID| Error Message|
1634e41f4b71Sopenharmony_ci| -------- | -------- |
1635e41f4b71Sopenharmony_ci| 401      | check param failed |
1636e41f4b71Sopenharmony_ci| 1900009  | write data to message sequence failed |
1637e41f4b71Sopenharmony_ci
1638e41f4b71Sopenharmony_ci**Example**
1639e41f4b71Sopenharmony_ci
1640e41f4b71Sopenharmony_ci  ```ts
1641e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
1642e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
1643e41f4b71Sopenharmony_ci
1644e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
1645e41f4b71Sopenharmony_ci  try {
1646e41f4b71Sopenharmony_ci    data.writeShortArray([11, 12, 13]);
1647e41f4b71Sopenharmony_ci  } catch (error) {
1648e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
1649e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write shortArray fail, errorCode ' + e.code);
1650e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write shortArray fail, errorMessage ' + e.message);
1651e41f4b71Sopenharmony_ci  }
1652e41f4b71Sopenharmony_ci  ```
1653e41f4b71Sopenharmony_ci
1654e41f4b71Sopenharmony_ci### readShortArray
1655e41f4b71Sopenharmony_ci
1656e41f4b71Sopenharmony_cireadShortArray(dataIn: number[]): void
1657e41f4b71Sopenharmony_ci
1658e41f4b71Sopenharmony_ciReads a short array from this **MessageSequence** object.
1659e41f4b71Sopenharmony_ci
1660e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
1661e41f4b71Sopenharmony_ci
1662e41f4b71Sopenharmony_ci**Parameters**
1663e41f4b71Sopenharmony_ci
1664e41f4b71Sopenharmony_ci| Name| Type    | Mandatory| Description                |
1665e41f4b71Sopenharmony_ci| ------ | -------- | ---- | -------------------- |
1666e41f4b71Sopenharmony_ci| dataIn | number[] | Yes  | Short array to read.|
1667e41f4b71Sopenharmony_ci
1668e41f4b71Sopenharmony_ci**Error codes**
1669e41f4b71Sopenharmony_ci
1670e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
1671e41f4b71Sopenharmony_ci
1672e41f4b71Sopenharmony_ci| ID| Error Message|
1673e41f4b71Sopenharmony_ci| -------- | -------- |
1674e41f4b71Sopenharmony_ci| 401      | check param failed |
1675e41f4b71Sopenharmony_ci| 1900010  | read data from message sequence failed |
1676e41f4b71Sopenharmony_ci
1677e41f4b71Sopenharmony_ci**Example**
1678e41f4b71Sopenharmony_ci
1679e41f4b71Sopenharmony_ci  ```ts
1680e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
1681e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
1682e41f4b71Sopenharmony_ci
1683e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
1684e41f4b71Sopenharmony_ci  try {
1685e41f4b71Sopenharmony_ci    data.writeShortArray([11, 12, 13]);
1686e41f4b71Sopenharmony_ci  } catch (error) {
1687e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
1688e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write shortArray fail, errorCode ' + e.code);
1689e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write shortArray fail, errorMessage ' + e.message);
1690e41f4b71Sopenharmony_ci  }
1691e41f4b71Sopenharmony_ci  try {
1692e41f4b71Sopenharmony_ci    let array: Array<number> = new Array(3);
1693e41f4b71Sopenharmony_ci    data.readShortArray(array);
1694e41f4b71Sopenharmony_ci  } catch (error) {
1695e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
1696e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read shortArray fail, errorCode ' + e.code);
1697e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read shortArray fail, errorMessage ' + e.message);
1698e41f4b71Sopenharmony_ci  }
1699e41f4b71Sopenharmony_ci  ```
1700e41f4b71Sopenharmony_ci
1701e41f4b71Sopenharmony_ci### readShortArray
1702e41f4b71Sopenharmony_ci
1703e41f4b71Sopenharmony_cireadShortArray(): number[]
1704e41f4b71Sopenharmony_ci
1705e41f4b71Sopenharmony_ciReads the short array from this **MessageSequence** object.
1706e41f4b71Sopenharmony_ci
1707e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
1708e41f4b71Sopenharmony_ci
1709e41f4b71Sopenharmony_ci**Return value**
1710e41f4b71Sopenharmony_ci
1711e41f4b71Sopenharmony_ci| Type    | Description            |
1712e41f4b71Sopenharmony_ci| -------- | ---------------- |
1713e41f4b71Sopenharmony_ci| number[] | Short array read.|
1714e41f4b71Sopenharmony_ci
1715e41f4b71Sopenharmony_ci**Error codes**
1716e41f4b71Sopenharmony_ci
1717e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
1718e41f4b71Sopenharmony_ci
1719e41f4b71Sopenharmony_ci| ID| Error Message|
1720e41f4b71Sopenharmony_ci| -------- | -------- |
1721e41f4b71Sopenharmony_ci| 1900010  | read data from message sequence failed |
1722e41f4b71Sopenharmony_ci
1723e41f4b71Sopenharmony_ci**Example**
1724e41f4b71Sopenharmony_ci
1725e41f4b71Sopenharmony_ci  ```ts
1726e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
1727e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
1728e41f4b71Sopenharmony_ci
1729e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
1730e41f4b71Sopenharmony_ci  try {
1731e41f4b71Sopenharmony_ci    data.writeShortArray([11, 12, 13]);
1732e41f4b71Sopenharmony_ci  } catch (error) {
1733e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
1734e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write shortArray fail, errorCode ' + e.code);
1735e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write shortArray fail, errorMessage ' + e.message);
1736e41f4b71Sopenharmony_ci  }
1737e41f4b71Sopenharmony_ci  try {
1738e41f4b71Sopenharmony_ci    let array = data.readShortArray();
1739e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', 'RpcClient: readShortArray is ' + array);
1740e41f4b71Sopenharmony_ci  } catch (error) {
1741e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
1742e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read shortArray fail, errorCode ' + e.code);
1743e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read shortArray fail, errorMessage ' + e.message);
1744e41f4b71Sopenharmony_ci  }
1745e41f4b71Sopenharmony_ci  ```
1746e41f4b71Sopenharmony_ci
1747e41f4b71Sopenharmony_ci### writeIntArray
1748e41f4b71Sopenharmony_ci
1749e41f4b71Sopenharmony_ciwriteIntArray(intArray: number[]): void
1750e41f4b71Sopenharmony_ci
1751e41f4b71Sopenharmony_ciWrites an integer array to this **MessageSequence** object.
1752e41f4b71Sopenharmony_ci
1753e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
1754e41f4b71Sopenharmony_ci
1755e41f4b71Sopenharmony_ci**Parameters**
1756e41f4b71Sopenharmony_ci
1757e41f4b71Sopenharmony_ci| Name  | Type    | Mandatory| Description              |
1758e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------ |
1759e41f4b71Sopenharmony_ci| intArray | number[] | Yes  | Integer array to write.|
1760e41f4b71Sopenharmony_ci
1761e41f4b71Sopenharmony_ci**Error codes**
1762e41f4b71Sopenharmony_ci
1763e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
1764e41f4b71Sopenharmony_ci
1765e41f4b71Sopenharmony_ci| ID| Error Message|
1766e41f4b71Sopenharmony_ci| -------- | -------- |
1767e41f4b71Sopenharmony_ci| 401      | check param failed |
1768e41f4b71Sopenharmony_ci| 1900009  | write data to message sequence failed |
1769e41f4b71Sopenharmony_ci
1770e41f4b71Sopenharmony_ci**Example**
1771e41f4b71Sopenharmony_ci
1772e41f4b71Sopenharmony_ci  ```ts
1773e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
1774e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
1775e41f4b71Sopenharmony_ci
1776e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
1777e41f4b71Sopenharmony_ci  try {
1778e41f4b71Sopenharmony_ci    data.writeIntArray([100, 111, 112]);
1779e41f4b71Sopenharmony_ci  } catch (error) {
1780e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
1781e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write intArray fail, errorCode ' + e.code);
1782e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write intArray fail, errorMessage ' + e.message);
1783e41f4b71Sopenharmony_ci  }
1784e41f4b71Sopenharmony_ci  ```
1785e41f4b71Sopenharmony_ci
1786e41f4b71Sopenharmony_ci### readIntArray
1787e41f4b71Sopenharmony_ci
1788e41f4b71Sopenharmony_cireadIntArray(dataIn: number[]): void
1789e41f4b71Sopenharmony_ci
1790e41f4b71Sopenharmony_ciReads an integer array from this **MessageSequence** object.
1791e41f4b71Sopenharmony_ci
1792e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
1793e41f4b71Sopenharmony_ci
1794e41f4b71Sopenharmony_ci**Parameters**
1795e41f4b71Sopenharmony_ci
1796e41f4b71Sopenharmony_ci| Name| Type    | Mandatory| Description              |
1797e41f4b71Sopenharmony_ci| ------ | -------- | ---- | ------------------ |
1798e41f4b71Sopenharmony_ci| dataIn | number[] | Yes  | Integer array to read.|
1799e41f4b71Sopenharmony_ci
1800e41f4b71Sopenharmony_ci**Error codes**
1801e41f4b71Sopenharmony_ci
1802e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
1803e41f4b71Sopenharmony_ci
1804e41f4b71Sopenharmony_ci| ID| Error Message|
1805e41f4b71Sopenharmony_ci| -------- | -------- |
1806e41f4b71Sopenharmony_ci| 401      | check param failed |
1807e41f4b71Sopenharmony_ci| 1900010  | read data from message sequence failed |
1808e41f4b71Sopenharmony_ci
1809e41f4b71Sopenharmony_ci**Example**
1810e41f4b71Sopenharmony_ci
1811e41f4b71Sopenharmony_ci  ```ts
1812e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
1813e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
1814e41f4b71Sopenharmony_ci
1815e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
1816e41f4b71Sopenharmony_ci  try {
1817e41f4b71Sopenharmony_ci    data.writeIntArray([100, 111, 112]);
1818e41f4b71Sopenharmony_ci  } catch (error) {
1819e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
1820e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write intArray fail, errorCode ' + e.code);
1821e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write intArray fail, errorMessage ' + e.message);
1822e41f4b71Sopenharmony_ci  }
1823e41f4b71Sopenharmony_ci  let array: Array<number> = new Array(3);
1824e41f4b71Sopenharmony_ci  try {
1825e41f4b71Sopenharmony_ci    data.readIntArray(array);
1826e41f4b71Sopenharmony_ci  } catch (error) {
1827e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
1828e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read intArray fail, errorCode ' + e.code);
1829e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read intArray fail, errorMessage ' + e.message);
1830e41f4b71Sopenharmony_ci  }
1831e41f4b71Sopenharmony_ci  ```
1832e41f4b71Sopenharmony_ci
1833e41f4b71Sopenharmony_ci### readIntArray
1834e41f4b71Sopenharmony_ci
1835e41f4b71Sopenharmony_cireadIntArray(): number[]
1836e41f4b71Sopenharmony_ci
1837e41f4b71Sopenharmony_ciReads the integer array from this **MessageSequence** object.
1838e41f4b71Sopenharmony_ci
1839e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
1840e41f4b71Sopenharmony_ci
1841e41f4b71Sopenharmony_ci**Return value**
1842e41f4b71Sopenharmony_ci
1843e41f4b71Sopenharmony_ci| Type    | Description          |
1844e41f4b71Sopenharmony_ci| -------- | -------------- |
1845e41f4b71Sopenharmony_ci| number[] | Integer array read.|
1846e41f4b71Sopenharmony_ci
1847e41f4b71Sopenharmony_ci**Error codes**
1848e41f4b71Sopenharmony_ci
1849e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
1850e41f4b71Sopenharmony_ci
1851e41f4b71Sopenharmony_ci| ID| Error Message|
1852e41f4b71Sopenharmony_ci| -------- | -------- |
1853e41f4b71Sopenharmony_ci| 1900010  | read data from message sequence failed |
1854e41f4b71Sopenharmony_ci
1855e41f4b71Sopenharmony_ci**Example**
1856e41f4b71Sopenharmony_ci
1857e41f4b71Sopenharmony_ci  ```ts
1858e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
1859e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
1860e41f4b71Sopenharmony_ci
1861e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
1862e41f4b71Sopenharmony_ci  try {
1863e41f4b71Sopenharmony_ci    data.writeIntArray([100, 111, 112]);
1864e41f4b71Sopenharmony_ci  } catch (error) {
1865e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
1866e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write intArray fail, errorCode ' + e.code);
1867e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write intArray fail, errorMessage ' + e.message);
1868e41f4b71Sopenharmony_ci  }
1869e41f4b71Sopenharmony_ci  try {
1870e41f4b71Sopenharmony_ci    let array = data.readIntArray();
1871e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', 'RpcClient: readIntArray is ' + array);
1872e41f4b71Sopenharmony_ci  } catch (error) {
1873e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
1874e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read intArray fail, errorCode ' + e.code);
1875e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read intArray fail, errorMessage ' + e.message);
1876e41f4b71Sopenharmony_ci  }
1877e41f4b71Sopenharmony_ci  ```
1878e41f4b71Sopenharmony_ci
1879e41f4b71Sopenharmony_ci### writeLongArray
1880e41f4b71Sopenharmony_ci
1881e41f4b71Sopenharmony_ciwriteLongArray(longArray: number[]): void
1882e41f4b71Sopenharmony_ci
1883e41f4b71Sopenharmony_ciWrites a long array to this **MessageSequence** object.
1884e41f4b71Sopenharmony_ci
1885e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
1886e41f4b71Sopenharmony_ci
1887e41f4b71Sopenharmony_ci**Parameters**
1888e41f4b71Sopenharmony_ci
1889e41f4b71Sopenharmony_ci| Name   | Type    | Mandatory| Description                |
1890e41f4b71Sopenharmony_ci| --------- | -------- | ---- | -------------------- |
1891e41f4b71Sopenharmony_ci| longArray | number[] | Yes  | Long array to write.|
1892e41f4b71Sopenharmony_ci
1893e41f4b71Sopenharmony_ci**Error codes**
1894e41f4b71Sopenharmony_ci
1895e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
1896e41f4b71Sopenharmony_ci
1897e41f4b71Sopenharmony_ci| ID| Error Message|
1898e41f4b71Sopenharmony_ci| -------- | -------- |
1899e41f4b71Sopenharmony_ci| 401      | check param failed |
1900e41f4b71Sopenharmony_ci| 1900009  | write data to message sequence failed |
1901e41f4b71Sopenharmony_ci
1902e41f4b71Sopenharmony_ci**Example**
1903e41f4b71Sopenharmony_ci
1904e41f4b71Sopenharmony_ci  ```ts
1905e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
1906e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
1907e41f4b71Sopenharmony_ci
1908e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
1909e41f4b71Sopenharmony_ci  try {
1910e41f4b71Sopenharmony_ci    data.writeLongArray([1111, 1112, 1113]);
1911e41f4b71Sopenharmony_ci  }catch (error){
1912e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
1913e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write longArray fail, errorCode ' + e.code);
1914e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write longArray fail, errorMessage ' + e.message);
1915e41f4b71Sopenharmony_ci  }
1916e41f4b71Sopenharmony_ci  ```
1917e41f4b71Sopenharmony_ci
1918e41f4b71Sopenharmony_ci### readLongArray
1919e41f4b71Sopenharmony_ci
1920e41f4b71Sopenharmony_cireadLongArray(dataIn: number[]): void
1921e41f4b71Sopenharmony_ci
1922e41f4b71Sopenharmony_ciReads a long array from this **MessageSequence** object.
1923e41f4b71Sopenharmony_ci
1924e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
1925e41f4b71Sopenharmony_ci
1926e41f4b71Sopenharmony_ci**Parameters**
1927e41f4b71Sopenharmony_ci
1928e41f4b71Sopenharmony_ci| Name| Type    | Mandatory| Description                |
1929e41f4b71Sopenharmony_ci| ------ | -------- | ---- | -------------------- |
1930e41f4b71Sopenharmony_ci| dataIn | number[] | Yes  | Long array to read.|
1931e41f4b71Sopenharmony_ci
1932e41f4b71Sopenharmony_ci**Error codes**
1933e41f4b71Sopenharmony_ci
1934e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
1935e41f4b71Sopenharmony_ci
1936e41f4b71Sopenharmony_ci| ID| Error Message|
1937e41f4b71Sopenharmony_ci| -------- | -------- |
1938e41f4b71Sopenharmony_ci| 401      | check param failed |
1939e41f4b71Sopenharmony_ci| 1900010  | read data from message sequence failed |
1940e41f4b71Sopenharmony_ci
1941e41f4b71Sopenharmony_ci**Example**
1942e41f4b71Sopenharmony_ci
1943e41f4b71Sopenharmony_ci  ```ts
1944e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
1945e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
1946e41f4b71Sopenharmony_ci
1947e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
1948e41f4b71Sopenharmony_ci  try {
1949e41f4b71Sopenharmony_ci    data.writeLongArray([1111, 1112, 1113]);
1950e41f4b71Sopenharmony_ci  } catch (error) {
1951e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
1952e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write longArray fail, errorCode ' + e.code);
1953e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write longArray fail, errorMessage ' + e.message);
1954e41f4b71Sopenharmony_ci  }
1955e41f4b71Sopenharmony_ci  let array: Array<number> = new Array(3);
1956e41f4b71Sopenharmony_ci  try {
1957e41f4b71Sopenharmony_ci    data.readLongArray(array);
1958e41f4b71Sopenharmony_ci  } catch (error) {
1959e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
1960e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read longArray fail, errorCode ' + e.code);
1961e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read longArray fail, errorMessage ' + e.message);
1962e41f4b71Sopenharmony_ci  }
1963e41f4b71Sopenharmony_ci  ```
1964e41f4b71Sopenharmony_ci
1965e41f4b71Sopenharmony_ci### readLongArray
1966e41f4b71Sopenharmony_ci
1967e41f4b71Sopenharmony_cireadLongArray(): number[]
1968e41f4b71Sopenharmony_ci
1969e41f4b71Sopenharmony_ciReads the long integer array from this **MessageSequence** object.
1970e41f4b71Sopenharmony_ci
1971e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
1972e41f4b71Sopenharmony_ci
1973e41f4b71Sopenharmony_ci**Return value**
1974e41f4b71Sopenharmony_ci
1975e41f4b71Sopenharmony_ci| Type    | Description            |
1976e41f4b71Sopenharmony_ci| -------- | ---------------- |
1977e41f4b71Sopenharmony_ci| number[] | Long array read.|
1978e41f4b71Sopenharmony_ci
1979e41f4b71Sopenharmony_ci**Error codes**
1980e41f4b71Sopenharmony_ci
1981e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
1982e41f4b71Sopenharmony_ci
1983e41f4b71Sopenharmony_ci| ID| Error Message|
1984e41f4b71Sopenharmony_ci| -------- | -------- |
1985e41f4b71Sopenharmony_ci| 1900010  | read data from message sequence failed |
1986e41f4b71Sopenharmony_ci
1987e41f4b71Sopenharmony_ci**Example**
1988e41f4b71Sopenharmony_ci
1989e41f4b71Sopenharmony_ci  ```ts
1990e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
1991e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
1992e41f4b71Sopenharmony_ci
1993e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
1994e41f4b71Sopenharmony_ci  try {
1995e41f4b71Sopenharmony_ci    data.writeLongArray([1111, 1112, 1113]);
1996e41f4b71Sopenharmony_ci  } catch (error) {
1997e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
1998e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write longArray fail, errorCode ' + e.code);
1999e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write longArray fail, errorMessage ' + e.message);
2000e41f4b71Sopenharmony_ci  }
2001e41f4b71Sopenharmony_ci  try {
2002e41f4b71Sopenharmony_ci    let array = data.readLongArray();
2003e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', 'RpcClient: readLongArray is ' + array);
2004e41f4b71Sopenharmony_ci  } catch (error) {
2005e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
2006e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read longArray fail, errorCode ' + e.code);
2007e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read longArray fail, errorMessage ' + e.message);
2008e41f4b71Sopenharmony_ci  }
2009e41f4b71Sopenharmony_ci  ```
2010e41f4b71Sopenharmony_ci
2011e41f4b71Sopenharmony_ci### writeFloatArray
2012e41f4b71Sopenharmony_ci
2013e41f4b71Sopenharmony_ciwriteFloatArray(floatArray: number[]): void
2014e41f4b71Sopenharmony_ci
2015e41f4b71Sopenharmony_ciWrites a floating-point array to this **MessageSequence** object.
2016e41f4b71Sopenharmony_ci
2017e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
2018e41f4b71Sopenharmony_ci
2019e41f4b71Sopenharmony_ci**Parameters**
2020e41f4b71Sopenharmony_ci
2021e41f4b71Sopenharmony_ci| Name    | Type    | Mandatory| Description                                                                                                                   |
2022e41f4b71Sopenharmony_ci| ---------- | -------- | ---- | ----------------------------------------------------------------------------------------------------------------------- |
2023e41f4b71Sopenharmony_ci| floatArray | number[] | Yes  | Floating-point array to write. The system processes Float data as that of the Double type. Therefore, the total number of bytes occupied by a FloatArray must be calculated as the Double type.|
2024e41f4b71Sopenharmony_ci
2025e41f4b71Sopenharmony_ci**Error codes**
2026e41f4b71Sopenharmony_ci
2027e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
2028e41f4b71Sopenharmony_ci
2029e41f4b71Sopenharmony_ci| ID| Error Message|
2030e41f4b71Sopenharmony_ci| -------- | -------- |
2031e41f4b71Sopenharmony_ci| 401      | check param failed |
2032e41f4b71Sopenharmony_ci| 1900009  | write data to message sequence failed |
2033e41f4b71Sopenharmony_ci
2034e41f4b71Sopenharmony_ci**Example**
2035e41f4b71Sopenharmony_ci
2036e41f4b71Sopenharmony_ci  ```ts
2037e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
2038e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
2039e41f4b71Sopenharmony_ci
2040e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
2041e41f4b71Sopenharmony_ci  try {
2042e41f4b71Sopenharmony_ci    data.writeFloatArray([1.2, 1.3, 1.4]);
2043e41f4b71Sopenharmony_ci  } catch (error) {
2044e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
2045e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write floatArray fail, errorCode ' + e.code);
2046e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write floatArray fail, errorMessage ' + e.message);
2047e41f4b71Sopenharmony_ci  }
2048e41f4b71Sopenharmony_ci  ```
2049e41f4b71Sopenharmony_ci
2050e41f4b71Sopenharmony_ci### readFloatArray
2051e41f4b71Sopenharmony_ci
2052e41f4b71Sopenharmony_cireadFloatArray(dataIn: number[]): void
2053e41f4b71Sopenharmony_ci
2054e41f4b71Sopenharmony_ciReads a floating-point array from this **MessageSequence** object.
2055e41f4b71Sopenharmony_ci
2056e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
2057e41f4b71Sopenharmony_ci
2058e41f4b71Sopenharmony_ci**Parameters**
2059e41f4b71Sopenharmony_ci
2060e41f4b71Sopenharmony_ci| Name| Type    | Mandatory| Description                                                                                                                   |
2061e41f4b71Sopenharmony_ci| ------ | -------- | ---- | ----------------------------------------------------------------------------------------------------------------------- |
2062e41f4b71Sopenharmony_ci| dataIn | number[] | Yes  | Floating-point array to read. The system processes Float data as that of the Double type. Therefore, the total number of bytes occupied by a FloatArray must be calculated as the Double type.|
2063e41f4b71Sopenharmony_ci
2064e41f4b71Sopenharmony_ci**Error codes**
2065e41f4b71Sopenharmony_ci
2066e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
2067e41f4b71Sopenharmony_ci
2068e41f4b71Sopenharmony_ci| ID| Error Message|
2069e41f4b71Sopenharmony_ci| -------- | -------- |
2070e41f4b71Sopenharmony_ci| 401      | check param failed |
2071e41f4b71Sopenharmony_ci| 1900010  | read data from message sequence failed |
2072e41f4b71Sopenharmony_ci
2073e41f4b71Sopenharmony_ci**Example**
2074e41f4b71Sopenharmony_ci
2075e41f4b71Sopenharmony_ci  ```ts
2076e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
2077e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
2078e41f4b71Sopenharmony_ci
2079e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
2080e41f4b71Sopenharmony_ci  try {
2081e41f4b71Sopenharmony_ci    data.writeFloatArray([1.2, 1.3, 1.4]);
2082e41f4b71Sopenharmony_ci  }catch (error){
2083e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
2084e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write floatArray fail, errorCode ' + e.code);
2085e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write floatArray fail, errorMessage ' + e.message);
2086e41f4b71Sopenharmony_ci  }
2087e41f4b71Sopenharmony_ci  let array: Array<number> = new Array(3);
2088e41f4b71Sopenharmony_ci  try {
2089e41f4b71Sopenharmony_ci    data.readFloatArray(array);
2090e41f4b71Sopenharmony_ci  } catch (error) {
2091e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
2092e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read floatArray fail, errorCode ' + e.code);
2093e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read floatArray fail, errorMessage ' + e.message);
2094e41f4b71Sopenharmony_ci  }
2095e41f4b71Sopenharmony_ci  ```
2096e41f4b71Sopenharmony_ci
2097e41f4b71Sopenharmony_ci### readFloatArray
2098e41f4b71Sopenharmony_ci
2099e41f4b71Sopenharmony_cireadFloatArray(): number[]
2100e41f4b71Sopenharmony_ci
2101e41f4b71Sopenharmony_ciReads the floating-point array from this **MessageSequence** object.
2102e41f4b71Sopenharmony_ci
2103e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
2104e41f4b71Sopenharmony_ci
2105e41f4b71Sopenharmony_ci**Return value**
2106e41f4b71Sopenharmony_ci
2107e41f4b71Sopenharmony_ci| Type    | Description          |
2108e41f4b71Sopenharmony_ci| -------- | -------------- |
2109e41f4b71Sopenharmony_ci| number[] | Floating-point array read.|
2110e41f4b71Sopenharmony_ci
2111e41f4b71Sopenharmony_ci**Error codes**
2112e41f4b71Sopenharmony_ci
2113e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
2114e41f4b71Sopenharmony_ci
2115e41f4b71Sopenharmony_ci| ID| Error Message|
2116e41f4b71Sopenharmony_ci| -------- | -------- |
2117e41f4b71Sopenharmony_ci| 1900010  | read data from message sequence failed |
2118e41f4b71Sopenharmony_ci
2119e41f4b71Sopenharmony_ci**Example**
2120e41f4b71Sopenharmony_ci
2121e41f4b71Sopenharmony_ci  ```ts
2122e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
2123e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
2124e41f4b71Sopenharmony_ci
2125e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
2126e41f4b71Sopenharmony_ci  try {
2127e41f4b71Sopenharmony_ci    data.writeFloatArray([1.2, 1.3, 1.4]);
2128e41f4b71Sopenharmony_ci  } catch (error) {
2129e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
2130e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write floatArray fail, errorCode ' + e.code);
2131e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write floatArray fail, errorMessage ' + e.message);
2132e41f4b71Sopenharmony_ci  }
2133e41f4b71Sopenharmony_ci  try {
2134e41f4b71Sopenharmony_ci    let array = data.readFloatArray();
2135e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', 'RpcClient: readFloatArray is ' + array);
2136e41f4b71Sopenharmony_ci  } catch (error) {
2137e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
2138e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read floatArray fail, errorCode ' + e.code);
2139e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read floatArray fail, errorMessage ' + e.message);
2140e41f4b71Sopenharmony_ci  }
2141e41f4b71Sopenharmony_ci  ```
2142e41f4b71Sopenharmony_ci
2143e41f4b71Sopenharmony_ci### writeDoubleArray
2144e41f4b71Sopenharmony_ci
2145e41f4b71Sopenharmony_ciwriteDoubleArray(doubleArray: number[]): void
2146e41f4b71Sopenharmony_ci
2147e41f4b71Sopenharmony_ciWrites a double-precision floating-point array to this **MessageSequence** object.
2148e41f4b71Sopenharmony_ci
2149e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
2150e41f4b71Sopenharmony_ci
2151e41f4b71Sopenharmony_ci**Parameters**
2152e41f4b71Sopenharmony_ci
2153e41f4b71Sopenharmony_ci| Name     | Type    | Mandatory| Description                    |
2154e41f4b71Sopenharmony_ci| ----------- | -------- | ---- | ------------------------ |
2155e41f4b71Sopenharmony_ci| doubleArray | number[] | Yes  | Double-precision floating-point array to write.|
2156e41f4b71Sopenharmony_ci
2157e41f4b71Sopenharmony_ci**Error codes**
2158e41f4b71Sopenharmony_ci
2159e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
2160e41f4b71Sopenharmony_ci
2161e41f4b71Sopenharmony_ci| ID| Error Message|
2162e41f4b71Sopenharmony_ci| -------- | -------- |
2163e41f4b71Sopenharmony_ci| 401      | check param failed |
2164e41f4b71Sopenharmony_ci| 1900009  | write data to message sequence failed |
2165e41f4b71Sopenharmony_ci
2166e41f4b71Sopenharmony_ci**Example**
2167e41f4b71Sopenharmony_ci
2168e41f4b71Sopenharmony_ci  ```ts
2169e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
2170e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
2171e41f4b71Sopenharmony_ci
2172e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
2173e41f4b71Sopenharmony_ci  try {
2174e41f4b71Sopenharmony_ci    data.writeDoubleArray([11.1, 12.2, 13.3]);
2175e41f4b71Sopenharmony_ci  } catch (error) {
2176e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
2177e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write doubleArray fail, errorCode ' + e.code);
2178e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write doubleArray fail, errorMessage ' + e.message);
2179e41f4b71Sopenharmony_ci  }
2180e41f4b71Sopenharmony_ci  ```
2181e41f4b71Sopenharmony_ci
2182e41f4b71Sopenharmony_ci### readDoubleArray
2183e41f4b71Sopenharmony_ci
2184e41f4b71Sopenharmony_cireadDoubleArray(dataIn: number[]): void
2185e41f4b71Sopenharmony_ci
2186e41f4b71Sopenharmony_ciReads a double-precision floating-point array from this **MessageSequence** object.
2187e41f4b71Sopenharmony_ci
2188e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
2189e41f4b71Sopenharmony_ci
2190e41f4b71Sopenharmony_ci**Parameters**
2191e41f4b71Sopenharmony_ci
2192e41f4b71Sopenharmony_ci| Name| Type    | Mandatory| Description                    |
2193e41f4b71Sopenharmony_ci| ------ | -------- | ---- | ------------------------ |
2194e41f4b71Sopenharmony_ci| dataIn | number[] | Yes  | Double-precision floating-point array to read.|
2195e41f4b71Sopenharmony_ci
2196e41f4b71Sopenharmony_ci**Error codes**
2197e41f4b71Sopenharmony_ci
2198e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
2199e41f4b71Sopenharmony_ci
2200e41f4b71Sopenharmony_ci| ID| Error Message|
2201e41f4b71Sopenharmony_ci| -------- | -------- |
2202e41f4b71Sopenharmony_ci| 401      | check param failed |
2203e41f4b71Sopenharmony_ci| 1900010  | read data from message sequence failed |
2204e41f4b71Sopenharmony_ci
2205e41f4b71Sopenharmony_ci**Example**
2206e41f4b71Sopenharmony_ci
2207e41f4b71Sopenharmony_ci  ```ts
2208e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
2209e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
2210e41f4b71Sopenharmony_ci
2211e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
2212e41f4b71Sopenharmony_ci  try {
2213e41f4b71Sopenharmony_ci    data.writeDoubleArray([11.1, 12.2, 13.3]);
2214e41f4b71Sopenharmony_ci  } catch (error) {
2215e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
2216e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write doubleArray fail, errorCode ' + e.code);
2217e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write doubleArray fail, errorMessage ' + e.message);
2218e41f4b71Sopenharmony_ci  }
2219e41f4b71Sopenharmony_ci  let array: Array<number> = new Array(3);
2220e41f4b71Sopenharmony_ci  try {
2221e41f4b71Sopenharmony_ci    data.readDoubleArray(array);
2222e41f4b71Sopenharmony_ci  } catch (error) {
2223e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
2224e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read doubleArray fail, errorCode ' + e.code);
2225e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read doubleArray fail, errorMessage ' + e.message);
2226e41f4b71Sopenharmony_ci  }
2227e41f4b71Sopenharmony_ci  ```
2228e41f4b71Sopenharmony_ci
2229e41f4b71Sopenharmony_ci### readDoubleArray
2230e41f4b71Sopenharmony_ci
2231e41f4b71Sopenharmony_cireadDoubleArray(): number[]
2232e41f4b71Sopenharmony_ci
2233e41f4b71Sopenharmony_ciReads the double-precision floating-point array from this **MessageSequence** object.
2234e41f4b71Sopenharmony_ci
2235e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
2236e41f4b71Sopenharmony_ci
2237e41f4b71Sopenharmony_ci**Return value**
2238e41f4b71Sopenharmony_ci
2239e41f4b71Sopenharmony_ci| Type    | Description                |
2240e41f4b71Sopenharmony_ci| -------- | -------------------- |
2241e41f4b71Sopenharmony_ci| number[] | Double-precision floating-point array read.|
2242e41f4b71Sopenharmony_ci
2243e41f4b71Sopenharmony_ci**Error codes**
2244e41f4b71Sopenharmony_ci
2245e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
2246e41f4b71Sopenharmony_ci
2247e41f4b71Sopenharmony_ci| ID| Error Message|
2248e41f4b71Sopenharmony_ci| -------- | -------- |
2249e41f4b71Sopenharmony_ci| 1900010  | read data from message sequence failed |
2250e41f4b71Sopenharmony_ci
2251e41f4b71Sopenharmony_ci**Example**
2252e41f4b71Sopenharmony_ci
2253e41f4b71Sopenharmony_ci  ```ts
2254e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
2255e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
2256e41f4b71Sopenharmony_ci
2257e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
2258e41f4b71Sopenharmony_ci  try {
2259e41f4b71Sopenharmony_ci    data.writeDoubleArray([11.1, 12.2, 13.3]);
2260e41f4b71Sopenharmony_ci  } catch (error) {
2261e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
2262e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write doubleArray fail, errorCode ' + e.code);
2263e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write doubleArray fail, errorMessage ' + e.message);
2264e41f4b71Sopenharmony_ci  }
2265e41f4b71Sopenharmony_ci  try {
2266e41f4b71Sopenharmony_ci    let array = data.readDoubleArray();
2267e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', 'RpcClient: readDoubleArray is ' + array);
2268e41f4b71Sopenharmony_ci  } catch (error) {
2269e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
2270e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read doubleArray fail, errorCode ' + e.code);
2271e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read doubleArray fail, errorMessage ' + e.message);
2272e41f4b71Sopenharmony_ci  }
2273e41f4b71Sopenharmony_ci  ```
2274e41f4b71Sopenharmony_ci
2275e41f4b71Sopenharmony_ci### writeBooleanArray
2276e41f4b71Sopenharmony_ci
2277e41f4b71Sopenharmony_ciwriteBooleanArray(booleanArray: boolean[]): void
2278e41f4b71Sopenharmony_ci
2279e41f4b71Sopenharmony_ciWrites a Boolean array to this **MessageSequence** object.
2280e41f4b71Sopenharmony_ci
2281e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
2282e41f4b71Sopenharmony_ci
2283e41f4b71Sopenharmony_ci**Parameters**
2284e41f4b71Sopenharmony_ci
2285e41f4b71Sopenharmony_ci| Name      | Type     | Mandatory| Description              |
2286e41f4b71Sopenharmony_ci| ------------ | --------- | ---- | ------------------ |
2287e41f4b71Sopenharmony_ci| booleanArray | boolean[] | Yes  | Boolean array to write.|
2288e41f4b71Sopenharmony_ci
2289e41f4b71Sopenharmony_ci**Error codes**
2290e41f4b71Sopenharmony_ci
2291e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
2292e41f4b71Sopenharmony_ci
2293e41f4b71Sopenharmony_ci| ID| Error Message|
2294e41f4b71Sopenharmony_ci| -------- | -------- |
2295e41f4b71Sopenharmony_ci| 401      | check param failed |
2296e41f4b71Sopenharmony_ci| 1900009  | write data to message sequence failed |
2297e41f4b71Sopenharmony_ci
2298e41f4b71Sopenharmony_ci**Example**
2299e41f4b71Sopenharmony_ci
2300e41f4b71Sopenharmony_ci  ```ts
2301e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
2302e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
2303e41f4b71Sopenharmony_ci
2304e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
2305e41f4b71Sopenharmony_ci  try {
2306e41f4b71Sopenharmony_ci    data.writeBooleanArray([false, true, false]);
2307e41f4b71Sopenharmony_ci  } catch (error) {
2308e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
2309e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write booleanArray fail, errorCode ' + e.code);
2310e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write booleanArray fail, errorMessage ' + e.message);
2311e41f4b71Sopenharmony_ci  }
2312e41f4b71Sopenharmony_ci  ```
2313e41f4b71Sopenharmony_ci
2314e41f4b71Sopenharmony_ci### readBooleanArray
2315e41f4b71Sopenharmony_ci
2316e41f4b71Sopenharmony_cireadBooleanArray(dataIn: boolean[]): void
2317e41f4b71Sopenharmony_ci
2318e41f4b71Sopenharmony_ciReads a Boolean array from this **MessageSequence** object.
2319e41f4b71Sopenharmony_ci
2320e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
2321e41f4b71Sopenharmony_ci
2322e41f4b71Sopenharmony_ci**Parameters**
2323e41f4b71Sopenharmony_ci
2324e41f4b71Sopenharmony_ci| Name| Type     | Mandatory| Description              |
2325e41f4b71Sopenharmony_ci| ------ | --------- | ---- | ------------------ |
2326e41f4b71Sopenharmony_ci| dataIn | boolean[] | Yes  | Boolean array to read.|
2327e41f4b71Sopenharmony_ci
2328e41f4b71Sopenharmony_ci**Error codes**
2329e41f4b71Sopenharmony_ci
2330e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
2331e41f4b71Sopenharmony_ci
2332e41f4b71Sopenharmony_ci| ID| Error Message|
2333e41f4b71Sopenharmony_ci| -------- | -------- |
2334e41f4b71Sopenharmony_ci| 401      | check param failed |
2335e41f4b71Sopenharmony_ci| 1900010  | read data from message sequence failed |
2336e41f4b71Sopenharmony_ci
2337e41f4b71Sopenharmony_ci**Example**
2338e41f4b71Sopenharmony_ci
2339e41f4b71Sopenharmony_ci  ```ts
2340e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
2341e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
2342e41f4b71Sopenharmony_ci
2343e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
2344e41f4b71Sopenharmony_ci  try {
2345e41f4b71Sopenharmony_ci    data.writeBooleanArray([false, true, false]);
2346e41f4b71Sopenharmony_ci  } catch (error) {
2347e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
2348e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write booleanArray fail, errorCode ' + e.code);
2349e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write booleanArray fail, errorMessage ' + e.message);
2350e41f4b71Sopenharmony_ci  }
2351e41f4b71Sopenharmony_ci  let array: Array<boolean> = new Array(3);
2352e41f4b71Sopenharmony_ci  try {
2353e41f4b71Sopenharmony_ci    data.readBooleanArray(array);
2354e41f4b71Sopenharmony_ci  } catch (error) {
2355e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
2356e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read booleanArray fail, errorCode ' + e.code);
2357e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read booleanArray fail, errorMessage ' + e.message);
2358e41f4b71Sopenharmony_ci  }
2359e41f4b71Sopenharmony_ci  ```
2360e41f4b71Sopenharmony_ci
2361e41f4b71Sopenharmony_ci### readBooleanArray
2362e41f4b71Sopenharmony_ci
2363e41f4b71Sopenharmony_cireadBooleanArray(): boolean[]
2364e41f4b71Sopenharmony_ci
2365e41f4b71Sopenharmony_ciReads the Boolean array from this **MessageSequence** object.
2366e41f4b71Sopenharmony_ci
2367e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
2368e41f4b71Sopenharmony_ci
2369e41f4b71Sopenharmony_ci**Return value**
2370e41f4b71Sopenharmony_ci
2371e41f4b71Sopenharmony_ci| Type     | Description          |
2372e41f4b71Sopenharmony_ci| --------- | -------------- |
2373e41f4b71Sopenharmony_ci| boolean[] | Boolean array read.|
2374e41f4b71Sopenharmony_ci
2375e41f4b71Sopenharmony_ci**Error codes**
2376e41f4b71Sopenharmony_ci
2377e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
2378e41f4b71Sopenharmony_ci
2379e41f4b71Sopenharmony_ci| ID| Error Message|
2380e41f4b71Sopenharmony_ci| -------- | -------- |
2381e41f4b71Sopenharmony_ci| 1900010  | read data from message sequence failed |
2382e41f4b71Sopenharmony_ci
2383e41f4b71Sopenharmony_ci**Example**
2384e41f4b71Sopenharmony_ci
2385e41f4b71Sopenharmony_ci  ```ts
2386e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
2387e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
2388e41f4b71Sopenharmony_ci
2389e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
2390e41f4b71Sopenharmony_ci  try {
2391e41f4b71Sopenharmony_ci    data.writeBooleanArray([false, true, false]);
2392e41f4b71Sopenharmony_ci  } catch (error) {
2393e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
2394e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write booleanArray fail, errorCode ' + e.code);
2395e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write booleanArray fail, errorMessage ' + e.message);
2396e41f4b71Sopenharmony_ci  }
2397e41f4b71Sopenharmony_ci  try {
2398e41f4b71Sopenharmony_ci    let array = data.readBooleanArray();
2399e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', 'RpcClient: readBooleanArray is ' + array);
2400e41f4b71Sopenharmony_ci  } catch (error) {
2401e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
2402e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read booleanArray fail, errorCode ' + e.code);
2403e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read booleanArray fail, errorMessage ' + e.message);
2404e41f4b71Sopenharmony_ci  }
2405e41f4b71Sopenharmony_ci  ```
2406e41f4b71Sopenharmony_ci
2407e41f4b71Sopenharmony_ci### writeCharArray
2408e41f4b71Sopenharmony_ci
2409e41f4b71Sopenharmony_ciwriteCharArray(charArray: number[]): void
2410e41f4b71Sopenharmony_ci
2411e41f4b71Sopenharmony_ciWrites a character array to this **MessageSequence** object.
2412e41f4b71Sopenharmony_ci
2413e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
2414e41f4b71Sopenharmony_ci
2415e41f4b71Sopenharmony_ci**Parameters**
2416e41f4b71Sopenharmony_ci
2417e41f4b71Sopenharmony_ci| Name   | Type    | Mandatory| Description                  |
2418e41f4b71Sopenharmony_ci| --------- | -------- | ---- | ---------------------- |
2419e41f4b71Sopenharmony_ci| charArray | number[] | Yes  | Character array to write.|
2420e41f4b71Sopenharmony_ci
2421e41f4b71Sopenharmony_ci**Error codes**
2422e41f4b71Sopenharmony_ci
2423e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
2424e41f4b71Sopenharmony_ci
2425e41f4b71Sopenharmony_ci| ID| Error Message|
2426e41f4b71Sopenharmony_ci| -------- | -------- |
2427e41f4b71Sopenharmony_ci| 401      | check param failed |
2428e41f4b71Sopenharmony_ci| 1900009  | write data to message sequence failed |
2429e41f4b71Sopenharmony_ci
2430e41f4b71Sopenharmony_ci**Example**
2431e41f4b71Sopenharmony_ci
2432e41f4b71Sopenharmony_ci  ```ts
2433e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
2434e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
2435e41f4b71Sopenharmony_ci
2436e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
2437e41f4b71Sopenharmony_ci  try {
2438e41f4b71Sopenharmony_ci    data.writeCharArray([97, 98, 88]);
2439e41f4b71Sopenharmony_ci  } catch (error) {
2440e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
2441e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write charArray fail, errorCode ' + e.code);
2442e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write charArray fail, errorMessage ' + e.message);
2443e41f4b71Sopenharmony_ci  }
2444e41f4b71Sopenharmony_ci  ```
2445e41f4b71Sopenharmony_ci
2446e41f4b71Sopenharmony_ci### readCharArray
2447e41f4b71Sopenharmony_ci
2448e41f4b71Sopenharmony_cireadCharArray(dataIn: number[]): void
2449e41f4b71Sopenharmony_ci
2450e41f4b71Sopenharmony_ciReads a character array from this **MessageSequence** object.
2451e41f4b71Sopenharmony_ci
2452e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
2453e41f4b71Sopenharmony_ci
2454e41f4b71Sopenharmony_ci**Parameters**
2455e41f4b71Sopenharmony_ci
2456e41f4b71Sopenharmony_ci| Name| Type    | Mandatory| Description                  |
2457e41f4b71Sopenharmony_ci| ------ | -------- | ---- | ---------------------- |
2458e41f4b71Sopenharmony_ci| dataIn | number[] | Yes  | Character array to read.|
2459e41f4b71Sopenharmony_ci
2460e41f4b71Sopenharmony_ci**Error codes**
2461e41f4b71Sopenharmony_ci
2462e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
2463e41f4b71Sopenharmony_ci
2464e41f4b71Sopenharmony_ci| ID| Error Message|
2465e41f4b71Sopenharmony_ci| -------- | -------- |
2466e41f4b71Sopenharmony_ci| 401      | check param failed |
2467e41f4b71Sopenharmony_ci| 1900010  | read data from message sequence failed |
2468e41f4b71Sopenharmony_ci
2469e41f4b71Sopenharmony_ci**Example**
2470e41f4b71Sopenharmony_ci
2471e41f4b71Sopenharmony_ci  ```ts
2472e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
2473e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
2474e41f4b71Sopenharmony_ci
2475e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
2476e41f4b71Sopenharmony_ci  try {
2477e41f4b71Sopenharmony_ci    data.writeCharArray([97, 98, 88]);
2478e41f4b71Sopenharmony_ci  } catch (error) {
2479e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
2480e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write charArray fail, errorCode ' + e.code);
2481e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write charArray fail, errorMessage ' + e.message);
2482e41f4b71Sopenharmony_ci  }
2483e41f4b71Sopenharmony_ci  let array: Array<number> = new Array(3);
2484e41f4b71Sopenharmony_ci  try {
2485e41f4b71Sopenharmony_ci    data.readCharArray(array);
2486e41f4b71Sopenharmony_ci  } catch (error) {
2487e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
2488e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read charArray fail, errorCode ' + e.code);
2489e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read charArray fail, errorMessage ' + e.message);
2490e41f4b71Sopenharmony_ci  }
2491e41f4b71Sopenharmony_ci  ```
2492e41f4b71Sopenharmony_ci
2493e41f4b71Sopenharmony_ci### readCharArray
2494e41f4b71Sopenharmony_ci
2495e41f4b71Sopenharmony_cireadCharArray(): number[]
2496e41f4b71Sopenharmony_ci
2497e41f4b71Sopenharmony_ciReads the character array from this **MessageSequence** object.
2498e41f4b71Sopenharmony_ci
2499e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
2500e41f4b71Sopenharmony_ci
2501e41f4b71Sopenharmony_ci**Return value**
2502e41f4b71Sopenharmony_ci
2503e41f4b71Sopenharmony_ci| Type    | Description              |
2504e41f4b71Sopenharmony_ci| -------- | ------------------ |
2505e41f4b71Sopenharmony_ci| number[] | Character array read.|
2506e41f4b71Sopenharmony_ci
2507e41f4b71Sopenharmony_ci**Error codes**
2508e41f4b71Sopenharmony_ci
2509e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
2510e41f4b71Sopenharmony_ci
2511e41f4b71Sopenharmony_ci| ID| Error Message|
2512e41f4b71Sopenharmony_ci| -------- | -------- |
2513e41f4b71Sopenharmony_ci| 1900010  | read data from message sequence failed |
2514e41f4b71Sopenharmony_ci
2515e41f4b71Sopenharmony_ci**Example**
2516e41f4b71Sopenharmony_ci
2517e41f4b71Sopenharmony_ci  ```ts
2518e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
2519e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
2520e41f4b71Sopenharmony_ci
2521e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
2522e41f4b71Sopenharmony_ci  try {
2523e41f4b71Sopenharmony_ci    data.writeCharArray([97, 98, 88]);
2524e41f4b71Sopenharmony_ci  } catch (error) {
2525e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
2526e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write charArray fail, errorCode ' + e.code);
2527e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write charArray fail, errorMessage ' + e.message);
2528e41f4b71Sopenharmony_ci  }
2529e41f4b71Sopenharmony_ci  try {
2530e41f4b71Sopenharmony_ci    let array = data.readCharArray();
2531e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', 'RpcClient: readCharArray is ' + array);
2532e41f4b71Sopenharmony_ci  } catch (error) {
2533e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
2534e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read charArray fail, errorCode ' + e.code);
2535e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read charArray fail, errorMessage ' + e.message);
2536e41f4b71Sopenharmony_ci  }
2537e41f4b71Sopenharmony_ci  ```
2538e41f4b71Sopenharmony_ci
2539e41f4b71Sopenharmony_ci### writeStringArray
2540e41f4b71Sopenharmony_ci
2541e41f4b71Sopenharmony_ciwriteStringArray(stringArray: string[]): void
2542e41f4b71Sopenharmony_ci
2543e41f4b71Sopenharmony_ciWrites a string array to this **MessageSequence** object.
2544e41f4b71Sopenharmony_ci
2545e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
2546e41f4b71Sopenharmony_ci
2547e41f4b71Sopenharmony_ci**Parameters**
2548e41f4b71Sopenharmony_ci
2549e41f4b71Sopenharmony_ci| Name     | Type    | Mandatory| Description                                                   |
2550e41f4b71Sopenharmony_ci| ----------- | -------- | ---- | ------------------------------------------------------- |
2551e41f4b71Sopenharmony_ci| stringArray | string[] | Yes  | String array to write. The length of a single element in the array must be less than 40960 bytes.|
2552e41f4b71Sopenharmony_ci
2553e41f4b71Sopenharmony_ci**Error codes**
2554e41f4b71Sopenharmony_ci
2555e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
2556e41f4b71Sopenharmony_ci
2557e41f4b71Sopenharmony_ci| ID| Error Message|
2558e41f4b71Sopenharmony_ci| -------- | -------- |
2559e41f4b71Sopenharmony_ci| 401      | check param failed |
2560e41f4b71Sopenharmony_ci| 1900009  | write data to message sequence failed |
2561e41f4b71Sopenharmony_ci
2562e41f4b71Sopenharmony_ci**Example**
2563e41f4b71Sopenharmony_ci
2564e41f4b71Sopenharmony_ci  ```ts
2565e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
2566e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
2567e41f4b71Sopenharmony_ci
2568e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
2569e41f4b71Sopenharmony_ci  try {
2570e41f4b71Sopenharmony_ci    data.writeStringArray(["abc", "def"]);
2571e41f4b71Sopenharmony_ci  } catch (error) {
2572e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
2573e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write stringArray fail, errorCode ' + e.code);
2574e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write stringArray fail, errorMessage ' + e.message);
2575e41f4b71Sopenharmony_ci  }
2576e41f4b71Sopenharmony_ci  ```
2577e41f4b71Sopenharmony_ci
2578e41f4b71Sopenharmony_ci### readStringArray
2579e41f4b71Sopenharmony_ci
2580e41f4b71Sopenharmony_cireadStringArray(dataIn: string[]): void
2581e41f4b71Sopenharmony_ci
2582e41f4b71Sopenharmony_ciReads a string array from this **MessageSequence** object.
2583e41f4b71Sopenharmony_ci
2584e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
2585e41f4b71Sopenharmony_ci
2586e41f4b71Sopenharmony_ci**Parameters**
2587e41f4b71Sopenharmony_ci
2588e41f4b71Sopenharmony_ci| Name| Type    | Mandatory| Description                |
2589e41f4b71Sopenharmony_ci| ------ | -------- | ---- | -------------------- |
2590e41f4b71Sopenharmony_ci| dataIn | string[] | Yes  | String array to read.|
2591e41f4b71Sopenharmony_ci
2592e41f4b71Sopenharmony_ci**Error codes**
2593e41f4b71Sopenharmony_ci
2594e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
2595e41f4b71Sopenharmony_ci
2596e41f4b71Sopenharmony_ci| ID| Error Message|
2597e41f4b71Sopenharmony_ci| -------- | -------- |
2598e41f4b71Sopenharmony_ci| 401      | check param failed |
2599e41f4b71Sopenharmony_ci| 1900010  | read data from message sequence failed |
2600e41f4b71Sopenharmony_ci
2601e41f4b71Sopenharmony_ci**Example**
2602e41f4b71Sopenharmony_ci
2603e41f4b71Sopenharmony_ci  ```ts
2604e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
2605e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
2606e41f4b71Sopenharmony_ci
2607e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
2608e41f4b71Sopenharmony_ci  try {
2609e41f4b71Sopenharmony_ci    data.writeStringArray(["abc", "def"]);
2610e41f4b71Sopenharmony_ci  } catch (error) {
2611e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
2612e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write stringArray fail, errorCode ' + e.code);
2613e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write stringArray fail, errorMessage ' + e.message);
2614e41f4b71Sopenharmony_ci  }
2615e41f4b71Sopenharmony_ci  let array: Array<string> = new Array(2);
2616e41f4b71Sopenharmony_ci  try {
2617e41f4b71Sopenharmony_ci    data.readStringArray(array);
2618e41f4b71Sopenharmony_ci  } catch (error) {
2619e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
2620e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read stringArray fail, errorCode ' + e.code);
2621e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read stringArray fail, errorMessage ' + e.message);
2622e41f4b71Sopenharmony_ci  }
2623e41f4b71Sopenharmony_ci  ```
2624e41f4b71Sopenharmony_ci
2625e41f4b71Sopenharmony_ci### readStringArray
2626e41f4b71Sopenharmony_ci
2627e41f4b71Sopenharmony_cireadStringArray(): string[]
2628e41f4b71Sopenharmony_ci
2629e41f4b71Sopenharmony_ciReads the string array from this **MessageSequence** object.
2630e41f4b71Sopenharmony_ci
2631e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
2632e41f4b71Sopenharmony_ci
2633e41f4b71Sopenharmony_ci**Return value**
2634e41f4b71Sopenharmony_ci
2635e41f4b71Sopenharmony_ci| Type    | Description            |
2636e41f4b71Sopenharmony_ci| -------- | ---------------- |
2637e41f4b71Sopenharmony_ci| string[] | String array read.|
2638e41f4b71Sopenharmony_ci
2639e41f4b71Sopenharmony_ci**Error codes**
2640e41f4b71Sopenharmony_ci
2641e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
2642e41f4b71Sopenharmony_ci
2643e41f4b71Sopenharmony_ci| ID| Error Message|
2644e41f4b71Sopenharmony_ci| -------- | -------- |
2645e41f4b71Sopenharmony_ci| 1900010  | read data from message sequence failed |
2646e41f4b71Sopenharmony_ci
2647e41f4b71Sopenharmony_ci**Example**
2648e41f4b71Sopenharmony_ci
2649e41f4b71Sopenharmony_ci  ```ts
2650e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
2651e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
2652e41f4b71Sopenharmony_ci
2653e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
2654e41f4b71Sopenharmony_ci  try {
2655e41f4b71Sopenharmony_ci    data.writeStringArray(["abc", "def"]);
2656e41f4b71Sopenharmony_ci  } catch (error) {
2657e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
2658e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write stringArray fail, errorCode ' + e.code);
2659e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write stringArray fail, errorMessage ' + e.message);
2660e41f4b71Sopenharmony_ci  }
2661e41f4b71Sopenharmony_ci  try {
2662e41f4b71Sopenharmony_ci    let array = data.readStringArray();
2663e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', 'RpcClient: readStringArray is ' + array);
2664e41f4b71Sopenharmony_ci  } catch (error) {
2665e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
2666e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read stringArray fail, errorCode ' + e.code);
2667e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read stringArray fail, errorMessage ' + e.message);
2668e41f4b71Sopenharmony_ci  }
2669e41f4b71Sopenharmony_ci  ```
2670e41f4b71Sopenharmony_ci
2671e41f4b71Sopenharmony_ci### writeNoException
2672e41f4b71Sopenharmony_ci
2673e41f4b71Sopenharmony_ciwriteNoException(): void
2674e41f4b71Sopenharmony_ci
2675e41f4b71Sopenharmony_ciWrites information to this **MessageSequence** object indicating that no exception occurred.
2676e41f4b71Sopenharmony_ci
2677e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
2678e41f4b71Sopenharmony_ci
2679e41f4b71Sopenharmony_ci**Error codes**
2680e41f4b71Sopenharmony_ci
2681e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
2682e41f4b71Sopenharmony_ci
2683e41f4b71Sopenharmony_ci| ID| Error Message|
2684e41f4b71Sopenharmony_ci| -------- | -------- |
2685e41f4b71Sopenharmony_ci| 1900009  | write data to message sequence failed |
2686e41f4b71Sopenharmony_ci
2687e41f4b71Sopenharmony_ci**Example**
2688e41f4b71Sopenharmony_ci
2689e41f4b71Sopenharmony_ci  ```ts
2690e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
2691e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
2692e41f4b71Sopenharmony_ci
2693e41f4b71Sopenharmony_ci  class TestRemoteObject extends rpc.RemoteObject {
2694e41f4b71Sopenharmony_ci    constructor(descriptor: string) {
2695e41f4b71Sopenharmony_ci      super(descriptor);
2696e41f4b71Sopenharmony_ci    }
2697e41f4b71Sopenharmony_ci    onRemoteMessageRequest(code: number, data: rpc.MessageSequence, reply: rpc.MessageSequence, option: rpc.MessageOption): boolean | Promise<boolean> {
2698e41f4b71Sopenharmony_ci      if (code === 1) {
2699e41f4b71Sopenharmony_ci        hilog.info(0x0000, 'testTag', 'RpcServer: onRemoteMessageRequest called');
2700e41f4b71Sopenharmony_ci        try {
2701e41f4b71Sopenharmony_ci          reply.writeNoException();
2702e41f4b71Sopenharmony_ci        } catch (error) {
2703e41f4b71Sopenharmony_ci          let e: BusinessError = error as BusinessError;
2704e41f4b71Sopenharmony_ci          hilog.error(0x0000, 'testTag', 'rpc write no exception fail, errorCode ' + e.code);
2705e41f4b71Sopenharmony_ci          hilog.error(0x0000, 'testTag', 'rpc write no exception fail, errorMessage ' + e.message);
2706e41f4b71Sopenharmony_ci        }
2707e41f4b71Sopenharmony_ci        return true;
2708e41f4b71Sopenharmony_ci      } else {
2709e41f4b71Sopenharmony_ci        hilog.error(0x0000, 'testTag', 'RpcServer: unknown code: ' + code);
2710e41f4b71Sopenharmony_ci        return false;
2711e41f4b71Sopenharmony_ci      }
2712e41f4b71Sopenharmony_ci    }
2713e41f4b71Sopenharmony_ci  }
2714e41f4b71Sopenharmony_ci  ```
2715e41f4b71Sopenharmony_ci
2716e41f4b71Sopenharmony_ci### readException
2717e41f4b71Sopenharmony_ci
2718e41f4b71Sopenharmony_cireadException(): void
2719e41f4b71Sopenharmony_ci
2720e41f4b71Sopenharmony_ciReads the exception information from this **MessageSequence** object.
2721e41f4b71Sopenharmony_ci
2722e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
2723e41f4b71Sopenharmony_ci
2724e41f4b71Sopenharmony_ci**Error codes**
2725e41f4b71Sopenharmony_ci
2726e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
2727e41f4b71Sopenharmony_ci
2728e41f4b71Sopenharmony_ci| ID| Error Message|
2729e41f4b71Sopenharmony_ci| -------- | -------- |
2730e41f4b71Sopenharmony_ci| 1900010  | read data from message sequence failed |
2731e41f4b71Sopenharmony_ci
2732e41f4b71Sopenharmony_ci**Example**
2733e41f4b71Sopenharmony_ci
2734e41f4b71Sopenharmony_ci  ```ts
2735e41f4b71Sopenharmony_ci  // If the FA model is used, import featureAbility from @kit.AbilityKit.
2736e41f4b71Sopenharmony_ci  // import { featureAbility } from '@kit.AbilityKit';
2737e41f4b71Sopenharmony_ci  import { Want, common } from '@kit.AbilityKit';
2738e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
2739e41f4b71Sopenharmony_ci
2740e41f4b71Sopenharmony_ci  let proxy: rpc.IRemoteObject | undefined;
2741e41f4b71Sopenharmony_ci  let connect: common.ConnectOptions = {
2742e41f4b71Sopenharmony_ci    onConnect: (elementName, remoteProxy) => {
2743e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcClient: js onConnect called');
2744e41f4b71Sopenharmony_ci      proxy = remoteProxy;
2745e41f4b71Sopenharmony_ci    },
2746e41f4b71Sopenharmony_ci    onDisconnect: (elementName) => {
2747e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcClient: onDisconnect');
2748e41f4b71Sopenharmony_ci    },
2749e41f4b71Sopenharmony_ci    onFailed: () => {
2750e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcClient: onFailed');
2751e41f4b71Sopenharmony_ci    }
2752e41f4b71Sopenharmony_ci  };
2753e41f4b71Sopenharmony_ci  let want: Want = {
2754e41f4b71Sopenharmony_ci    bundleName: "com.ohos.server",
2755e41f4b71Sopenharmony_ci    abilityName: "com.ohos.server.EntryAbility",
2756e41f4b71Sopenharmony_ci  };
2757e41f4b71Sopenharmony_ci
2758e41f4b71Sopenharmony_ci  // Use this method to connect to the ability for the FA model.
2759e41f4b71Sopenharmony_ci  // FA.connectAbility(want,connect);
2760e41f4b71Sopenharmony_ci
2761e41f4b71Sopenharmony_ci  // Save the connection ID, which will be used for the subsequent service disconnection.
2762e41f4b71Sopenharmony_ci  let context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext; // UIAbilityContext
2763e41f4b71Sopenharmony_ci  // Save the connection ID, which will be used for the subsequent service disconnection.
2764e41f4b71Sopenharmony_ci  let connectionId = context.connectServiceExtensionAbility(want, connect);
2765e41f4b71Sopenharmony_ci  ```
2766e41f4b71Sopenharmony_ci
2767e41f4b71Sopenharmony_ci  The proxy object in the **onConnect** callback can be assigned a value only after the ability is connected asynchronously. Then, **sendMessageRequest()** of the proxy object is called to send a message.
2768e41f4b71Sopenharmony_ci
2769e41f4b71Sopenharmony_ci  ```ts
2770e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
2771e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
2772e41f4b71Sopenharmony_ci
2773e41f4b71Sopenharmony_ci  let option = new rpc.MessageOption();
2774e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
2775e41f4b71Sopenharmony_ci  let reply = rpc.MessageSequence.create();
2776e41f4b71Sopenharmony_ci  data.writeNoException();
2777e41f4b71Sopenharmony_ci  data.writeInt(6);
2778e41f4b71Sopenharmony_ci  if (proxy != undefined) {
2779e41f4b71Sopenharmony_ci    proxy.sendMessageRequest(1, data, reply, option)
2780e41f4b71Sopenharmony_ci      .then((result: rpc.RequestResult) => {
2781e41f4b71Sopenharmony_ci        if (result.errCode === 0) {
2782e41f4b71Sopenharmony_ci          hilog.info(0x0000, 'testTag', 'sendMessageRequest got result');
2783e41f4b71Sopenharmony_ci          try {
2784e41f4b71Sopenharmony_ci            result.reply.readException();
2785e41f4b71Sopenharmony_ci          } catch (error) {
2786e41f4b71Sopenharmony_ci            let e: BusinessError = error as BusinessError;
2787e41f4b71Sopenharmony_ci            hilog.error(0x0000, 'testTag', 'rpc read exception fail, errorCode ' + e.code);
2788e41f4b71Sopenharmony_ci            hilog.error(0x0000, 'testTag', 'rpc read exception fail, errorMessage ' + e.message);
2789e41f4b71Sopenharmony_ci          }
2790e41f4b71Sopenharmony_ci          let num = result.reply.readInt();
2791e41f4b71Sopenharmony_ci          hilog.info(0x0000, 'testTag', 'RPCTest: reply num: ' + num);
2792e41f4b71Sopenharmony_ci        } else {
2793e41f4b71Sopenharmony_ci          hilog.error(0x0000, 'testTag', 'RPCTest: sendMessageRequest failed, errCode: ' + result.errCode);
2794e41f4b71Sopenharmony_ci        }
2795e41f4b71Sopenharmony_ci      }).catch((e: Error) => {
2796e41f4b71Sopenharmony_ci        hilog.error(0x0000, 'testTag', 'RPCTest: sendMessageRequest got exception: ' + e.message);
2797e41f4b71Sopenharmony_ci      }).finally (() => {
2798e41f4b71Sopenharmony_ci        hilog.info(0x0000, 'testTag', 'RPCTest: sendMessageRequest ends, reclaim parcel');
2799e41f4b71Sopenharmony_ci        data.reclaim();
2800e41f4b71Sopenharmony_ci        reply.reclaim();
2801e41f4b71Sopenharmony_ci      });
2802e41f4b71Sopenharmony_ci  }
2803e41f4b71Sopenharmony_ci  ```
2804e41f4b71Sopenharmony_ci
2805e41f4b71Sopenharmony_ci### writeParcelableArray
2806e41f4b71Sopenharmony_ci
2807e41f4b71Sopenharmony_ciwriteParcelableArray(parcelableArray: Parcelable[]): void
2808e41f4b71Sopenharmony_ci
2809e41f4b71Sopenharmony_ciWrites a **Parcelable** array to this **MessageSequence** object.
2810e41f4b71Sopenharmony_ci
2811e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
2812e41f4b71Sopenharmony_ci
2813e41f4b71Sopenharmony_ci**Parameters**
2814e41f4b71Sopenharmony_ci
2815e41f4b71Sopenharmony_ci| Name         | Type        | Mandatory| Description                      |
2816e41f4b71Sopenharmony_ci| --------------- | ------------ | ---- | -------------------------- |
2817e41f4b71Sopenharmony_ci| parcelableArray | [Parcelable](#parcelable9)[] | Yes  | **Parcelable** array to write.|
2818e41f4b71Sopenharmony_ci
2819e41f4b71Sopenharmony_ci**Error codes**
2820e41f4b71Sopenharmony_ci
2821e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
2822e41f4b71Sopenharmony_ci
2823e41f4b71Sopenharmony_ci| ID| Error Message|
2824e41f4b71Sopenharmony_ci| -------- | -------- |
2825e41f4b71Sopenharmony_ci| 401      | check param failed |
2826e41f4b71Sopenharmony_ci| 1900009  | write data to message sequence failed |
2827e41f4b71Sopenharmony_ci
2828e41f4b71Sopenharmony_ci**Example**
2829e41f4b71Sopenharmony_ci
2830e41f4b71Sopenharmony_ci  ```ts
2831e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
2832e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
2833e41f4b71Sopenharmony_ci
2834e41f4b71Sopenharmony_ci  class MyParcelable implements rpc.Parcelable {
2835e41f4b71Sopenharmony_ci    num: number = 0;
2836e41f4b71Sopenharmony_ci    str: string = '';
2837e41f4b71Sopenharmony_ci    constructor(num: number, str: string) {
2838e41f4b71Sopenharmony_ci      this.num = num;
2839e41f4b71Sopenharmony_ci      this.str = str;
2840e41f4b71Sopenharmony_ci    }
2841e41f4b71Sopenharmony_ci    marshalling(messageSequence: rpc.MessageSequence): boolean {
2842e41f4b71Sopenharmony_ci      messageSequence.writeInt(this.num);
2843e41f4b71Sopenharmony_ci      messageSequence.writeString(this.str);
2844e41f4b71Sopenharmony_ci      return true;
2845e41f4b71Sopenharmony_ci    }
2846e41f4b71Sopenharmony_ci    unmarshalling(messageSequence: rpc.MessageSequence): boolean {
2847e41f4b71Sopenharmony_ci      this.num = messageSequence.readInt();
2848e41f4b71Sopenharmony_ci      this.str = messageSequence.readString();
2849e41f4b71Sopenharmony_ci      return true;
2850e41f4b71Sopenharmony_ci    }
2851e41f4b71Sopenharmony_ci  }
2852e41f4b71Sopenharmony_ci  let parcelable = new MyParcelable(1, "aaa");
2853e41f4b71Sopenharmony_ci  let parcelable2 = new MyParcelable(2, "bbb");
2854e41f4b71Sopenharmony_ci  let parcelable3 = new MyParcelable(3, "ccc");
2855e41f4b71Sopenharmony_ci  let a = [parcelable, parcelable2, parcelable3];
2856e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
2857e41f4b71Sopenharmony_ci  try {
2858e41f4b71Sopenharmony_ci    data.writeParcelableArray(a);
2859e41f4b71Sopenharmony_ci  } catch (error) {
2860e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
2861e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write parcelable array fail, errorCode ' + e.code);
2862e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write parcelable array fail, errorMessage ' + e.message);
2863e41f4b71Sopenharmony_ci  }
2864e41f4b71Sopenharmony_ci  ```
2865e41f4b71Sopenharmony_ci
2866e41f4b71Sopenharmony_ci### readParcelableArray
2867e41f4b71Sopenharmony_ci
2868e41f4b71Sopenharmony_cireadParcelableArray(parcelableArray: Parcelable[]): void
2869e41f4b71Sopenharmony_ci
2870e41f4b71Sopenharmony_ciReads a **Parcelable** array from this **MessageSequence** object.
2871e41f4b71Sopenharmony_ci
2872e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
2873e41f4b71Sopenharmony_ci
2874e41f4b71Sopenharmony_ci**Parameters**
2875e41f4b71Sopenharmony_ci
2876e41f4b71Sopenharmony_ci| Name         | Type        | Mandatory| Description                      |
2877e41f4b71Sopenharmony_ci| --------------- | ------------ | ---- | -------------------------- |
2878e41f4b71Sopenharmony_ci| parcelableArray | [Parcelable](#parcelable9)[] | Yes  | **Parcelable** array to read.|
2879e41f4b71Sopenharmony_ci
2880e41f4b71Sopenharmony_ci**Error codes**
2881e41f4b71Sopenharmony_ci
2882e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
2883e41f4b71Sopenharmony_ci
2884e41f4b71Sopenharmony_ci| ID| Error Message|
2885e41f4b71Sopenharmony_ci| -------- | -------- |
2886e41f4b71Sopenharmony_ci| 401      | check param failed |
2887e41f4b71Sopenharmony_ci| 1900010  | read data from message sequence failed |
2888e41f4b71Sopenharmony_ci| 1900012  | call js callback function failed |
2889e41f4b71Sopenharmony_ci
2890e41f4b71Sopenharmony_ci**Example**
2891e41f4b71Sopenharmony_ci
2892e41f4b71Sopenharmony_ci  ```ts
2893e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
2894e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
2895e41f4b71Sopenharmony_ci
2896e41f4b71Sopenharmony_ci  class MyParcelable implements rpc.Parcelable {
2897e41f4b71Sopenharmony_ci    num: number = 0;
2898e41f4b71Sopenharmony_ci    str: string = '';
2899e41f4b71Sopenharmony_ci    constructor(num: number, str: string) {
2900e41f4b71Sopenharmony_ci      this.num = num;
2901e41f4b71Sopenharmony_ci      this.str = str;
2902e41f4b71Sopenharmony_ci    }
2903e41f4b71Sopenharmony_ci    marshalling(messageSequence: rpc.MessageSequence): boolean {
2904e41f4b71Sopenharmony_ci      messageSequence.writeInt(this.num);
2905e41f4b71Sopenharmony_ci      messageSequence.writeString(this.str);
2906e41f4b71Sopenharmony_ci      return true;
2907e41f4b71Sopenharmony_ci    }
2908e41f4b71Sopenharmony_ci    unmarshalling(messageSequence: rpc.MessageSequence): boolean {
2909e41f4b71Sopenharmony_ci      this.num = messageSequence.readInt();
2910e41f4b71Sopenharmony_ci      this.str = messageSequence.readString();
2911e41f4b71Sopenharmony_ci      return true;
2912e41f4b71Sopenharmony_ci    }
2913e41f4b71Sopenharmony_ci  }
2914e41f4b71Sopenharmony_ci  let parcelable = new MyParcelable(1, "aaa");
2915e41f4b71Sopenharmony_ci  let parcelable2 = new MyParcelable(2, "bbb");
2916e41f4b71Sopenharmony_ci  let parcelable3 = new MyParcelable(3, "ccc");
2917e41f4b71Sopenharmony_ci  let a = [parcelable, parcelable2, parcelable3];
2918e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
2919e41f4b71Sopenharmony_ci  data.writeParcelableArray(a);
2920e41f4b71Sopenharmony_ci  let b = [new MyParcelable(0, ""), new MyParcelable(0, ""), new MyParcelable(0, "")];
2921e41f4b71Sopenharmony_ci  try {
2922e41f4b71Sopenharmony_ci    data.readParcelableArray(b);
2923e41f4b71Sopenharmony_ci  } catch (error) {
2924e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
2925e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read parcelable array fail, errorCode ' + e.code);
2926e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read parcelable array fail, errorMessage ' + e.message);
2927e41f4b71Sopenharmony_ci  }
2928e41f4b71Sopenharmony_ci  ```
2929e41f4b71Sopenharmony_ci
2930e41f4b71Sopenharmony_ci### writeRemoteObjectArray
2931e41f4b71Sopenharmony_ci
2932e41f4b71Sopenharmony_ciwriteRemoteObjectArray(objectArray: IRemoteObject[]): void
2933e41f4b71Sopenharmony_ci
2934e41f4b71Sopenharmony_ciWrites an array of **IRemoteObject** objects to this **MessageSequence** object.
2935e41f4b71Sopenharmony_ci
2936e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
2937e41f4b71Sopenharmony_ci
2938e41f4b71Sopenharmony_ci**Parameters**
2939e41f4b71Sopenharmony_ci
2940e41f4b71Sopenharmony_ci| Name     | Type           | Mandatory| Description                                          |
2941e41f4b71Sopenharmony_ci| ----------- | --------------- | ---- | ---------------------------------------------- |
2942e41f4b71Sopenharmony_ci| objectArray | [IRemoteObject](#iremoteobject)[] | Yes  | Array of **IRemoteObject** objects to write.|
2943e41f4b71Sopenharmony_ci
2944e41f4b71Sopenharmony_ci**Error codes**
2945e41f4b71Sopenharmony_ci
2946e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
2947e41f4b71Sopenharmony_ci
2948e41f4b71Sopenharmony_ci| ID| Error Message|
2949e41f4b71Sopenharmony_ci| -------- | -------- |
2950e41f4b71Sopenharmony_ci| 401      | check param failed |
2951e41f4b71Sopenharmony_ci| 1900009  | write data to message sequence failed |
2952e41f4b71Sopenharmony_ci
2953e41f4b71Sopenharmony_ci**Example**
2954e41f4b71Sopenharmony_ci
2955e41f4b71Sopenharmony_ci  ```ts
2956e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
2957e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
2958e41f4b71Sopenharmony_ci
2959e41f4b71Sopenharmony_ci  class TestRemoteObject extends rpc.RemoteObject {
2960e41f4b71Sopenharmony_ci    constructor(descriptor: string) {
2961e41f4b71Sopenharmony_ci      super(descriptor);
2962e41f4b71Sopenharmony_ci      this.modifyLocalInterface(this, descriptor);
2963e41f4b71Sopenharmony_ci    }
2964e41f4b71Sopenharmony_ci
2965e41f4b71Sopenharmony_ci    asObject(): rpc.IRemoteObject {
2966e41f4b71Sopenharmony_ci      return this;
2967e41f4b71Sopenharmony_ci    }
2968e41f4b71Sopenharmony_ci  }
2969e41f4b71Sopenharmony_ci  let a = [new TestRemoteObject("testObject1"), new TestRemoteObject("testObject2"), new TestRemoteObject("testObject3")];
2970e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
2971e41f4b71Sopenharmony_ci  try {
2972e41f4b71Sopenharmony_ci    data.writeRemoteObjectArray(a);
2973e41f4b71Sopenharmony_ci  } catch (error) {
2974e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
2975e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write remote object array fail, errorCode ' + e.code);
2976e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write remote object array fail, errorMessage ' + e.message);
2977e41f4b71Sopenharmony_ci  }
2978e41f4b71Sopenharmony_ci  ```
2979e41f4b71Sopenharmony_ci
2980e41f4b71Sopenharmony_ci### readRemoteObjectArray
2981e41f4b71Sopenharmony_ci
2982e41f4b71Sopenharmony_cireadRemoteObjectArray(objects: IRemoteObject[]): void
2983e41f4b71Sopenharmony_ci
2984e41f4b71Sopenharmony_ciReads an array of **IRemoteObject** objects from this **MessageSequence** object.
2985e41f4b71Sopenharmony_ci
2986e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
2987e41f4b71Sopenharmony_ci
2988e41f4b71Sopenharmony_ci**Parameters**
2989e41f4b71Sopenharmony_ci
2990e41f4b71Sopenharmony_ci| Name | Type           | Mandatory| Description                                          |
2991e41f4b71Sopenharmony_ci| ------- | --------------- | ---- | ---------------------------------------------- |
2992e41f4b71Sopenharmony_ci| objects | [IRemoteObject](#iremoteobject)[] | Yes  | **IRemoteObject** array to read.|
2993e41f4b71Sopenharmony_ci
2994e41f4b71Sopenharmony_ci**Error codes**
2995e41f4b71Sopenharmony_ci
2996e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
2997e41f4b71Sopenharmony_ci
2998e41f4b71Sopenharmony_ci| ID| Error Message|
2999e41f4b71Sopenharmony_ci| -------- | -------- |
3000e41f4b71Sopenharmony_ci| 401      | check param failed |
3001e41f4b71Sopenharmony_ci| 1900010  | read data from message sequence failed |
3002e41f4b71Sopenharmony_ci
3003e41f4b71Sopenharmony_ci**Example**
3004e41f4b71Sopenharmony_ci
3005e41f4b71Sopenharmony_ci  ```ts
3006e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
3007e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
3008e41f4b71Sopenharmony_ci
3009e41f4b71Sopenharmony_ci  class TestRemoteObject extends rpc.RemoteObject {
3010e41f4b71Sopenharmony_ci    constructor(descriptor: string) {
3011e41f4b71Sopenharmony_ci      super(descriptor);
3012e41f4b71Sopenharmony_ci      this.modifyLocalInterface(this, descriptor);
3013e41f4b71Sopenharmony_ci    }
3014e41f4b71Sopenharmony_ci
3015e41f4b71Sopenharmony_ci    asObject(): rpc.IRemoteObject {
3016e41f4b71Sopenharmony_ci      return this;
3017e41f4b71Sopenharmony_ci    }
3018e41f4b71Sopenharmony_ci  }
3019e41f4b71Sopenharmony_ci  let a = [new TestRemoteObject("testObject1"), new TestRemoteObject("testObject2"), new TestRemoteObject("testObject3")];
3020e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
3021e41f4b71Sopenharmony_ci  data.writeRemoteObjectArray(a);
3022e41f4b71Sopenharmony_ci  let b: Array<rpc.IRemoteObject> = new Array(3);
3023e41f4b71Sopenharmony_ci  try {
3024e41f4b71Sopenharmony_ci    data.readRemoteObjectArray(b);
3025e41f4b71Sopenharmony_ci  } catch (error) {
3026e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
3027e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read remote object array fail, errorCode ' + e.code);
3028e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read remote object array fail, errorMessage ' + e.message);
3029e41f4b71Sopenharmony_ci  }
3030e41f4b71Sopenharmony_ci  ```
3031e41f4b71Sopenharmony_ci
3032e41f4b71Sopenharmony_ci### readRemoteObjectArray
3033e41f4b71Sopenharmony_ci
3034e41f4b71Sopenharmony_cireadRemoteObjectArray(): IRemoteObject[]
3035e41f4b71Sopenharmony_ci
3036e41f4b71Sopenharmony_ciReads the **IRemoteObject** object array from this **MessageSequence** object.
3037e41f4b71Sopenharmony_ci
3038e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
3039e41f4b71Sopenharmony_ci
3040e41f4b71Sopenharmony_ci**Return value**
3041e41f4b71Sopenharmony_ci
3042e41f4b71Sopenharmony_ci| Type           | Description                       |
3043e41f4b71Sopenharmony_ci| --------------- | --------------------------- |
3044e41f4b71Sopenharmony_ci| [IRemoteObject](#iremoteobject)[] | **IRemoteObject** object array read.|
3045e41f4b71Sopenharmony_ci
3046e41f4b71Sopenharmony_ci**Error codes**
3047e41f4b71Sopenharmony_ci
3048e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
3049e41f4b71Sopenharmony_ci
3050e41f4b71Sopenharmony_ci| ID| Error Message|
3051e41f4b71Sopenharmony_ci| -------- | -------- |
3052e41f4b71Sopenharmony_ci| 1900010  | read data from message sequence failed |
3053e41f4b71Sopenharmony_ci
3054e41f4b71Sopenharmony_ci**Example**
3055e41f4b71Sopenharmony_ci
3056e41f4b71Sopenharmony_ci  ```ts
3057e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
3058e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
3059e41f4b71Sopenharmony_ci
3060e41f4b71Sopenharmony_ci  class TestRemoteObject extends rpc.RemoteObject {
3061e41f4b71Sopenharmony_ci    constructor(descriptor: string) {
3062e41f4b71Sopenharmony_ci      super(descriptor);
3063e41f4b71Sopenharmony_ci      this.modifyLocalInterface(this, descriptor);
3064e41f4b71Sopenharmony_ci    }
3065e41f4b71Sopenharmony_ci
3066e41f4b71Sopenharmony_ci    asObject(): rpc.IRemoteObject {
3067e41f4b71Sopenharmony_ci      return this;
3068e41f4b71Sopenharmony_ci    }
3069e41f4b71Sopenharmony_ci  }
3070e41f4b71Sopenharmony_ci  let a = [new TestRemoteObject("testObject1"), new TestRemoteObject("testObject2"), new TestRemoteObject("testObject3")];
3071e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
3072e41f4b71Sopenharmony_ci  data.writeRemoteObjectArray(a);
3073e41f4b71Sopenharmony_ci  try {
3074e41f4b71Sopenharmony_ci    let b = data.readRemoteObjectArray();
3075e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', 'RpcClient: readRemoteObjectArray is ' + b);
3076e41f4b71Sopenharmony_ci  } catch (error) {
3077e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
3078e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read remote object array fail, errorCode ' + e.code);
3079e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read remote object array fail, errorMessage ' + e.message);
3080e41f4b71Sopenharmony_ci  }
3081e41f4b71Sopenharmony_ci  ```
3082e41f4b71Sopenharmony_ci
3083e41f4b71Sopenharmony_ci### closeFileDescriptor
3084e41f4b71Sopenharmony_ci
3085e41f4b71Sopenharmony_cistatic closeFileDescriptor(fd: number): void
3086e41f4b71Sopenharmony_ci
3087e41f4b71Sopenharmony_ciCloses a file descriptor. This API is a static method.
3088e41f4b71Sopenharmony_ci
3089e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
3090e41f4b71Sopenharmony_ci
3091e41f4b71Sopenharmony_ci**Parameters**
3092e41f4b71Sopenharmony_ci
3093e41f4b71Sopenharmony_ci| Name| Type  | Mandatory| Description                |
3094e41f4b71Sopenharmony_ci| ------ | ------ | ---- | -------------------- |
3095e41f4b71Sopenharmony_ci| fd     | number | Yes  | File descriptor to close.|
3096e41f4b71Sopenharmony_ci
3097e41f4b71Sopenharmony_ci**Error codes**
3098e41f4b71Sopenharmony_ci
3099e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
3100e41f4b71Sopenharmony_ci
3101e41f4b71Sopenharmony_ci| ID| Error Message|
3102e41f4b71Sopenharmony_ci| -------- | -------- |
3103e41f4b71Sopenharmony_ci| 401      | check param failed |
3104e41f4b71Sopenharmony_ci
3105e41f4b71Sopenharmony_ci**Example**
3106e41f4b71Sopenharmony_ci
3107e41f4b71Sopenharmony_ci  ```ts
3108e41f4b71Sopenharmony_ci  import { fileIo } from '@kit.CoreFileKit';
3109e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
3110e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
3111e41f4b71Sopenharmony_ci
3112e41f4b71Sopenharmony_ci  let filePath = "path/to/file";
3113e41f4b71Sopenharmony_ci  let file = fileIo.openSync(filePath, fileIo.OpenMode.READ_WRITE | fileIo.OpenMode.CREATE);
3114e41f4b71Sopenharmony_ci  try {
3115e41f4b71Sopenharmony_ci    rpc.MessageSequence.closeFileDescriptor(file.fd);
3116e41f4b71Sopenharmony_ci  } catch (error) {
3117e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
3118e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc close file descriptor fail, errorCode ' + e.code);
3119e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc close file descriptor fail, errorMessage ' + e.message);
3120e41f4b71Sopenharmony_ci  }
3121e41f4b71Sopenharmony_ci  ```
3122e41f4b71Sopenharmony_ci
3123e41f4b71Sopenharmony_ci### dupFileDescriptor
3124e41f4b71Sopenharmony_ci
3125e41f4b71Sopenharmony_cistatic dupFileDescriptor(fd: number): number
3126e41f4b71Sopenharmony_ci
3127e41f4b71Sopenharmony_ciDuplicates a file descriptor. This API is a static method.
3128e41f4b71Sopenharmony_ci
3129e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
3130e41f4b71Sopenharmony_ci
3131e41f4b71Sopenharmony_ci**Parameters**
3132e41f4b71Sopenharmony_ci
3133e41f4b71Sopenharmony_ci| Name| Type  | Mandatory| Description                    |
3134e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------ |
3135e41f4b71Sopenharmony_ci| fd     | number | Yes  | File descriptor to duplicate.|
3136e41f4b71Sopenharmony_ci
3137e41f4b71Sopenharmony_ci**Return value**
3138e41f4b71Sopenharmony_ci
3139e41f4b71Sopenharmony_ci| Type  | Description                |
3140e41f4b71Sopenharmony_ci| ------ | -------------------- |
3141e41f4b71Sopenharmony_ci| number | New file descriptor.|
3142e41f4b71Sopenharmony_ci
3143e41f4b71Sopenharmony_ci**Error codes**
3144e41f4b71Sopenharmony_ci
3145e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
3146e41f4b71Sopenharmony_ci
3147e41f4b71Sopenharmony_ci| ID| Error Message|
3148e41f4b71Sopenharmony_ci| -------- | -------- |
3149e41f4b71Sopenharmony_ci| 401      | check param failed |
3150e41f4b71Sopenharmony_ci| 1900013  | call os dup function failed |
3151e41f4b71Sopenharmony_ci
3152e41f4b71Sopenharmony_ci**Example**
3153e41f4b71Sopenharmony_ci
3154e41f4b71Sopenharmony_ci  ```ts
3155e41f4b71Sopenharmony_ci  import { fileIo } from '@kit.CoreFileKit';
3156e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
3157e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
3158e41f4b71Sopenharmony_ci
3159e41f4b71Sopenharmony_ci  let filePath = "path/to/file";
3160e41f4b71Sopenharmony_ci  let file = fileIo.openSync(filePath, fileIo.OpenMode.READ_WRITE | fileIo.OpenMode.CREATE);
3161e41f4b71Sopenharmony_ci  try {
3162e41f4b71Sopenharmony_ci    rpc.MessageSequence.dupFileDescriptor(file.fd);
3163e41f4b71Sopenharmony_ci  } catch (error) {
3164e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
3165e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc dup file descriptor fail, errorCode ' + e.code);
3166e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc dup file descriptor fail, errorMessage ' + e.message);
3167e41f4b71Sopenharmony_ci  }
3168e41f4b71Sopenharmony_ci  ```
3169e41f4b71Sopenharmony_ci
3170e41f4b71Sopenharmony_ci### containFileDescriptors
3171e41f4b71Sopenharmony_ci
3172e41f4b71Sopenharmony_cicontainFileDescriptors(): boolean
3173e41f4b71Sopenharmony_ci
3174e41f4b71Sopenharmony_ciChecks whether this **MessageSequence** object contains file descriptors.
3175e41f4b71Sopenharmony_ci
3176e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
3177e41f4b71Sopenharmony_ci
3178e41f4b71Sopenharmony_ci**Return value**
3179e41f4b71Sopenharmony_ci
3180e41f4b71Sopenharmony_ci| Type   | Description                                                                |
3181e41f4b71Sopenharmony_ci| ------- | -------------------------------------------------------------------- |
3182e41f4b71Sopenharmony_ci| boolean | Returns **true** if the **MessageSequence** object contains file descriptors; returns **false** otherwise.|
3183e41f4b71Sopenharmony_ci
3184e41f4b71Sopenharmony_ci**Example**
3185e41f4b71Sopenharmony_ci
3186e41f4b71Sopenharmony_ci  ```ts
3187e41f4b71Sopenharmony_ci  import { fileIo } from '@kit.CoreFileKit';
3188e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
3189e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
3190e41f4b71Sopenharmony_ci
3191e41f4b71Sopenharmony_ci  let sequence = new rpc.MessageSequence();
3192e41f4b71Sopenharmony_ci  let filePath = "path/to/file";
3193e41f4b71Sopenharmony_ci  let file = fileIo.openSync(filePath, fileIo.OpenMode.READ_WRITE | fileIo.OpenMode.CREATE);
3194e41f4b71Sopenharmony_ci  try {
3195e41f4b71Sopenharmony_ci    sequence.writeFileDescriptor(file.fd);
3196e41f4b71Sopenharmony_ci  } catch (error) {
3197e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
3198e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write file descriptor fail, errorCode ' + e.code);
3199e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write file descriptor fail, errorMessage ' + e.message);
3200e41f4b71Sopenharmony_ci  }
3201e41f4b71Sopenharmony_ci  try {
3202e41f4b71Sopenharmony_ci    let containFD = sequence.containFileDescriptors();
3203e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', 'RpcTest: sequence after write fd containFd result is ' + containFD);
3204e41f4b71Sopenharmony_ci  } catch (error) {
3205e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
3206e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc contain file descriptor fail, errorCode ' + e.code);
3207e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc contain file descriptor fail, errorMessage ' + e.message);
3208e41f4b71Sopenharmony_ci  }
3209e41f4b71Sopenharmony_ci  ```
3210e41f4b71Sopenharmony_ci
3211e41f4b71Sopenharmony_ci### writeFileDescriptor
3212e41f4b71Sopenharmony_ci
3213e41f4b71Sopenharmony_ciwriteFileDescriptor(fd: number): void
3214e41f4b71Sopenharmony_ci
3215e41f4b71Sopenharmony_ciWrites a file descriptor to this **MessageSequence** object.
3216e41f4b71Sopenharmony_ci
3217e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
3218e41f4b71Sopenharmony_ci
3219e41f4b71Sopenharmony_ci**Parameters**
3220e41f4b71Sopenharmony_ci
3221e41f4b71Sopenharmony_ci| Name| Type  | Mandatory| Description        |
3222e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------ |
3223e41f4b71Sopenharmony_ci| fd     | number | Yes  | File descriptor to write.|
3224e41f4b71Sopenharmony_ci
3225e41f4b71Sopenharmony_ci**Error codes**
3226e41f4b71Sopenharmony_ci
3227e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
3228e41f4b71Sopenharmony_ci
3229e41f4b71Sopenharmony_ci| ID| Error Message|
3230e41f4b71Sopenharmony_ci| -------- | -------- |
3231e41f4b71Sopenharmony_ci| 401      | check param failed |
3232e41f4b71Sopenharmony_ci| 1900009  | write data to message sequence failed |
3233e41f4b71Sopenharmony_ci
3234e41f4b71Sopenharmony_ci**Example**
3235e41f4b71Sopenharmony_ci
3236e41f4b71Sopenharmony_ci  ```ts
3237e41f4b71Sopenharmony_ci  import { fileIo } from '@kit.CoreFileKit';
3238e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
3239e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
3240e41f4b71Sopenharmony_ci
3241e41f4b71Sopenharmony_ci  let sequence = new rpc.MessageSequence();
3242e41f4b71Sopenharmony_ci  let filePath = "path/to/file";
3243e41f4b71Sopenharmony_ci  let file = fileIo.openSync(filePath, fileIo.OpenMode.READ_WRITE | fileIo.OpenMode.CREATE);
3244e41f4b71Sopenharmony_ci  try {
3245e41f4b71Sopenharmony_ci    sequence.writeFileDescriptor(file.fd);
3246e41f4b71Sopenharmony_ci  } catch (error) {
3247e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
3248e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write file descriptor fail, errorCode ' + e.code);
3249e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write file descriptor fail, errorMessage ' + e.message);
3250e41f4b71Sopenharmony_ci  }
3251e41f4b71Sopenharmony_ci  ```
3252e41f4b71Sopenharmony_ci
3253e41f4b71Sopenharmony_ci### readFileDescriptor
3254e41f4b71Sopenharmony_ci
3255e41f4b71Sopenharmony_cireadFileDescriptor(): number
3256e41f4b71Sopenharmony_ci
3257e41f4b71Sopenharmony_ciReads the file descriptor from this **MessageSequence** object.
3258e41f4b71Sopenharmony_ci
3259e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
3260e41f4b71Sopenharmony_ci
3261e41f4b71Sopenharmony_ci**Return value**
3262e41f4b71Sopenharmony_ci
3263e41f4b71Sopenharmony_ci| Type  | Description            |
3264e41f4b71Sopenharmony_ci| ------ | ---------------- |
3265e41f4b71Sopenharmony_ci| number | File descriptor read.|
3266e41f4b71Sopenharmony_ci
3267e41f4b71Sopenharmony_ci**Error codes**
3268e41f4b71Sopenharmony_ci
3269e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
3270e41f4b71Sopenharmony_ci
3271e41f4b71Sopenharmony_ci| ID| Error Message|
3272e41f4b71Sopenharmony_ci| -------- | -------- |
3273e41f4b71Sopenharmony_ci| 1900010  | read data from message sequence failed |
3274e41f4b71Sopenharmony_ci
3275e41f4b71Sopenharmony_ci**Example**
3276e41f4b71Sopenharmony_ci
3277e41f4b71Sopenharmony_ci  ```ts
3278e41f4b71Sopenharmony_ci  import { fileIo } from '@kit.CoreFileKit';
3279e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
3280e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
3281e41f4b71Sopenharmony_ci
3282e41f4b71Sopenharmony_ci  let sequence = new rpc.MessageSequence();
3283e41f4b71Sopenharmony_ci  let filePath = "path/to/file";
3284e41f4b71Sopenharmony_ci  let file = fileIo.openSync(filePath, fileIo.OpenMode.READ_WRITE | fileIo.OpenMode.CREATE);
3285e41f4b71Sopenharmony_ci  try {
3286e41f4b71Sopenharmony_ci    sequence.writeFileDescriptor(file.fd);
3287e41f4b71Sopenharmony_ci  } catch (error) {
3288e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
3289e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write file descriptor fail, errorCode ' + e.code);
3290e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write file descriptor fail, errorMessage ' + e.message);
3291e41f4b71Sopenharmony_ci  }
3292e41f4b71Sopenharmony_ci  try {
3293e41f4b71Sopenharmony_ci    let readFD = sequence.readFileDescriptor();
3294e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', 'RpcClient: readFileDescriptor is ' + readFD);
3295e41f4b71Sopenharmony_ci  } catch (error) {
3296e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
3297e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read file descriptor fail, errorCode ' + e.code);
3298e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read file descriptor fail, errorMessage ' + e.message);
3299e41f4b71Sopenharmony_ci  }
3300e41f4b71Sopenharmony_ci  ```
3301e41f4b71Sopenharmony_ci
3302e41f4b71Sopenharmony_ci### writeAshmem
3303e41f4b71Sopenharmony_ci
3304e41f4b71Sopenharmony_ciwriteAshmem(ashmem: Ashmem): void
3305e41f4b71Sopenharmony_ci
3306e41f4b71Sopenharmony_ciWrites an anonymous shared object to this **MessageSequence** object.
3307e41f4b71Sopenharmony_ci
3308e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
3309e41f4b71Sopenharmony_ci
3310e41f4b71Sopenharmony_ci**Parameters**
3311e41f4b71Sopenharmony_ci
3312e41f4b71Sopenharmony_ci| Name| Type  | Mandatory| Description                                 |
3313e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------- |
3314e41f4b71Sopenharmony_ci| ashmem | [Ashmem](#ashmem8) | Yes  | Anonymous shared object to write.|
3315e41f4b71Sopenharmony_ci
3316e41f4b71Sopenharmony_ci**Error codes**
3317e41f4b71Sopenharmony_ci
3318e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
3319e41f4b71Sopenharmony_ci
3320e41f4b71Sopenharmony_ci| ID| Error Message|
3321e41f4b71Sopenharmony_ci| -------- | ------- |
3322e41f4b71Sopenharmony_ci| 401      | check param failed |
3323e41f4b71Sopenharmony_ci| 1900003  | write to ashmem failed |
3324e41f4b71Sopenharmony_ci
3325e41f4b71Sopenharmony_ci**Example**
3326e41f4b71Sopenharmony_ci
3327e41f4b71Sopenharmony_ci  ```ts
3328e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
3329e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
3330e41f4b71Sopenharmony_ci
3331e41f4b71Sopenharmony_ci  let sequence = new rpc.MessageSequence();
3332e41f4b71Sopenharmony_ci  let ashmem: rpc.Ashmem | undefined = undefined;
3333e41f4b71Sopenharmony_ci  try {
3334e41f4b71Sopenharmony_ci    ashmem = rpc.Ashmem.create("ashmem", 1024);
3335e41f4b71Sopenharmony_ci    try {
3336e41f4b71Sopenharmony_ci      sequence.writeAshmem(ashmem);
3337e41f4b71Sopenharmony_ci    } catch (error) {
3338e41f4b71Sopenharmony_ci      let e: BusinessError = error as BusinessError;
3339e41f4b71Sopenharmony_ci      hilog.error(0x0000, 'testTag', 'rpc write ashmem fail, errorCode ' + e.code);
3340e41f4b71Sopenharmony_ci      hilog.error(0x0000, 'testTag', 'rpc write ashmem fail, errorMessage ' + e.message);
3341e41f4b71Sopenharmony_ci    }
3342e41f4b71Sopenharmony_ci  } catch (error) {
3343e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
3344e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc create ashmem fail, errorCode ' + e.code);
3345e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc create ashmem fail, errorMessage ' + e.message);
3346e41f4b71Sopenharmony_ci  }
3347e41f4b71Sopenharmony_ci  ```
3348e41f4b71Sopenharmony_ci
3349e41f4b71Sopenharmony_ci### readAshmem
3350e41f4b71Sopenharmony_ci
3351e41f4b71Sopenharmony_cireadAshmem(): Ashmem
3352e41f4b71Sopenharmony_ci
3353e41f4b71Sopenharmony_ciReads the anonymous shared object from this **MessageSequence** object.
3354e41f4b71Sopenharmony_ci
3355e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
3356e41f4b71Sopenharmony_ci
3357e41f4b71Sopenharmony_ci**Return value**
3358e41f4b71Sopenharmony_ci
3359e41f4b71Sopenharmony_ci| Type  | Description              |
3360e41f4b71Sopenharmony_ci| ------ | ------------------ |
3361e41f4b71Sopenharmony_ci| [Ashmem](#ashmem8) | Anonymous share object obtained.|
3362e41f4b71Sopenharmony_ci
3363e41f4b71Sopenharmony_ci**Error codes**
3364e41f4b71Sopenharmony_ci
3365e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
3366e41f4b71Sopenharmony_ci
3367e41f4b71Sopenharmony_ci| ID| Error Message|
3368e41f4b71Sopenharmony_ci| -------- | -------- |
3369e41f4b71Sopenharmony_ci| 401      | check param failed |
3370e41f4b71Sopenharmony_ci| 1900004  | read from ashmem failed |
3371e41f4b71Sopenharmony_ci
3372e41f4b71Sopenharmony_ci**Example**
3373e41f4b71Sopenharmony_ci
3374e41f4b71Sopenharmony_ci  ```ts
3375e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
3376e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
3377e41f4b71Sopenharmony_ci
3378e41f4b71Sopenharmony_ci  let sequence = new rpc.MessageSequence();
3379e41f4b71Sopenharmony_ci  let ashmem: rpc.Ashmem | undefined = undefined;
3380e41f4b71Sopenharmony_ci  try {
3381e41f4b71Sopenharmony_ci    ashmem = rpc.Ashmem.create("ashmem", 1024);
3382e41f4b71Sopenharmony_ci    try {
3383e41f4b71Sopenharmony_ci      sequence.writeAshmem(ashmem);
3384e41f4b71Sopenharmony_ci    } catch (error) {
3385e41f4b71Sopenharmony_ci      let e: BusinessError = error as BusinessError;
3386e41f4b71Sopenharmony_ci      hilog.error(0x0000, 'testTag', 'rpc write ashmem fail, errorCode ' + e.code);
3387e41f4b71Sopenharmony_ci      hilog.error(0x0000, 'testTag', 'rpc write ashmem fail, errorMessage ' + e.message);
3388e41f4b71Sopenharmony_ci    }
3389e41f4b71Sopenharmony_ci  } catch (error) {
3390e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
3391e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc create ashmem fail, errorCode ' + e.code);
3392e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc create ashmem fail, errorMessage ' + e.message);
3393e41f4b71Sopenharmony_ci  }
3394e41f4b71Sopenharmony_ci  try {
3395e41f4b71Sopenharmony_ci    sequence.readAshmem();
3396e41f4b71Sopenharmony_ci  } catch (error) {
3397e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
3398e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read ashmem fail, errorCode ' + e.code);
3399e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read ashmem fail, errorMessage ' + e.message);
3400e41f4b71Sopenharmony_ci  }
3401e41f4b71Sopenharmony_ci  ```
3402e41f4b71Sopenharmony_ci
3403e41f4b71Sopenharmony_ci### getRawDataCapacity
3404e41f4b71Sopenharmony_ci
3405e41f4b71Sopenharmony_cigetRawDataCapacity(): number
3406e41f4b71Sopenharmony_ci
3407e41f4b71Sopenharmony_ciObtains the maximum amount of raw data that can be held by this **MessageSequence** object.
3408e41f4b71Sopenharmony_ci
3409e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
3410e41f4b71Sopenharmony_ci
3411e41f4b71Sopenharmony_ci**Return value**
3412e41f4b71Sopenharmony_ci
3413e41f4b71Sopenharmony_ci| Type  | Description                                                        |
3414e41f4b71Sopenharmony_ci| ------ | ------------------------------------------------------------ |
3415e41f4b71Sopenharmony_ci| number | Maximum amount of raw data that **MessageSequence** can hold, that is, 128 MB.|
3416e41f4b71Sopenharmony_ci
3417e41f4b71Sopenharmony_ci**Example**
3418e41f4b71Sopenharmony_ci
3419e41f4b71Sopenharmony_ci  ```ts
3420e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
3421e41f4b71Sopenharmony_ci
3422e41f4b71Sopenharmony_ci  let sequence = new rpc.MessageSequence();
3423e41f4b71Sopenharmony_ci  let result = sequence.getRawDataCapacity();
3424e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcTest: sequence get RawDataCapacity result is ' + result);
3425e41f4b71Sopenharmony_ci  ```
3426e41f4b71Sopenharmony_ci
3427e41f4b71Sopenharmony_ci### writeRawData<sup>(deprecated)</sup>
3428e41f4b71Sopenharmony_ci
3429e41f4b71Sopenharmony_ci>**NOTE**<br>This API is no longer maintained since API version 11. Use [writeRawDataBuffer](#writerawdatabuffer11) instead.
3430e41f4b71Sopenharmony_ci
3431e41f4b71Sopenharmony_ciwriteRawData(rawData: number[], size: number): void
3432e41f4b71Sopenharmony_ci
3433e41f4b71Sopenharmony_ciWrites raw data to this **MessageSequence** object.
3434e41f4b71Sopenharmony_ci
3435e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
3436e41f4b71Sopenharmony_ci
3437e41f4b71Sopenharmony_ci**Parameters**
3438e41f4b71Sopenharmony_ci
3439e41f4b71Sopenharmony_ci| Name | Type    | Mandatory| Description                              |
3440e41f4b71Sopenharmony_ci| ------- | -------- | ---- | ---------------------------------- |
3441e41f4b71Sopenharmony_ci| rawData | number[] | Yes  | Raw data to write.                |
3442e41f4b71Sopenharmony_ci| size    | number   | Yes  | Size of the raw data, in bytes.|
3443e41f4b71Sopenharmony_ci
3444e41f4b71Sopenharmony_ci**Error codes**
3445e41f4b71Sopenharmony_ci
3446e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
3447e41f4b71Sopenharmony_ci
3448e41f4b71Sopenharmony_ci| ID| Error Message|
3449e41f4b71Sopenharmony_ci| -------- | -------- |
3450e41f4b71Sopenharmony_ci| 401      | check param failed |
3451e41f4b71Sopenharmony_ci| 1900009  | write data to message sequence failed |
3452e41f4b71Sopenharmony_ci
3453e41f4b71Sopenharmony_ci**Example**
3454e41f4b71Sopenharmony_ci
3455e41f4b71Sopenharmony_ci  ```ts
3456e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
3457e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
3458e41f4b71Sopenharmony_ci
3459e41f4b71Sopenharmony_ci  let sequence = new rpc.MessageSequence();
3460e41f4b71Sopenharmony_ci  let arr = [1, 2, 3, 4, 5];
3461e41f4b71Sopenharmony_ci  try {
3462e41f4b71Sopenharmony_ci    sequence.writeRawData(arr, arr.length);
3463e41f4b71Sopenharmony_ci  } catch (error) {
3464e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
3465e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write rawdata fail, errorCode ' + e.code);
3466e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write rawdata fail, errorMessage ' + e.message);
3467e41f4b71Sopenharmony_ci  }
3468e41f4b71Sopenharmony_ci  ```
3469e41f4b71Sopenharmony_ci
3470e41f4b71Sopenharmony_ci### writeRawDataBuffer<sup>11+</sup>
3471e41f4b71Sopenharmony_ci
3472e41f4b71Sopenharmony_ciwriteRawDataBuffer(rawData: ArrayBuffer, size: number): void
3473e41f4b71Sopenharmony_ci
3474e41f4b71Sopenharmony_ciWrites raw data to this **MessageSequence** object.
3475e41f4b71Sopenharmony_ci
3476e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
3477e41f4b71Sopenharmony_ci
3478e41f4b71Sopenharmony_ci**Parameters**
3479e41f4b71Sopenharmony_ci
3480e41f4b71Sopenharmony_ci| Name | Type    | Mandatory| Description                              |
3481e41f4b71Sopenharmony_ci| ------- | -------- | ---- | ---------------------------------- |
3482e41f4b71Sopenharmony_ci| rawData | ArrayBuffer | Yes  | Raw data to write.                |
3483e41f4b71Sopenharmony_ci| size    | number   | Yes  | Size of the raw data, in bytes.|
3484e41f4b71Sopenharmony_ci
3485e41f4b71Sopenharmony_ci**Error codes**
3486e41f4b71Sopenharmony_ci
3487e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
3488e41f4b71Sopenharmony_ci
3489e41f4b71Sopenharmony_ci| ID| Error Message|
3490e41f4b71Sopenharmony_ci| -------- | -------- |
3491e41f4b71Sopenharmony_ci| 401      | check param failed |
3492e41f4b71Sopenharmony_ci| 1900009  | write data to message sequence failed |
3493e41f4b71Sopenharmony_ci
3494e41f4b71Sopenharmony_ci**Example**
3495e41f4b71Sopenharmony_ci
3496e41f4b71Sopenharmony_ci  ```ts
3497e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
3498e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
3499e41f4b71Sopenharmony_ci
3500e41f4b71Sopenharmony_ci  let buffer = new ArrayBuffer(64 * 1024);
3501e41f4b71Sopenharmony_ci  let int32View = new Int32Array(buffer);
3502e41f4b71Sopenharmony_ci  for (let i = 0; i < int32View.length; i++) {
3503e41f4b71Sopenharmony_ci    int32View[i] = i * 2 + 1;
3504e41f4b71Sopenharmony_ci  }
3505e41f4b71Sopenharmony_ci  let size = buffer.byteLength;
3506e41f4b71Sopenharmony_ci  let sequence = new rpc.MessageSequence();
3507e41f4b71Sopenharmony_ci  try {
3508e41f4b71Sopenharmony_ci    sequence.writeRawDataBuffer(buffer, size);
3509e41f4b71Sopenharmony_ci  } catch (error) {
3510e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
3511e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write rawdata fail, errorCode ' + e.code);
3512e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write rawdata fail, errorMessage ' + e.message);
3513e41f4b71Sopenharmony_ci  }
3514e41f4b71Sopenharmony_ci  ```
3515e41f4b71Sopenharmony_ci
3516e41f4b71Sopenharmony_ci### readRawData<sup>(deprecated)</sup>
3517e41f4b71Sopenharmony_ci
3518e41f4b71Sopenharmony_ci>**NOTE**<br>This API is no longer maintained since API version 11. Use [readRawDataBuffer](#readrawdatabuffer11) instead.
3519e41f4b71Sopenharmony_ci
3520e41f4b71Sopenharmony_cireadRawData(size: number): number[]
3521e41f4b71Sopenharmony_ci
3522e41f4b71Sopenharmony_ciReads raw data from this **MessageSequence** object.
3523e41f4b71Sopenharmony_ci
3524e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
3525e41f4b71Sopenharmony_ci
3526e41f4b71Sopenharmony_ci**Parameters**
3527e41f4b71Sopenharmony_ci
3528e41f4b71Sopenharmony_ci| Name| Type  | Mandatory| Description                    |
3529e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------ |
3530e41f4b71Sopenharmony_ci| size   | number | Yes  | Size of the raw data to read.|
3531e41f4b71Sopenharmony_ci
3532e41f4b71Sopenharmony_ci**Return value**
3533e41f4b71Sopenharmony_ci
3534e41f4b71Sopenharmony_ci| Type    | Description                          |
3535e41f4b71Sopenharmony_ci| -------- | ------------------------------ |
3536e41f4b71Sopenharmony_ci| number[] | Raw data obtained, in bytes.|
3537e41f4b71Sopenharmony_ci
3538e41f4b71Sopenharmony_ci**Error codes**
3539e41f4b71Sopenharmony_ci
3540e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
3541e41f4b71Sopenharmony_ci
3542e41f4b71Sopenharmony_ci| ID| Error Message|
3543e41f4b71Sopenharmony_ci| -------- | -------- |
3544e41f4b71Sopenharmony_ci| 401      | check param failed |
3545e41f4b71Sopenharmony_ci| 1900010  | read data from message sequence failed |
3546e41f4b71Sopenharmony_ci
3547e41f4b71Sopenharmony_ci**Example**
3548e41f4b71Sopenharmony_ci
3549e41f4b71Sopenharmony_ci  ```ts
3550e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
3551e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
3552e41f4b71Sopenharmony_ci
3553e41f4b71Sopenharmony_ci  let sequence = new rpc.MessageSequence();
3554e41f4b71Sopenharmony_ci  let arr = [1, 2, 3, 4, 5];
3555e41f4b71Sopenharmony_ci  try {
3556e41f4b71Sopenharmony_ci    sequence.writeRawData(arr, arr.length);
3557e41f4b71Sopenharmony_ci  } catch (error) {
3558e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
3559e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write rawdata fail, errorCode ' + e.code);
3560e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write rawdata fail, errorMessage ' + e.message);
3561e41f4b71Sopenharmony_ci  }
3562e41f4b71Sopenharmony_ci  try {
3563e41f4b71Sopenharmony_ci    let result = sequence.readRawData(5);
3564e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', 'RpcTest: sequence read raw data result is ' + result);
3565e41f4b71Sopenharmony_ci  } catch (error) {
3566e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
3567e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read rawdata fail, errorCode ' + e.code);
3568e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read rawdata fail, errorMessage ' + e.message);
3569e41f4b71Sopenharmony_ci  }
3570e41f4b71Sopenharmony_ci  ```
3571e41f4b71Sopenharmony_ci
3572e41f4b71Sopenharmony_ci### readRawDataBuffer<sup>11+</sup>
3573e41f4b71Sopenharmony_ci
3574e41f4b71Sopenharmony_cireadRawDataBuffer(size: number): ArrayBuffer
3575e41f4b71Sopenharmony_ci
3576e41f4b71Sopenharmony_ciReads raw data from this **MessageSequence** object.
3577e41f4b71Sopenharmony_ci
3578e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
3579e41f4b71Sopenharmony_ci
3580e41f4b71Sopenharmony_ci**Parameters**
3581e41f4b71Sopenharmony_ci
3582e41f4b71Sopenharmony_ci| Name| Type  | Mandatory| Description                    |
3583e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------ |
3584e41f4b71Sopenharmony_ci| size   | number | Yes  | Size of the raw data to read.|
3585e41f4b71Sopenharmony_ci
3586e41f4b71Sopenharmony_ci**Return value**
3587e41f4b71Sopenharmony_ci
3588e41f4b71Sopenharmony_ci| Type    | Description                          |
3589e41f4b71Sopenharmony_ci| -------- | ------------------------------ |
3590e41f4b71Sopenharmony_ci| ArrayBuffer | Raw data obtained, in bytes.|
3591e41f4b71Sopenharmony_ci
3592e41f4b71Sopenharmony_ci**Error codes**
3593e41f4b71Sopenharmony_ci
3594e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
3595e41f4b71Sopenharmony_ci
3596e41f4b71Sopenharmony_ci| ID| Error Message|
3597e41f4b71Sopenharmony_ci| -------- | -------- |
3598e41f4b71Sopenharmony_ci| 401      | check param failed |
3599e41f4b71Sopenharmony_ci| 1900010  | read data from message sequence failed |
3600e41f4b71Sopenharmony_ci
3601e41f4b71Sopenharmony_ci**Example**
3602e41f4b71Sopenharmony_ci
3603e41f4b71Sopenharmony_ci  ```ts
3604e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
3605e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
3606e41f4b71Sopenharmony_ci
3607e41f4b71Sopenharmony_ci  let buffer = new ArrayBuffer(64 * 1024);
3608e41f4b71Sopenharmony_ci  let int32View = new Int32Array(buffer);
3609e41f4b71Sopenharmony_ci  for (let i = 0; i < int32View.length; i++) {
3610e41f4b71Sopenharmony_ci    int32View[i] = i * 2 + 1;
3611e41f4b71Sopenharmony_ci  }
3612e41f4b71Sopenharmony_ci  let size = buffer.byteLength;
3613e41f4b71Sopenharmony_ci  let sequence = new rpc.MessageSequence();
3614e41f4b71Sopenharmony_ci  try {
3615e41f4b71Sopenharmony_ci    sequence.writeRawDataBuffer(buffer, size);
3616e41f4b71Sopenharmony_ci  } catch (error) {
3617e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
3618e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write rawdata fail, errorCode ' + e.code);
3619e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write rawdata fail, errorMessage ' + e.message);
3620e41f4b71Sopenharmony_ci  }
3621e41f4b71Sopenharmony_ci  try {
3622e41f4b71Sopenharmony_ci    let result = sequence.readRawDataBuffer(size);
3623e41f4b71Sopenharmony_ci    let readInt32View = new Int32Array(result);
3624e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', 'RpcTest: sequence read raw data result is ' + readInt32View);
3625e41f4b71Sopenharmony_ci  } catch (error) {
3626e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
3627e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read rawdata fail, errorCode ' + e.code);
3628e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read rawdata fail, errorMessage ' + e.message);
3629e41f4b71Sopenharmony_ci  }
3630e41f4b71Sopenharmony_ci  ```
3631e41f4b71Sopenharmony_ci
3632e41f4b71Sopenharmony_ci### writeArrayBuffer<sup>12+</sup>
3633e41f4b71Sopenharmony_ci
3634e41f4b71Sopenharmony_ciwriteArrayBuffer(buf: ArrayBuffer, typeCode: TypeCode): void
3635e41f4b71Sopenharmony_ci
3636e41f4b71Sopenharmony_ciWrites data of the ArrayBuffer type to this **MessageSequence** object.
3637e41f4b71Sopenharmony_ci
3638e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
3639e41f4b71Sopenharmony_ci
3640e41f4b71Sopenharmony_ci**Parameters**
3641e41f4b71Sopenharmony_ci
3642e41f4b71Sopenharmony_ci| Name   | Type                     | Mandatory| Description                       |
3643e41f4b71Sopenharmony_ci| --------- | ------------------------- | ---- | --------------------------- |
3644e41f4b71Sopenharmony_ci| buf       | ArrayBuffer               | Yes  | Data to write.  |
3645e41f4b71Sopenharmony_ci| typeCode  | [TypeCode](#typecode12)   | Yes  | TypedArray type of the ArrayBuffer data.<br>The underlying write mode is determined based on the enum value of **TypeCode** passed by the service.|
3646e41f4b71Sopenharmony_ci
3647e41f4b71Sopenharmony_ci**Error codes**
3648e41f4b71Sopenharmony_ci
3649e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
3650e41f4b71Sopenharmony_ci
3651e41f4b71Sopenharmony_ci| ID| Error Message|
3652e41f4b71Sopenharmony_ci| -------- | -------- |
3653e41f4b71Sopenharmony_ci| 401      | check param failed |
3654e41f4b71Sopenharmony_ci| 1900009  | write data to message sequence failed |
3655e41f4b71Sopenharmony_ci
3656e41f4b71Sopenharmony_ci**Example**
3657e41f4b71Sopenharmony_ci
3658e41f4b71Sopenharmony_ci  ```ts
3659e41f4b71Sopenharmony_ci  // In this example, the value of TypeCode is Int16Array.
3660e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
3661e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
3662e41f4b71Sopenharmony_ci  
3663e41f4b71Sopenharmony_ci  const data = rpc.MessageSequence.create();
3664e41f4b71Sopenharmony_ci
3665e41f4b71Sopenharmony_ci  let buffer = new ArrayBuffer(10);
3666e41f4b71Sopenharmony_ci  let int16View = new Int16Array(buffer);
3667e41f4b71Sopenharmony_ci  for (let i = 0; i < int16View.length; i++) {
3668e41f4b71Sopenharmony_ci    int16View[i] = i * 2 + 1;
3669e41f4b71Sopenharmony_ci  }
3670e41f4b71Sopenharmony_ci
3671e41f4b71Sopenharmony_ci  try {
3672e41f4b71Sopenharmony_ci    data.writeArrayBuffer(buffer, rpc.TypeCode.INT16_ARRAY);
3673e41f4b71Sopenharmony_ci  } catch (error) {
3674e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
3675e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write ArrayBuffe fail, errorCode ' + e.code);
3676e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write ArrayBuffe fail, errorMessage ' + e.message);
3677e41f4b71Sopenharmony_ci  }
3678e41f4b71Sopenharmony_ci  ```
3679e41f4b71Sopenharmony_ci
3680e41f4b71Sopenharmony_ci### readArrayBuffer<sup>12+</sup>
3681e41f4b71Sopenharmony_ci
3682e41f4b71Sopenharmony_cireadArrayBuffer(typeCode: TypeCode): ArrayBuffer
3683e41f4b71Sopenharmony_ci
3684e41f4b71Sopenharmony_ciReads data of the ArrayBuffer type from this **MessageSequence**.
3685e41f4b71Sopenharmony_ci
3686e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
3687e41f4b71Sopenharmony_ci
3688e41f4b71Sopenharmony_ci**Parameters**
3689e41f4b71Sopenharmony_ci
3690e41f4b71Sopenharmony_ci| Name  | Type                    | Mandatory| Description                  |
3691e41f4b71Sopenharmony_ci| -------- | ----------------------- | ---- | ------------------------|
3692e41f4b71Sopenharmony_ci| typeCode | [TypeCode](#typecode12) | Yes  | TypedArray type of the ArrayBuffer data.<br>The underlying read mode is determined based on the enum value of **TypeCode** passed by the service. |
3693e41f4b71Sopenharmony_ci
3694e41f4b71Sopenharmony_ci**Return value**
3695e41f4b71Sopenharmony_ci
3696e41f4b71Sopenharmony_ci| Type    | Description                                        |
3697e41f4b71Sopenharmony_ci| -------- | -------------------------------------------- |
3698e41f4b71Sopenharmony_ci| ArrayBuffer | Data of the ArrayBuffer type read, in bytes.|
3699e41f4b71Sopenharmony_ci
3700e41f4b71Sopenharmony_ci**Error codes**
3701e41f4b71Sopenharmony_ci
3702e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
3703e41f4b71Sopenharmony_ci
3704e41f4b71Sopenharmony_ci| ID| Error Message|
3705e41f4b71Sopenharmony_ci| -------- | -------- |
3706e41f4b71Sopenharmony_ci| 401      | check param failed |
3707e41f4b71Sopenharmony_ci| 1900010  | read data from message sequence failed |
3708e41f4b71Sopenharmony_ci
3709e41f4b71Sopenharmony_ci**Example**
3710e41f4b71Sopenharmony_ci
3711e41f4b71Sopenharmony_ci  ```ts
3712e41f4b71Sopenharmony_ci  // In this example, the value of TypeCode is Int16Array.
3713e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
3714e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
3715e41f4b71Sopenharmony_ci  
3716e41f4b71Sopenharmony_ci  const data = rpc.MessageSequence.create();
3717e41f4b71Sopenharmony_ci
3718e41f4b71Sopenharmony_ci  let buffer = new ArrayBuffer(10);
3719e41f4b71Sopenharmony_ci  let int16View = new Int16Array(buffer);
3720e41f4b71Sopenharmony_ci  for (let i = 0; i < int16View.length; i++) {
3721e41f4b71Sopenharmony_ci    int16View[i] = i * 2 + 1;
3722e41f4b71Sopenharmony_ci  }
3723e41f4b71Sopenharmony_ci
3724e41f4b71Sopenharmony_ci  try {
3725e41f4b71Sopenharmony_ci    data.writeArrayBuffer(buffer, rpc.TypeCode.INT16_ARRAY);
3726e41f4b71Sopenharmony_ci  } catch (error) {
3727e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
3728e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write ArrayBuffe fail, errorCode ' + e.code);
3729e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc write ArrayBuffe fail, errorMessage ' + e.message);
3730e41f4b71Sopenharmony_ci  }
3731e41f4b71Sopenharmony_ci  try {
3732e41f4b71Sopenharmony_ci    let result = data.readArrayBuffer(rpc.TypeCode.INT16_ARRAY);
3733e41f4b71Sopenharmony_ci    let readInt16View = new Int16Array(result);
3734e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', 'RpcTest: read ArrayBuffer result is ' + readInt16View);
3735e41f4b71Sopenharmony_ci  } catch (error) {
3736e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
3737e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read ArrayBuffer fail, errorCode ' + e.code);
3738e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc read ArrayBuffer fail, errorMessage ' + e.message);
3739e41f4b71Sopenharmony_ci  }
3740e41f4b71Sopenharmony_ci  ```
3741e41f4b71Sopenharmony_ci
3742e41f4b71Sopenharmony_ci## MessageParcel<sup>(deprecated)</sup>
3743e41f4b71Sopenharmony_ci
3744e41f4b71Sopenharmony_ci>**NOTE**<br>This class is no longer maintained since API version 9. Use [MessageSequence](#messagesequence9) instead.
3745e41f4b71Sopenharmony_ci
3746e41f4b71Sopenharmony_ciProvides APIs for reading and writing data in specific format. During RPC, the sender can use the **write()** method provided by **MessageParcel** to write data in specific format to a **MessageParcel** object. The receiver can use the **read()** method provided by **MessageParcel** to read data in specific format from a **MessageParcel** object. The data formats include basic data types and arrays, IPC objects, interface tokens, and custom sequenceable objects.
3747e41f4b71Sopenharmony_ci
3748e41f4b71Sopenharmony_ci### create
3749e41f4b71Sopenharmony_ci
3750e41f4b71Sopenharmony_cistatic create(): MessageParcel
3751e41f4b71Sopenharmony_ci
3752e41f4b71Sopenharmony_ciCreates a **MessageParcel** object. This method is a static method.
3753e41f4b71Sopenharmony_ci
3754e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
3755e41f4b71Sopenharmony_ci
3756e41f4b71Sopenharmony_ci**Return value**
3757e41f4b71Sopenharmony_ci
3758e41f4b71Sopenharmony_ci| Type         | Description                         |
3759e41f4b71Sopenharmony_ci| ------------- | ----------------------------- |
3760e41f4b71Sopenharmony_ci| [MessageParcel](#messageparceldeprecated) | **MessageParcel** object created.|
3761e41f4b71Sopenharmony_ci
3762e41f4b71Sopenharmony_ci**Example**
3763e41f4b71Sopenharmony_ci
3764e41f4b71Sopenharmony_ci  ```ts
3765e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
3766e41f4b71Sopenharmony_ci
3767e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
3768e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: data is ' + data);
3769e41f4b71Sopenharmony_ci  ```
3770e41f4b71Sopenharmony_ci
3771e41f4b71Sopenharmony_ci### reclaim
3772e41f4b71Sopenharmony_ci
3773e41f4b71Sopenharmony_cireclaim(): void
3774e41f4b71Sopenharmony_ci
3775e41f4b71Sopenharmony_ciReclaims the **MessageParcel** object that is no longer used.
3776e41f4b71Sopenharmony_ci
3777e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
3778e41f4b71Sopenharmony_ci
3779e41f4b71Sopenharmony_ci**Example**
3780e41f4b71Sopenharmony_ci
3781e41f4b71Sopenharmony_ci  ```ts
3782e41f4b71Sopenharmony_ci  let reply = rpc.MessageParcel.create();
3783e41f4b71Sopenharmony_ci  reply.reclaim();
3784e41f4b71Sopenharmony_ci  ```
3785e41f4b71Sopenharmony_ci
3786e41f4b71Sopenharmony_ci### writeRemoteObject
3787e41f4b71Sopenharmony_ci
3788e41f4b71Sopenharmony_ciwriteRemoteObject(object: IRemoteObject): boolean
3789e41f4b71Sopenharmony_ci
3790e41f4b71Sopenharmony_ciSerializes a remote object and writes it to this **MessageParcel** object.
3791e41f4b71Sopenharmony_ci
3792e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
3793e41f4b71Sopenharmony_ci
3794e41f4b71Sopenharmony_ci**Parameters**
3795e41f4b71Sopenharmony_ci
3796e41f4b71Sopenharmony_ci| Name| Type                           | Mandatory| Description                                   |
3797e41f4b71Sopenharmony_ci| ------ | ------------------------------- | ---- | --------------------------------------- |
3798e41f4b71Sopenharmony_ci| object | [IRemoteObject](#iremoteobject) | Yes  | Remote object to serialize and write to the **MessageParcel** object.|
3799e41f4b71Sopenharmony_ci
3800e41f4b71Sopenharmony_ci**Return value**
3801e41f4b71Sopenharmony_ci
3802e41f4b71Sopenharmony_ci| Type   | Description                                     |
3803e41f4b71Sopenharmony_ci| ------- | ----------------------------------------- |
3804e41f4b71Sopenharmony_ci| boolean | Returns **true** if the operation is successful; returns **false** otherwise.|
3805e41f4b71Sopenharmony_ci
3806e41f4b71Sopenharmony_ci**Example**
3807e41f4b71Sopenharmony_ci
3808e41f4b71Sopenharmony_ci  ```ts
3809e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
3810e41f4b71Sopenharmony_ci
3811e41f4b71Sopenharmony_ci  class MyDeathRecipient implements rpc.DeathRecipient {
3812e41f4b71Sopenharmony_ci    onRemoteDied() {
3813e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'server died');
3814e41f4b71Sopenharmony_ci    }
3815e41f4b71Sopenharmony_ci  }
3816e41f4b71Sopenharmony_ci  class TestRemoteObject extends rpc.RemoteObject {
3817e41f4b71Sopenharmony_ci    constructor(descriptor: string) {
3818e41f4b71Sopenharmony_ci      super(descriptor);
3819e41f4b71Sopenharmony_ci    }
3820e41f4b71Sopenharmony_ci    addDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
3821e41f4b71Sopenharmony_ci      return true;
3822e41f4b71Sopenharmony_ci    }
3823e41f4b71Sopenharmony_ci    removeDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
3824e41f4b71Sopenharmony_ci      return true;
3825e41f4b71Sopenharmony_ci    }
3826e41f4b71Sopenharmony_ci    isObjectDead(): boolean {
3827e41f4b71Sopenharmony_ci      return false;
3828e41f4b71Sopenharmony_ci    }
3829e41f4b71Sopenharmony_ci  }
3830e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
3831e41f4b71Sopenharmony_ci  let testRemoteObject = new TestRemoteObject("testObject");
3832e41f4b71Sopenharmony_ci  data.writeRemoteObject(testRemoteObject);
3833e41f4b71Sopenharmony_ci  ```
3834e41f4b71Sopenharmony_ci
3835e41f4b71Sopenharmony_ci### readRemoteObject
3836e41f4b71Sopenharmony_ci
3837e41f4b71Sopenharmony_cireadRemoteObject(): IRemoteObject
3838e41f4b71Sopenharmony_ci
3839e41f4b71Sopenharmony_ciReads the remote object from this **MessageParcel** object. You can use this method to deserialize the **MessageParcel** object to generate an **IRemoteObject**. The remote objects are read in the order in which they are written to this **MessageParcel** object.
3840e41f4b71Sopenharmony_ci
3841e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
3842e41f4b71Sopenharmony_ci
3843e41f4b71Sopenharmony_ci**Return value**
3844e41f4b71Sopenharmony_ci
3845e41f4b71Sopenharmony_ci| Type                           | Description              |
3846e41f4b71Sopenharmony_ci| ------------------------------- | ------------------ |
3847e41f4b71Sopenharmony_ci| [IRemoteObject](#iremoteobject) | Remote object obtained.|
3848e41f4b71Sopenharmony_ci
3849e41f4b71Sopenharmony_ci**Example**
3850e41f4b71Sopenharmony_ci
3851e41f4b71Sopenharmony_ci  ```ts
3852e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
3853e41f4b71Sopenharmony_ci
3854e41f4b71Sopenharmony_ci  class MyDeathRecipient implements rpc.DeathRecipient {
3855e41f4b71Sopenharmony_ci    onRemoteDied() {
3856e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'server died');
3857e41f4b71Sopenharmony_ci    }
3858e41f4b71Sopenharmony_ci  }
3859e41f4b71Sopenharmony_ci  class TestRemoteObject extends rpc.RemoteObject {
3860e41f4b71Sopenharmony_ci    constructor(descriptor: string) {
3861e41f4b71Sopenharmony_ci      super(descriptor);
3862e41f4b71Sopenharmony_ci    }
3863e41f4b71Sopenharmony_ci    addDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
3864e41f4b71Sopenharmony_ci      return true;
3865e41f4b71Sopenharmony_ci    }
3866e41f4b71Sopenharmony_ci    removeDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
3867e41f4b71Sopenharmony_ci      return true;
3868e41f4b71Sopenharmony_ci    }
3869e41f4b71Sopenharmony_ci    isObjectDead(): boolean {
3870e41f4b71Sopenharmony_ci      return false;
3871e41f4b71Sopenharmony_ci    }
3872e41f4b71Sopenharmony_ci  }
3873e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
3874e41f4b71Sopenharmony_ci  let testRemoteObject = new TestRemoteObject("testObject");
3875e41f4b71Sopenharmony_ci  data.writeRemoteObject(testRemoteObject);
3876e41f4b71Sopenharmony_ci  let proxy = data.readRemoteObject();
3877e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'readRemoteObject is ' + proxy);
3878e41f4b71Sopenharmony_ci  ```
3879e41f4b71Sopenharmony_ci
3880e41f4b71Sopenharmony_ci### writeInterfaceToken
3881e41f4b71Sopenharmony_ci
3882e41f4b71Sopenharmony_ciwriteInterfaceToken(token: string): boolean
3883e41f4b71Sopenharmony_ci
3884e41f4b71Sopenharmony_ciWrites an interface token to this **MessageParcel** object. The remote object can use this interface token to verify the communication.
3885e41f4b71Sopenharmony_ci
3886e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
3887e41f4b71Sopenharmony_ci
3888e41f4b71Sopenharmony_ci**Parameters**
3889e41f4b71Sopenharmony_ci
3890e41f4b71Sopenharmony_ci| Name| Type  | Mandatory| Description              |
3891e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------ |
3892e41f4b71Sopenharmony_ci| token  | string | Yes  | Interface token to write.|
3893e41f4b71Sopenharmony_ci
3894e41f4b71Sopenharmony_ci**Return value**
3895e41f4b71Sopenharmony_ci
3896e41f4b71Sopenharmony_ci| Type   | Description                                     |
3897e41f4b71Sopenharmony_ci| ------- | ----------------------------------------- |
3898e41f4b71Sopenharmony_ci| boolean | Returns **true** if the operation is successful; returns **false** otherwise.|
3899e41f4b71Sopenharmony_ci
3900e41f4b71Sopenharmony_ci**Example**
3901e41f4b71Sopenharmony_ci
3902e41f4b71Sopenharmony_ci  ```ts
3903e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
3904e41f4b71Sopenharmony_ci
3905e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
3906e41f4b71Sopenharmony_ci  let result = data.writeInterfaceToken("aaa");
3907e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcServer: writeInterfaceToken is ' + result);
3908e41f4b71Sopenharmony_ci  ```
3909e41f4b71Sopenharmony_ci
3910e41f4b71Sopenharmony_ci### readInterfaceToken
3911e41f4b71Sopenharmony_ci
3912e41f4b71Sopenharmony_cireadInterfaceToken(): string
3913e41f4b71Sopenharmony_ci
3914e41f4b71Sopenharmony_ciReads the interface token from this **MessageParcel** object. The interface token is read in the sequence in which it is written to the **MessageParcel** object. The local object can use it to verify the communication.
3915e41f4b71Sopenharmony_ci
3916e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
3917e41f4b71Sopenharmony_ci
3918e41f4b71Sopenharmony_ci**Return value**
3919e41f4b71Sopenharmony_ci
3920e41f4b71Sopenharmony_ci| Type  | Description                    |
3921e41f4b71Sopenharmony_ci| ------ | ------------------------ |
3922e41f4b71Sopenharmony_ci| string | Interface token obtained.|
3923e41f4b71Sopenharmony_ci
3924e41f4b71Sopenharmony_ci**Example**
3925e41f4b71Sopenharmony_ci
3926e41f4b71Sopenharmony_ci  ```ts
3927e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
3928e41f4b71Sopenharmony_ci
3929e41f4b71Sopenharmony_ci  class Stub extends rpc.RemoteObject {
3930e41f4b71Sopenharmony_ci    onRemoteRequest(code: number, data: rpc.MessageParcel, reply: rpc.MessageParcel, option: rpc.MessageOption): boolean {
3931e41f4b71Sopenharmony_ci      let interfaceToken = data.readInterfaceToken();
3932e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcServer: interfaceToken is ' + interfaceToken);
3933e41f4b71Sopenharmony_ci      return true;
3934e41f4b71Sopenharmony_ci    }
3935e41f4b71Sopenharmony_ci  }
3936e41f4b71Sopenharmony_ci  ```
3937e41f4b71Sopenharmony_ci
3938e41f4b71Sopenharmony_ci### getSize
3939e41f4b71Sopenharmony_ci
3940e41f4b71Sopenharmony_cigetSize(): number
3941e41f4b71Sopenharmony_ci
3942e41f4b71Sopenharmony_ciObtains the data size of this **MessageParcel** object.
3943e41f4b71Sopenharmony_ci
3944e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
3945e41f4b71Sopenharmony_ci
3946e41f4b71Sopenharmony_ci**Return value**
3947e41f4b71Sopenharmony_ci
3948e41f4b71Sopenharmony_ci| Type  | Description                                         |
3949e41f4b71Sopenharmony_ci| ------ | --------------------------------------------- |
3950e41f4b71Sopenharmony_ci| number | Size of the **MessageParcel** object obtained, in bytes.|
3951e41f4b71Sopenharmony_ci
3952e41f4b71Sopenharmony_ci**Example**
3953e41f4b71Sopenharmony_ci
3954e41f4b71Sopenharmony_ci  ```ts
3955e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
3956e41f4b71Sopenharmony_ci
3957e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
3958e41f4b71Sopenharmony_ci  let size = data.getSize();
3959e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: size is ' + size);
3960e41f4b71Sopenharmony_ci  ```
3961e41f4b71Sopenharmony_ci
3962e41f4b71Sopenharmony_ci### getCapacity
3963e41f4b71Sopenharmony_ci
3964e41f4b71Sopenharmony_cigetCapacity(): number
3965e41f4b71Sopenharmony_ci
3966e41f4b71Sopenharmony_ciObtains the capacity of this **MessageParcel** object.
3967e41f4b71Sopenharmony_ci
3968e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
3969e41f4b71Sopenharmony_ci
3970e41f4b71Sopenharmony_ci**Return value**
3971e41f4b71Sopenharmony_ci
3972e41f4b71Sopenharmony_ci| Type  | Description                                         |
3973e41f4b71Sopenharmony_ci| ------ | --------------------------------------------- |
3974e41f4b71Sopenharmony_ci| number | **MessageParcel** capacity obtained, in bytes.|
3975e41f4b71Sopenharmony_ci
3976e41f4b71Sopenharmony_ci**Example**
3977e41f4b71Sopenharmony_ci
3978e41f4b71Sopenharmony_ci  ```ts
3979e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
3980e41f4b71Sopenharmony_ci
3981e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
3982e41f4b71Sopenharmony_ci  let result = data.getCapacity();
3983e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: capacity is ' + result);
3984e41f4b71Sopenharmony_ci  ```
3985e41f4b71Sopenharmony_ci
3986e41f4b71Sopenharmony_ci### setSize
3987e41f4b71Sopenharmony_ci
3988e41f4b71Sopenharmony_cisetSize(size: number): boolean
3989e41f4b71Sopenharmony_ci
3990e41f4b71Sopenharmony_ciSets the size of data contained in this **MessageParcel** object.
3991e41f4b71Sopenharmony_ci
3992e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
3993e41f4b71Sopenharmony_ci
3994e41f4b71Sopenharmony_ci**Parameters**
3995e41f4b71Sopenharmony_ci
3996e41f4b71Sopenharmony_ci| Name| Type  | Mandatory| Description                                       |
3997e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------------- |
3998e41f4b71Sopenharmony_ci| size   | number | Yes  | Data size to set, in bytes.|
3999e41f4b71Sopenharmony_ci
4000e41f4b71Sopenharmony_ci**Return value**
4001e41f4b71Sopenharmony_ci
4002e41f4b71Sopenharmony_ci| Type   | Description                             |
4003e41f4b71Sopenharmony_ci| ------- | --------------------------------- |
4004e41f4b71Sopenharmony_ci| boolean | Returns **true** if the operation is successful; returns **false** otherwise.|
4005e41f4b71Sopenharmony_ci
4006e41f4b71Sopenharmony_ci**Example**
4007e41f4b71Sopenharmony_ci
4008e41f4b71Sopenharmony_ci  ```ts
4009e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
4010e41f4b71Sopenharmony_ci
4011e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
4012e41f4b71Sopenharmony_ci  let setSize = data.setSize(16);
4013e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: setSize is ' + setSize);
4014e41f4b71Sopenharmony_ci  ```
4015e41f4b71Sopenharmony_ci
4016e41f4b71Sopenharmony_ci### setCapacity
4017e41f4b71Sopenharmony_ci
4018e41f4b71Sopenharmony_cisetCapacity(size: number): boolean
4019e41f4b71Sopenharmony_ci
4020e41f4b71Sopenharmony_ciSets the storage capacity of this **MessageParcel** object.
4021e41f4b71Sopenharmony_ci
4022e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
4023e41f4b71Sopenharmony_ci
4024e41f4b71Sopenharmony_ci**Parameters**
4025e41f4b71Sopenharmony_ci
4026e41f4b71Sopenharmony_ci| Name| Type  | Mandatory| Description                                       |
4027e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------------- |
4028e41f4b71Sopenharmony_ci| size   | number | Yes  | Storage capacity to set, in bytes.|
4029e41f4b71Sopenharmony_ci
4030e41f4b71Sopenharmony_ci**Return value**
4031e41f4b71Sopenharmony_ci
4032e41f4b71Sopenharmony_ci| Type   | Description                             |
4033e41f4b71Sopenharmony_ci| ------- | --------------------------------- |
4034e41f4b71Sopenharmony_ci| boolean | Returns **true** if the operation is successful; returns **false** otherwise.|
4035e41f4b71Sopenharmony_ci
4036e41f4b71Sopenharmony_ci**Example**
4037e41f4b71Sopenharmony_ci
4038e41f4b71Sopenharmony_ci  ```ts
4039e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
4040e41f4b71Sopenharmony_ci
4041e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
4042e41f4b71Sopenharmony_ci  let result = data.setCapacity(100);
4043e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: setCapacity is ' + result);
4044e41f4b71Sopenharmony_ci  ```
4045e41f4b71Sopenharmony_ci
4046e41f4b71Sopenharmony_ci### getWritableBytes
4047e41f4b71Sopenharmony_ci
4048e41f4b71Sopenharmony_cigetWritableBytes(): number
4049e41f4b71Sopenharmony_ci
4050e41f4b71Sopenharmony_ciObtains the writable capacity of this **MessageParcel** object.
4051e41f4b71Sopenharmony_ci
4052e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
4053e41f4b71Sopenharmony_ci
4054e41f4b71Sopenharmony_ci**Return value**
4055e41f4b71Sopenharmony_ci
4056e41f4b71Sopenharmony_ci| Type  | Description                                               |
4057e41f4b71Sopenharmony_ci| ------ | --------------------------------------------------- |
4058e41f4b71Sopenharmony_ci| number | **MessageParcel** writable capacity obtained, in bytes.|
4059e41f4b71Sopenharmony_ci
4060e41f4b71Sopenharmony_ci**Example**
4061e41f4b71Sopenharmony_ci
4062e41f4b71Sopenharmony_ci  ```ts
4063e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
4064e41f4b71Sopenharmony_ci
4065e41f4b71Sopenharmony_ci  class Stub extends rpc.RemoteObject {
4066e41f4b71Sopenharmony_ci    onRemoteRequest(code: number, data: rpc.MessageParcel, reply: rpc.MessageParcel, option: rpc.MessageOption): boolean {
4067e41f4b71Sopenharmony_ci      let getWritableBytes = data.getWritableBytes();
4068e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcServer: getWritableBytes is ' + getWritableBytes);
4069e41f4b71Sopenharmony_ci      return true;
4070e41f4b71Sopenharmony_ci    }
4071e41f4b71Sopenharmony_ci  }
4072e41f4b71Sopenharmony_ci  ```
4073e41f4b71Sopenharmony_ci
4074e41f4b71Sopenharmony_ci### getReadableBytes
4075e41f4b71Sopenharmony_ci
4076e41f4b71Sopenharmony_cigetReadableBytes(): number
4077e41f4b71Sopenharmony_ci
4078e41f4b71Sopenharmony_ciObtains the readable capacity of this **MessageParcel** object.
4079e41f4b71Sopenharmony_ci
4080e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
4081e41f4b71Sopenharmony_ci
4082e41f4b71Sopenharmony_ci**Return value**
4083e41f4b71Sopenharmony_ci
4084e41f4b71Sopenharmony_ci| Type  | Description                                               |
4085e41f4b71Sopenharmony_ci| ------ | --------------------------------------------------- |
4086e41f4b71Sopenharmony_ci| number | **MessageParcel** object readable capacity, in bytes.|
4087e41f4b71Sopenharmony_ci
4088e41f4b71Sopenharmony_ci**Example**
4089e41f4b71Sopenharmony_ci
4090e41f4b71Sopenharmony_ci  ```ts
4091e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
4092e41f4b71Sopenharmony_ci
4093e41f4b71Sopenharmony_ci  class Stub extends rpc.RemoteObject {
4094e41f4b71Sopenharmony_ci    onRemoteRequest(code: number, data: rpc.MessageParcel, reply: rpc.MessageParcel, option: rpc.MessageOption): boolean {
4095e41f4b71Sopenharmony_ci      let result = data.getReadableBytes();
4096e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcServer: getReadableBytes is ' + result);
4097e41f4b71Sopenharmony_ci      return true;
4098e41f4b71Sopenharmony_ci    }
4099e41f4b71Sopenharmony_ci  }
4100e41f4b71Sopenharmony_ci  ```
4101e41f4b71Sopenharmony_ci
4102e41f4b71Sopenharmony_ci### getReadPosition
4103e41f4b71Sopenharmony_ci
4104e41f4b71Sopenharmony_cigetReadPosition(): number
4105e41f4b71Sopenharmony_ci
4106e41f4b71Sopenharmony_ciObtains the read position of this **MessageParcel** object.
4107e41f4b71Sopenharmony_ci
4108e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
4109e41f4b71Sopenharmony_ci
4110e41f4b71Sopenharmony_ci**Return value**
4111e41f4b71Sopenharmony_ci
4112e41f4b71Sopenharmony_ci| Type  | Description                                   |
4113e41f4b71Sopenharmony_ci| ------ | --------------------------------------- |
4114e41f4b71Sopenharmony_ci| number | Current read position of the **MessageParcel** object.|
4115e41f4b71Sopenharmony_ci
4116e41f4b71Sopenharmony_ci**Example**
4117e41f4b71Sopenharmony_ci
4118e41f4b71Sopenharmony_ci  ```ts
4119e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
4120e41f4b71Sopenharmony_ci
4121e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
4122e41f4b71Sopenharmony_ci  let readPos = data.getReadPosition();
4123e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: readPos is ' + readPos);
4124e41f4b71Sopenharmony_ci  ```
4125e41f4b71Sopenharmony_ci
4126e41f4b71Sopenharmony_ci### getWritePosition
4127e41f4b71Sopenharmony_ci
4128e41f4b71Sopenharmony_cigetWritePosition(): number
4129e41f4b71Sopenharmony_ci
4130e41f4b71Sopenharmony_ciObtains the write position of this **MessageParcel** object.
4131e41f4b71Sopenharmony_ci
4132e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
4133e41f4b71Sopenharmony_ci
4134e41f4b71Sopenharmony_ci**Return value**
4135e41f4b71Sopenharmony_ci
4136e41f4b71Sopenharmony_ci| Type  | Description                                   |
4137e41f4b71Sopenharmony_ci| ------ | --------------------------------------- |
4138e41f4b71Sopenharmony_ci| number | Current write position of the **MessageParcel** object.|
4139e41f4b71Sopenharmony_ci
4140e41f4b71Sopenharmony_ci**Example**
4141e41f4b71Sopenharmony_ci
4142e41f4b71Sopenharmony_ci  ```ts
4143e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
4144e41f4b71Sopenharmony_ci
4145e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
4146e41f4b71Sopenharmony_ci  data.writeInt(10);
4147e41f4b71Sopenharmony_ci  let bwPos = data.getWritePosition();
4148e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: bwPos is ' + bwPos);
4149e41f4b71Sopenharmony_ci  ```
4150e41f4b71Sopenharmony_ci
4151e41f4b71Sopenharmony_ci### rewindRead
4152e41f4b71Sopenharmony_ci
4153e41f4b71Sopenharmony_cirewindRead(pos: number): boolean
4154e41f4b71Sopenharmony_ci
4155e41f4b71Sopenharmony_ciMoves the read pointer to the specified position.
4156e41f4b71Sopenharmony_ci
4157e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
4158e41f4b71Sopenharmony_ci
4159e41f4b71Sopenharmony_ci**Parameters**
4160e41f4b71Sopenharmony_ci
4161e41f4b71Sopenharmony_ci| Name| Type  | Mandatory| Description                    |
4162e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------ |
4163e41f4b71Sopenharmony_ci| pos    | number | Yes  | Position from which data is to read.|
4164e41f4b71Sopenharmony_ci
4165e41f4b71Sopenharmony_ci**Return value**
4166e41f4b71Sopenharmony_ci
4167e41f4b71Sopenharmony_ci| Type   | Description                                             |
4168e41f4b71Sopenharmony_ci| ------- | ------------------------------------------------- |
4169e41f4b71Sopenharmony_ci| boolean | Returns **true** if the read position changes; returns **false** otherwise.|
4170e41f4b71Sopenharmony_ci
4171e41f4b71Sopenharmony_ci**Example**
4172e41f4b71Sopenharmony_ci
4173e41f4b71Sopenharmony_ci  ```ts
4174e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
4175e41f4b71Sopenharmony_ci
4176e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
4177e41f4b71Sopenharmony_ci  data.writeInt(12);
4178e41f4b71Sopenharmony_ci  data.writeString("parcel");
4179e41f4b71Sopenharmony_ci  let number = data.readInt();
4180e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: number is ' + number);
4181e41f4b71Sopenharmony_ci  data.rewindRead(0);
4182e41f4b71Sopenharmony_ci  let number2 = data.readInt();
4183e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: rewindRead is ' + number2);
4184e41f4b71Sopenharmony_ci  ```
4185e41f4b71Sopenharmony_ci
4186e41f4b71Sopenharmony_ci### rewindWrite
4187e41f4b71Sopenharmony_ci
4188e41f4b71Sopenharmony_cirewindWrite(pos: number): boolean
4189e41f4b71Sopenharmony_ci
4190e41f4b71Sopenharmony_ciMoves the write pointer to the specified position.
4191e41f4b71Sopenharmony_ci
4192e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
4193e41f4b71Sopenharmony_ci
4194e41f4b71Sopenharmony_ci**Parameters**
4195e41f4b71Sopenharmony_ci
4196e41f4b71Sopenharmony_ci| Name| Type  | Mandatory| Description                    |
4197e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------ |
4198e41f4b71Sopenharmony_ci| pos    | number | Yes  | Position from which data is to write.|
4199e41f4b71Sopenharmony_ci
4200e41f4b71Sopenharmony_ci**Return value**
4201e41f4b71Sopenharmony_ci
4202e41f4b71Sopenharmony_ci| Type   | Description                                         |
4203e41f4b71Sopenharmony_ci| ------- | --------------------------------------------- |
4204e41f4b71Sopenharmony_ci| boolean | Returns **true** if the write position changes; returns **false** otherwise.|
4205e41f4b71Sopenharmony_ci
4206e41f4b71Sopenharmony_ci**Example**
4207e41f4b71Sopenharmony_ci
4208e41f4b71Sopenharmony_ci  ```ts
4209e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
4210e41f4b71Sopenharmony_ci
4211e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
4212e41f4b71Sopenharmony_ci  data.writeInt(4);
4213e41f4b71Sopenharmony_ci  data.rewindWrite(0);
4214e41f4b71Sopenharmony_ci  data.writeInt(5);
4215e41f4b71Sopenharmony_ci  let number = data.readInt();
4216e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: rewindWrite is ' + number);
4217e41f4b71Sopenharmony_ci  ```
4218e41f4b71Sopenharmony_ci
4219e41f4b71Sopenharmony_ci### writeByte
4220e41f4b71Sopenharmony_ci
4221e41f4b71Sopenharmony_ciwriteByte(val: number): boolean
4222e41f4b71Sopenharmony_ci
4223e41f4b71Sopenharmony_ciWrites a Byte value to this **MessageParcel** object.
4224e41f4b71Sopenharmony_ci
4225e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
4226e41f4b71Sopenharmony_ci
4227e41f4b71Sopenharmony_ci**Parameters**
4228e41f4b71Sopenharmony_ci
4229e41f4b71Sopenharmony_ci| Name| Type  | Mandatory| Description            |
4230e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ---------------- |
4231e41f4b71Sopenharmony_ci| val    | number | Yes  | Byte value to write.|
4232e41f4b71Sopenharmony_ci
4233e41f4b71Sopenharmony_ci**Return value**
4234e41f4b71Sopenharmony_ci
4235e41f4b71Sopenharmony_ci| Type   | Description                         |
4236e41f4b71Sopenharmony_ci| ------- | ----------------------------- |
4237e41f4b71Sopenharmony_ci| boolean | Returns **true** if the operation is successful; returns **false** otherwise.|
4238e41f4b71Sopenharmony_ci
4239e41f4b71Sopenharmony_ci**Example**
4240e41f4b71Sopenharmony_ci
4241e41f4b71Sopenharmony_ci  ```ts
4242e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
4243e41f4b71Sopenharmony_ci
4244e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
4245e41f4b71Sopenharmony_ci  let result = data.writeByte(2);
4246e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: writeByte is ' + result);
4247e41f4b71Sopenharmony_ci  ```
4248e41f4b71Sopenharmony_ci
4249e41f4b71Sopenharmony_ci### readByte
4250e41f4b71Sopenharmony_ci
4251e41f4b71Sopenharmony_cireadByte(): number
4252e41f4b71Sopenharmony_ci
4253e41f4b71Sopenharmony_ciReads the Byte value from this **MessageParcel** object.
4254e41f4b71Sopenharmony_ci
4255e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
4256e41f4b71Sopenharmony_ci
4257e41f4b71Sopenharmony_ci**Return value**
4258e41f4b71Sopenharmony_ci
4259e41f4b71Sopenharmony_ci| Type  | Description        |
4260e41f4b71Sopenharmony_ci| ------ | ------------ |
4261e41f4b71Sopenharmony_ci| number | Byte value read.|
4262e41f4b71Sopenharmony_ci
4263e41f4b71Sopenharmony_ci**Example**
4264e41f4b71Sopenharmony_ci
4265e41f4b71Sopenharmony_ci  ```ts
4266e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
4267e41f4b71Sopenharmony_ci
4268e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
4269e41f4b71Sopenharmony_ci  let result = data.writeByte(2);
4270e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: writeByte is ' + result);
4271e41f4b71Sopenharmony_ci  let ret = data.readByte();
4272e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: readByte is ' + ret);
4273e41f4b71Sopenharmony_ci  ```
4274e41f4b71Sopenharmony_ci
4275e41f4b71Sopenharmony_ci### writeShort
4276e41f4b71Sopenharmony_ci
4277e41f4b71Sopenharmony_ciwriteShort(val: number): boolean
4278e41f4b71Sopenharmony_ci
4279e41f4b71Sopenharmony_ciWrites a Short int value to this **MessageParcel** object.
4280e41f4b71Sopenharmony_ci
4281e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
4282e41f4b71Sopenharmony_ci
4283e41f4b71Sopenharmony_ci**Parameters**
4284e41f4b71Sopenharmony_ci
4285e41f4b71Sopenharmony_ci| Name| Type  | Mandatory| Description              |
4286e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------ |
4287e41f4b71Sopenharmony_ci| val    | number | Yes  | Short int value to write.|
4288e41f4b71Sopenharmony_ci
4289e41f4b71Sopenharmony_ci**Return value**
4290e41f4b71Sopenharmony_ci
4291e41f4b71Sopenharmony_ci| Type   | Description                         |
4292e41f4b71Sopenharmony_ci| ------- | ----------------------------- |
4293e41f4b71Sopenharmony_ci| boolean | Returns **true** if the data is written successfully; returns **false** otherwise.|
4294e41f4b71Sopenharmony_ci
4295e41f4b71Sopenharmony_ci**Example**
4296e41f4b71Sopenharmony_ci
4297e41f4b71Sopenharmony_ci  ```ts
4298e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
4299e41f4b71Sopenharmony_ci
4300e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
4301e41f4b71Sopenharmony_ci  let result = data.writeShort(8);
4302e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: writeShort is ' + result);
4303e41f4b71Sopenharmony_ci  ```
4304e41f4b71Sopenharmony_ci
4305e41f4b71Sopenharmony_ci### readShort
4306e41f4b71Sopenharmony_ci
4307e41f4b71Sopenharmony_cireadShort(): number
4308e41f4b71Sopenharmony_ci
4309e41f4b71Sopenharmony_ciReads the Short int value from this **MessageParcel** object.
4310e41f4b71Sopenharmony_ci
4311e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
4312e41f4b71Sopenharmony_ci
4313e41f4b71Sopenharmony_ci**Return value**
4314e41f4b71Sopenharmony_ci
4315e41f4b71Sopenharmony_ci| Type  | Description          |
4316e41f4b71Sopenharmony_ci| ------ | -------------- |
4317e41f4b71Sopenharmony_ci| number | Short int value read.|
4318e41f4b71Sopenharmony_ci
4319e41f4b71Sopenharmony_ci**Example**
4320e41f4b71Sopenharmony_ci
4321e41f4b71Sopenharmony_ci  ```ts
4322e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
4323e41f4b71Sopenharmony_ci
4324e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
4325e41f4b71Sopenharmony_ci  let result = data.writeShort(8);
4326e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: writeShort is ' + result);
4327e41f4b71Sopenharmony_ci  let ret = data.readShort();
4328e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: readShort is ' + ret);
4329e41f4b71Sopenharmony_ci  ```
4330e41f4b71Sopenharmony_ci
4331e41f4b71Sopenharmony_ci### writeInt
4332e41f4b71Sopenharmony_ci
4333e41f4b71Sopenharmony_ciwriteInt(val: number): boolean
4334e41f4b71Sopenharmony_ci
4335e41f4b71Sopenharmony_ciWrites an Int value to this **MessageParcel** object.
4336e41f4b71Sopenharmony_ci
4337e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
4338e41f4b71Sopenharmony_ci
4339e41f4b71Sopenharmony_ci**Parameters**
4340e41f4b71Sopenharmony_ci
4341e41f4b71Sopenharmony_ci| Name| Type  | Mandatory| Description            |
4342e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ---------------- |
4343e41f4b71Sopenharmony_ci| val    | number | Yes  | Int value to write.|
4344e41f4b71Sopenharmony_ci
4345e41f4b71Sopenharmony_ci**Return value**
4346e41f4b71Sopenharmony_ci
4347e41f4b71Sopenharmony_ci| Type   | Description                         |
4348e41f4b71Sopenharmony_ci| ------- | ----------------------------- |
4349e41f4b71Sopenharmony_ci| boolean | Returns **true** if the operation is successful; returns **false** otherwise.|
4350e41f4b71Sopenharmony_ci
4351e41f4b71Sopenharmony_ci**Example**
4352e41f4b71Sopenharmony_ci
4353e41f4b71Sopenharmony_ci  ```ts
4354e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
4355e41f4b71Sopenharmony_ci
4356e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
4357e41f4b71Sopenharmony_ci  let result = data.writeInt(10);
4358e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: writeInt is ' + result);
4359e41f4b71Sopenharmony_ci  ```
4360e41f4b71Sopenharmony_ci
4361e41f4b71Sopenharmony_ci### readInt
4362e41f4b71Sopenharmony_ci
4363e41f4b71Sopenharmony_cireadInt(): number
4364e41f4b71Sopenharmony_ci
4365e41f4b71Sopenharmony_ciReads the Int value from this **MessageParcel** object.
4366e41f4b71Sopenharmony_ci
4367e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
4368e41f4b71Sopenharmony_ci
4369e41f4b71Sopenharmony_ci**Return value**
4370e41f4b71Sopenharmony_ci
4371e41f4b71Sopenharmony_ci| Type  | Description        |
4372e41f4b71Sopenharmony_ci| ------ | ------------ |
4373e41f4b71Sopenharmony_ci| number | Int value read.|
4374e41f4b71Sopenharmony_ci
4375e41f4b71Sopenharmony_ci**Example**
4376e41f4b71Sopenharmony_ci
4377e41f4b71Sopenharmony_ci  ```ts
4378e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
4379e41f4b71Sopenharmony_ci
4380e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
4381e41f4b71Sopenharmony_ci  let result = data.writeInt(10);
4382e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: writeInt is ' + result);
4383e41f4b71Sopenharmony_ci  let ret = data.readInt();
4384e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: readInt is ' + ret);
4385e41f4b71Sopenharmony_ci  ```
4386e41f4b71Sopenharmony_ci
4387e41f4b71Sopenharmony_ci### writeLong
4388e41f4b71Sopenharmony_ci
4389e41f4b71Sopenharmony_ciwriteLong(val: number): boolean
4390e41f4b71Sopenharmony_ci
4391e41f4b71Sopenharmony_ciWrites a Long int value to this **MessageParcel** object.
4392e41f4b71Sopenharmony_ci
4393e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
4394e41f4b71Sopenharmony_ci
4395e41f4b71Sopenharmony_ci**Parameters**
4396e41f4b71Sopenharmony_ci
4397e41f4b71Sopenharmony_ci| Name| Type  | Mandatory| Description            |
4398e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ---------------- |
4399e41f4b71Sopenharmony_ci| val    | number | Yes  | Long int value to write.|
4400e41f4b71Sopenharmony_ci
4401e41f4b71Sopenharmony_ci**Return value**
4402e41f4b71Sopenharmony_ci
4403e41f4b71Sopenharmony_ci| Type   | Description                             |
4404e41f4b71Sopenharmony_ci| ------- | --------------------------------- |
4405e41f4b71Sopenharmony_ci| boolean | Returns **true** if the data is written successfully; returns **false** otherwise.|
4406e41f4b71Sopenharmony_ci
4407e41f4b71Sopenharmony_ci**Example**
4408e41f4b71Sopenharmony_ci
4409e41f4b71Sopenharmony_ci  ```ts
4410e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
4411e41f4b71Sopenharmony_ci
4412e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
4413e41f4b71Sopenharmony_ci  let result = data.writeLong(10000);
4414e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: writeLong is ' + result);
4415e41f4b71Sopenharmony_ci  ```
4416e41f4b71Sopenharmony_ci
4417e41f4b71Sopenharmony_ci### readLong
4418e41f4b71Sopenharmony_ci
4419e41f4b71Sopenharmony_cireadLong(): number
4420e41f4b71Sopenharmony_ci
4421e41f4b71Sopenharmony_ciReads the Long int value from this **MessageParcel** object.
4422e41f4b71Sopenharmony_ci
4423e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
4424e41f4b71Sopenharmony_ci
4425e41f4b71Sopenharmony_ci**Return value**
4426e41f4b71Sopenharmony_ci
4427e41f4b71Sopenharmony_ci| Type  | Description          |
4428e41f4b71Sopenharmony_ci| ------ | -------------- |
4429e41f4b71Sopenharmony_ci| number | Long int value read.|
4430e41f4b71Sopenharmony_ci
4431e41f4b71Sopenharmony_ci**Example**
4432e41f4b71Sopenharmony_ci
4433e41f4b71Sopenharmony_ci  ```ts
4434e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
4435e41f4b71Sopenharmony_ci
4436e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
4437e41f4b71Sopenharmony_ci  let result = data.writeLong(10000);
4438e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: writeLong is ' + result);
4439e41f4b71Sopenharmony_ci  let ret = data.readLong();
4440e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: readLong is ' + ret);
4441e41f4b71Sopenharmony_ci  ```
4442e41f4b71Sopenharmony_ci
4443e41f4b71Sopenharmony_ci### writeFloat
4444e41f4b71Sopenharmony_ci
4445e41f4b71Sopenharmony_ciwriteFloat(val: number): boolean
4446e41f4b71Sopenharmony_ci
4447e41f4b71Sopenharmony_ciWrites a Float value to this **MessageParcel** object.
4448e41f4b71Sopenharmony_ci
4449e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
4450e41f4b71Sopenharmony_ci
4451e41f4b71Sopenharmony_ci**Parameters**
4452e41f4b71Sopenharmony_ci
4453e41f4b71Sopenharmony_ci| Name| Type  | Mandatory| Description            |
4454e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ---------------- |
4455e41f4b71Sopenharmony_ci| val    | number | Yes  | Float value to write.|
4456e41f4b71Sopenharmony_ci
4457e41f4b71Sopenharmony_ci**Return value**
4458e41f4b71Sopenharmony_ci
4459e41f4b71Sopenharmony_ci| Type   | Description                             |
4460e41f4b71Sopenharmony_ci| ------- | --------------------------------- |
4461e41f4b71Sopenharmony_ci| boolean | Returns **true** if the data is written successfully; returns **false** otherwise.|
4462e41f4b71Sopenharmony_ci
4463e41f4b71Sopenharmony_ci**Example**
4464e41f4b71Sopenharmony_ci
4465e41f4b71Sopenharmony_ci  ```ts
4466e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
4467e41f4b71Sopenharmony_ci
4468e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
4469e41f4b71Sopenharmony_ci  let result = data.writeFloat(1.2);
4470e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: writeFloat is ' + result);
4471e41f4b71Sopenharmony_ci  ```
4472e41f4b71Sopenharmony_ci
4473e41f4b71Sopenharmony_ci### readFloat
4474e41f4b71Sopenharmony_ci
4475e41f4b71Sopenharmony_cireadFloat(): number
4476e41f4b71Sopenharmony_ci
4477e41f4b71Sopenharmony_ciReads the Float value from this **MessageParcel** object.
4478e41f4b71Sopenharmony_ci
4479e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
4480e41f4b71Sopenharmony_ci
4481e41f4b71Sopenharmony_ci**Return value**
4482e41f4b71Sopenharmony_ci
4483e41f4b71Sopenharmony_ci| Type  | Description        |
4484e41f4b71Sopenharmony_ci| ------ | ------------ |
4485e41f4b71Sopenharmony_ci| number | Float value read.|
4486e41f4b71Sopenharmony_ci
4487e41f4b71Sopenharmony_ci**Example**
4488e41f4b71Sopenharmony_ci
4489e41f4b71Sopenharmony_ci  ```ts
4490e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
4491e41f4b71Sopenharmony_ci
4492e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
4493e41f4b71Sopenharmony_ci  let result = data.writeFloat(1.2);
4494e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: writeFloat is ' + result);
4495e41f4b71Sopenharmony_ci  let ret = data.readFloat();
4496e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: readFloat is ' + ret);
4497e41f4b71Sopenharmony_ci  ```
4498e41f4b71Sopenharmony_ci
4499e41f4b71Sopenharmony_ci### writeDouble
4500e41f4b71Sopenharmony_ci
4501e41f4b71Sopenharmony_ciwriteDouble(val: number): boolean
4502e41f4b71Sopenharmony_ci
4503e41f4b71Sopenharmony_ciWrites a Double value to this **MessageParcel** object.
4504e41f4b71Sopenharmony_ci
4505e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
4506e41f4b71Sopenharmony_ci
4507e41f4b71Sopenharmony_ci**Parameters**
4508e41f4b71Sopenharmony_ci
4509e41f4b71Sopenharmony_ci| Name| Type  | Mandatory| Description                  |
4510e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ---------------------- |
4511e41f4b71Sopenharmony_ci| val    | number | Yes  | Double value to write.|
4512e41f4b71Sopenharmony_ci
4513e41f4b71Sopenharmony_ci**Return value**
4514e41f4b71Sopenharmony_ci
4515e41f4b71Sopenharmony_ci| Type   | Description                             |
4516e41f4b71Sopenharmony_ci| ------- | --------------------------------- |
4517e41f4b71Sopenharmony_ci| boolean | Returns **true** if the data is written successfully; returns **false** otherwise.|
4518e41f4b71Sopenharmony_ci
4519e41f4b71Sopenharmony_ci**Example**
4520e41f4b71Sopenharmony_ci
4521e41f4b71Sopenharmony_ci  ```ts
4522e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
4523e41f4b71Sopenharmony_ci
4524e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
4525e41f4b71Sopenharmony_ci  let result = data.writeDouble(10.2);
4526e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: writeDouble is ' + result);
4527e41f4b71Sopenharmony_ci  ```
4528e41f4b71Sopenharmony_ci
4529e41f4b71Sopenharmony_ci### readDouble
4530e41f4b71Sopenharmony_ci
4531e41f4b71Sopenharmony_cireadDouble(): number
4532e41f4b71Sopenharmony_ci
4533e41f4b71Sopenharmony_ciReads the Double value from this **MessageParcel** object.
4534e41f4b71Sopenharmony_ci
4535e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
4536e41f4b71Sopenharmony_ci
4537e41f4b71Sopenharmony_ci**Return value**
4538e41f4b71Sopenharmony_ci
4539e41f4b71Sopenharmony_ci| Type  | Description              |
4540e41f4b71Sopenharmony_ci| ------ | ------------------ |
4541e41f4b71Sopenharmony_ci| number | Double value read.|
4542e41f4b71Sopenharmony_ci
4543e41f4b71Sopenharmony_ci**Example**
4544e41f4b71Sopenharmony_ci
4545e41f4b71Sopenharmony_ci  ```ts
4546e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
4547e41f4b71Sopenharmony_ci
4548e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
4549e41f4b71Sopenharmony_ci  let result = data.writeDouble(10.2);
4550e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: writeDouble is ' + result);
4551e41f4b71Sopenharmony_ci  let ret = data.readDouble();
4552e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: readDouble is ' + ret);
4553e41f4b71Sopenharmony_ci  ```
4554e41f4b71Sopenharmony_ci
4555e41f4b71Sopenharmony_ci### writeBoolean
4556e41f4b71Sopenharmony_ci
4557e41f4b71Sopenharmony_ciwriteBoolean(val: boolean): boolean
4558e41f4b71Sopenharmony_ci
4559e41f4b71Sopenharmony_ciWrites a Boolean value to this **MessageParcel** object.
4560e41f4b71Sopenharmony_ci
4561e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
4562e41f4b71Sopenharmony_ci
4563e41f4b71Sopenharmony_ci**Parameters**
4564e41f4b71Sopenharmony_ci
4565e41f4b71Sopenharmony_ci| Name| Type   | Mandatory| Description            |
4566e41f4b71Sopenharmony_ci| ------ | ------- | ---- | ---------------- |
4567e41f4b71Sopenharmony_ci| val    | boolean | Yes  | Boolean value to write.|
4568e41f4b71Sopenharmony_ci
4569e41f4b71Sopenharmony_ci**Return value**
4570e41f4b71Sopenharmony_ci
4571e41f4b71Sopenharmony_ci| Type   | Description                             |
4572e41f4b71Sopenharmony_ci| ------- | --------------------------------- |
4573e41f4b71Sopenharmony_ci| boolean | Returns **true** if the data is written successfully; returns **false** otherwise.|
4574e41f4b71Sopenharmony_ci
4575e41f4b71Sopenharmony_ci**Example**
4576e41f4b71Sopenharmony_ci
4577e41f4b71Sopenharmony_ci  ```ts
4578e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
4579e41f4b71Sopenharmony_ci
4580e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
4581e41f4b71Sopenharmony_ci  let result = data.writeBoolean(false);
4582e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: writeBoolean is ' + result);
4583e41f4b71Sopenharmony_ci  ```
4584e41f4b71Sopenharmony_ci
4585e41f4b71Sopenharmony_ci### readBoolean
4586e41f4b71Sopenharmony_ci
4587e41f4b71Sopenharmony_cireadBoolean(): boolean
4588e41f4b71Sopenharmony_ci
4589e41f4b71Sopenharmony_ciReads the Boolean value from this **MessageParcel** object.
4590e41f4b71Sopenharmony_ci
4591e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
4592e41f4b71Sopenharmony_ci
4593e41f4b71Sopenharmony_ci**Return value**
4594e41f4b71Sopenharmony_ci
4595e41f4b71Sopenharmony_ci| Type   | Description                |
4596e41f4b71Sopenharmony_ci| ------- | -------------------- |
4597e41f4b71Sopenharmony_ci| boolean | Boolean value read.|
4598e41f4b71Sopenharmony_ci
4599e41f4b71Sopenharmony_ci**Example**
4600e41f4b71Sopenharmony_ci
4601e41f4b71Sopenharmony_ci  ```ts
4602e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
4603e41f4b71Sopenharmony_ci
4604e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
4605e41f4b71Sopenharmony_ci  let result = data.writeBoolean(false);
4606e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: writeBoolean is ' + result);
4607e41f4b71Sopenharmony_ci  let ret = data.readBoolean();
4608e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: readBoolean is ' + ret);
4609e41f4b71Sopenharmony_ci  ```
4610e41f4b71Sopenharmony_ci
4611e41f4b71Sopenharmony_ci### writeChar
4612e41f4b71Sopenharmony_ci
4613e41f4b71Sopenharmony_ciwriteChar(val: number): boolean
4614e41f4b71Sopenharmony_ci
4615e41f4b71Sopenharmony_ciWrites a Char value to this **MessageParcel** object.
4616e41f4b71Sopenharmony_ci
4617e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
4618e41f4b71Sopenharmony_ci
4619e41f4b71Sopenharmony_ci**Parameters**
4620e41f4b71Sopenharmony_ci
4621e41f4b71Sopenharmony_ci| Name| Type  | Mandatory| Description                |
4622e41f4b71Sopenharmony_ci| ------ | ------ | ---- | -------------------- |
4623e41f4b71Sopenharmony_ci| val    | number | Yes  | Char value to write.|
4624e41f4b71Sopenharmony_ci
4625e41f4b71Sopenharmony_ci**Return value**
4626e41f4b71Sopenharmony_ci
4627e41f4b71Sopenharmony_ci| Type   | Description                         |
4628e41f4b71Sopenharmony_ci| ------- | ----------------------------- |
4629e41f4b71Sopenharmony_ci| boolean | Returns **true** if the data is written successfully; returns **false** otherwise.|
4630e41f4b71Sopenharmony_ci
4631e41f4b71Sopenharmony_ci**Example**
4632e41f4b71Sopenharmony_ci
4633e41f4b71Sopenharmony_ci  ```ts
4634e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
4635e41f4b71Sopenharmony_ci
4636e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
4637e41f4b71Sopenharmony_ci  let result = data.writeChar(97);
4638e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: writeChar is ' + result);
4639e41f4b71Sopenharmony_ci  ```
4640e41f4b71Sopenharmony_ci
4641e41f4b71Sopenharmony_ci### readChar
4642e41f4b71Sopenharmony_ci
4643e41f4b71Sopenharmony_cireadChar(): number
4644e41f4b71Sopenharmony_ci
4645e41f4b71Sopenharmony_ciReads the Char value from this **MessageParcel** object.
4646e41f4b71Sopenharmony_ci
4647e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
4648e41f4b71Sopenharmony_ci
4649e41f4b71Sopenharmony_ci**Return value**
4650e41f4b71Sopenharmony_ci
4651e41f4b71Sopenharmony_ci| Type  | Description            |
4652e41f4b71Sopenharmony_ci| ------ | ---------------- |
4653e41f4b71Sopenharmony_ci| number | Char value read.|
4654e41f4b71Sopenharmony_ci
4655e41f4b71Sopenharmony_ci**Example**
4656e41f4b71Sopenharmony_ci
4657e41f4b71Sopenharmony_ci  ```ts
4658e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
4659e41f4b71Sopenharmony_ci
4660e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
4661e41f4b71Sopenharmony_ci  let result = data.writeChar(97);
4662e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: writeChar is ' + result);
4663e41f4b71Sopenharmony_ci  let ret = data.readChar();
4664e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: readChar is ' + ret);
4665e41f4b71Sopenharmony_ci  ```
4666e41f4b71Sopenharmony_ci
4667e41f4b71Sopenharmony_ci### writeString
4668e41f4b71Sopenharmony_ci
4669e41f4b71Sopenharmony_ciwriteString(val: string): boolean
4670e41f4b71Sopenharmony_ci
4671e41f4b71Sopenharmony_ciWrites a string to this **MessageParcel** object.
4672e41f4b71Sopenharmony_ci
4673e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
4674e41f4b71Sopenharmony_ci
4675e41f4b71Sopenharmony_ci**Parameters**
4676e41f4b71Sopenharmony_ci
4677e41f4b71Sopenharmony_ci| Name| Type  | Mandatory| Description                                     |
4678e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ----------------------------------------- |
4679e41f4b71Sopenharmony_ci| val    | string | Yes  | String to write. The length of the string must be less than 40960 bytes.|
4680e41f4b71Sopenharmony_ci
4681e41f4b71Sopenharmony_ci**Return value**
4682e41f4b71Sopenharmony_ci
4683e41f4b71Sopenharmony_ci| Type   | Description                             |
4684e41f4b71Sopenharmony_ci| ------- | --------------------------------- |
4685e41f4b71Sopenharmony_ci| boolean | Returns **true** if the data is written successfully; returns **false** otherwise.|
4686e41f4b71Sopenharmony_ci
4687e41f4b71Sopenharmony_ci**Example**
4688e41f4b71Sopenharmony_ci
4689e41f4b71Sopenharmony_ci  ```ts
4690e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
4691e41f4b71Sopenharmony_ci
4692e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
4693e41f4b71Sopenharmony_ci  let result = data.writeString('abc');
4694e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: writeString is ' + result);
4695e41f4b71Sopenharmony_ci  ```
4696e41f4b71Sopenharmony_ci
4697e41f4b71Sopenharmony_ci### readString
4698e41f4b71Sopenharmony_ci
4699e41f4b71Sopenharmony_cireadString(): string
4700e41f4b71Sopenharmony_ci
4701e41f4b71Sopenharmony_ciReads the string from this **MessageParcel** object.
4702e41f4b71Sopenharmony_ci
4703e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
4704e41f4b71Sopenharmony_ci
4705e41f4b71Sopenharmony_ci**Return value**
4706e41f4b71Sopenharmony_ci
4707e41f4b71Sopenharmony_ci| Type  | Description          |
4708e41f4b71Sopenharmony_ci| ------ | -------------- |
4709e41f4b71Sopenharmony_ci| string | String read.|
4710e41f4b71Sopenharmony_ci
4711e41f4b71Sopenharmony_ci**Example**
4712e41f4b71Sopenharmony_ci
4713e41f4b71Sopenharmony_ci  ```ts
4714e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
4715e41f4b71Sopenharmony_ci
4716e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
4717e41f4b71Sopenharmony_ci  let result = data.writeString('abc');
4718e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: writeString is ' + result);
4719e41f4b71Sopenharmony_ci  let ret = data.readString();
4720e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: readString is ' + ret);
4721e41f4b71Sopenharmony_ci  ```
4722e41f4b71Sopenharmony_ci
4723e41f4b71Sopenharmony_ci### writeSequenceable
4724e41f4b71Sopenharmony_ci
4725e41f4b71Sopenharmony_ciwriteSequenceable(val: Sequenceable): boolean
4726e41f4b71Sopenharmony_ci
4727e41f4b71Sopenharmony_ciWrites a sequenceable object to this **MessageParcel** object.
4728e41f4b71Sopenharmony_ci
4729e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
4730e41f4b71Sopenharmony_ci
4731e41f4b71Sopenharmony_ci**Parameters**
4732e41f4b71Sopenharmony_ci
4733e41f4b71Sopenharmony_ci| Name| Type                         | Mandatory| Description                |
4734e41f4b71Sopenharmony_ci| ------ | ----------------------------- | ---- | -------------------- |
4735e41f4b71Sopenharmony_ci| val    | [Sequenceable](#sequenceabledeprecated) | Yes  | Sequenceable object to write.|
4736e41f4b71Sopenharmony_ci
4737e41f4b71Sopenharmony_ci**Return value**
4738e41f4b71Sopenharmony_ci
4739e41f4b71Sopenharmony_ci| Type   | Description                            |
4740e41f4b71Sopenharmony_ci| ------- | -------------------------------- |
4741e41f4b71Sopenharmony_ci| boolean | Returns **true** if the data is written successfully; returns **false** otherwise.|
4742e41f4b71Sopenharmony_ci
4743e41f4b71Sopenharmony_ci**Example**
4744e41f4b71Sopenharmony_ci
4745e41f4b71Sopenharmony_ci  ```ts
4746e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
4747e41f4b71Sopenharmony_ci
4748e41f4b71Sopenharmony_ci  class MySequenceable implements rpc.Sequenceable {
4749e41f4b71Sopenharmony_ci    num: number = 0;
4750e41f4b71Sopenharmony_ci    str: string = '';
4751e41f4b71Sopenharmony_ci    constructor(num: number, str: string) {
4752e41f4b71Sopenharmony_ci      this.num = num;
4753e41f4b71Sopenharmony_ci      this.str = str;
4754e41f4b71Sopenharmony_ci    }
4755e41f4b71Sopenharmony_ci    marshalling(messageParcel: rpc.MessageParcel): boolean {
4756e41f4b71Sopenharmony_ci      messageParcel.writeInt(this.num);
4757e41f4b71Sopenharmony_ci      messageParcel.writeString(this.str);
4758e41f4b71Sopenharmony_ci      return true;
4759e41f4b71Sopenharmony_ci    }
4760e41f4b71Sopenharmony_ci    unmarshalling(messageParcel: rpc.MessageParcel): boolean {
4761e41f4b71Sopenharmony_ci      this.num = messageParcel.readInt();
4762e41f4b71Sopenharmony_ci      this.str = messageParcel.readString();
4763e41f4b71Sopenharmony_ci      return true;
4764e41f4b71Sopenharmony_ci    }
4765e41f4b71Sopenharmony_ci  }
4766e41f4b71Sopenharmony_ci  let sequenceable = new MySequenceable(1, "aaa");
4767e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
4768e41f4b71Sopenharmony_ci  let result = data.writeSequenceable(sequenceable);
4769e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: writeSequenceable is ' + result);
4770e41f4b71Sopenharmony_ci  ```
4771e41f4b71Sopenharmony_ci
4772e41f4b71Sopenharmony_ci### readSequenceable
4773e41f4b71Sopenharmony_ci
4774e41f4b71Sopenharmony_cireadSequenceable(dataIn: Sequenceable): boolean
4775e41f4b71Sopenharmony_ci
4776e41f4b71Sopenharmony_ciReads member variables from this **MessageParcel** object.
4777e41f4b71Sopenharmony_ci
4778e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
4779e41f4b71Sopenharmony_ci
4780e41f4b71Sopenharmony_ci**Parameters**
4781e41f4b71Sopenharmony_ci
4782e41f4b71Sopenharmony_ci| Name| Type                         | Mandatory   | Description                                          |
4783e41f4b71Sopenharmony_ci| ------ | ----------------------------- | ------- | ---------------------------------------------- |
4784e41f4b71Sopenharmony_ci| dataIn | [Sequenceable](#sequenceabledeprecated) | Yes  | Object that reads member variables from the **MessageParcel** object.|
4785e41f4b71Sopenharmony_ci
4786e41f4b71Sopenharmony_ci**Return value**
4787e41f4b71Sopenharmony_ci
4788e41f4b71Sopenharmony_ci| Type   | Description                                    |
4789e41f4b71Sopenharmony_ci| ------- | ---------------------------------------- |
4790e41f4b71Sopenharmony_ci| boolean | Returns **true** if the operation is successful; returns **false** otherwise.|
4791e41f4b71Sopenharmony_ci
4792e41f4b71Sopenharmony_ci**Example**
4793e41f4b71Sopenharmony_ci
4794e41f4b71Sopenharmony_ci  ```ts
4795e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
4796e41f4b71Sopenharmony_ci
4797e41f4b71Sopenharmony_ci  class MySequenceable implements rpc.Sequenceable {
4798e41f4b71Sopenharmony_ci    num: number = 0;
4799e41f4b71Sopenharmony_ci    str: string = '';
4800e41f4b71Sopenharmony_ci    constructor(num: number, str: string) {
4801e41f4b71Sopenharmony_ci      this.num = num;
4802e41f4b71Sopenharmony_ci      this.str = str;
4803e41f4b71Sopenharmony_ci    }
4804e41f4b71Sopenharmony_ci    marshalling(messageParcel: rpc.MessageParcel): boolean {
4805e41f4b71Sopenharmony_ci      messageParcel.writeInt(this.num);
4806e41f4b71Sopenharmony_ci      messageParcel.writeString(this.str);
4807e41f4b71Sopenharmony_ci      return true;
4808e41f4b71Sopenharmony_ci    }
4809e41f4b71Sopenharmony_ci    unmarshalling(messageParcel: rpc.MessageParcel): boolean {
4810e41f4b71Sopenharmony_ci      this.num = messageParcel.readInt();
4811e41f4b71Sopenharmony_ci      this.str = messageParcel.readString();
4812e41f4b71Sopenharmony_ci      return true;
4813e41f4b71Sopenharmony_ci    }
4814e41f4b71Sopenharmony_ci  }
4815e41f4b71Sopenharmony_ci  let sequenceable = new MySequenceable(1, "aaa");
4816e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
4817e41f4b71Sopenharmony_ci  let result = data.writeSequenceable(sequenceable);
4818e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: writeSequenceable is ' + result);
4819e41f4b71Sopenharmony_ci  let ret = new MySequenceable(0, "");
4820e41f4b71Sopenharmony_ci  let result2 = data.readSequenceable(ret);
4821e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: readSequenceable is ' + result2);
4822e41f4b71Sopenharmony_ci  ```
4823e41f4b71Sopenharmony_ci
4824e41f4b71Sopenharmony_ci### writeByteArray
4825e41f4b71Sopenharmony_ci
4826e41f4b71Sopenharmony_ciwriteByteArray(byteArray: number[]): boolean
4827e41f4b71Sopenharmony_ci
4828e41f4b71Sopenharmony_ciWrites a byte array to this **MessageParcel** object.
4829e41f4b71Sopenharmony_ci
4830e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
4831e41f4b71Sopenharmony_ci
4832e41f4b71Sopenharmony_ci**Parameters**
4833e41f4b71Sopenharmony_ci
4834e41f4b71Sopenharmony_ci| Name   | Type    | Mandatory| Description              |
4835e41f4b71Sopenharmony_ci| --------- | -------- | ---- | ------------------ |
4836e41f4b71Sopenharmony_ci| byteArray | number[] | Yes  | Byte array to write.|
4837e41f4b71Sopenharmony_ci
4838e41f4b71Sopenharmony_ci**Return value**
4839e41f4b71Sopenharmony_ci
4840e41f4b71Sopenharmony_ci| Type   | Description                            |
4841e41f4b71Sopenharmony_ci| ------- | -------------------------------- |
4842e41f4b71Sopenharmony_ci| boolean | Returns **true** if the data is written successfully; returns **false** otherwise.|
4843e41f4b71Sopenharmony_ci
4844e41f4b71Sopenharmony_ci**Example**
4845e41f4b71Sopenharmony_ci
4846e41f4b71Sopenharmony_ci  ```ts
4847e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
4848e41f4b71Sopenharmony_ci
4849e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
4850e41f4b71Sopenharmony_ci  let ByteArrayVar = [1, 2, 3, 4, 5];
4851e41f4b71Sopenharmony_ci  let result = data.writeByteArray(ByteArrayVar);
4852e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: writeByteArray is ' + result);
4853e41f4b71Sopenharmony_ci  ```
4854e41f4b71Sopenharmony_ci
4855e41f4b71Sopenharmony_ci### readByteArray
4856e41f4b71Sopenharmony_ci
4857e41f4b71Sopenharmony_cireadByteArray(dataIn: number[]): void
4858e41f4b71Sopenharmony_ci
4859e41f4b71Sopenharmony_ciReads a byte array from this **MessageParcel** object.
4860e41f4b71Sopenharmony_ci
4861e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
4862e41f4b71Sopenharmony_ci
4863e41f4b71Sopenharmony_ci**Parameters**
4864e41f4b71Sopenharmony_ci
4865e41f4b71Sopenharmony_ci| Name| Type    | Mandatory| Description              |
4866e41f4b71Sopenharmony_ci| ------ | -------- | ---- | ------------------ |
4867e41f4b71Sopenharmony_ci| dataIn | number[] | Yes  | Byte array to read.|
4868e41f4b71Sopenharmony_ci
4869e41f4b71Sopenharmony_ci**Example**
4870e41f4b71Sopenharmony_ci
4871e41f4b71Sopenharmony_ci  ```ts
4872e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
4873e41f4b71Sopenharmony_ci
4874e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
4875e41f4b71Sopenharmony_ci  let ByteArrayVar = [1, 2, 3, 4, 5];
4876e41f4b71Sopenharmony_ci  let result = data.writeByteArray(ByteArrayVar);
4877e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: writeByteArray is ' + result);
4878e41f4b71Sopenharmony_ci  let array: Array<number> = new Array(5);
4879e41f4b71Sopenharmony_ci  data.readByteArray(array);
4880e41f4b71Sopenharmony_ci  ```
4881e41f4b71Sopenharmony_ci
4882e41f4b71Sopenharmony_ci### readByteArray
4883e41f4b71Sopenharmony_ci
4884e41f4b71Sopenharmony_cireadByteArray(): number[]
4885e41f4b71Sopenharmony_ci
4886e41f4b71Sopenharmony_ciReads the byte array from this **MessageParcel** object.
4887e41f4b71Sopenharmony_ci
4888e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
4889e41f4b71Sopenharmony_ci
4890e41f4b71Sopenharmony_ci**Return value**
4891e41f4b71Sopenharmony_ci
4892e41f4b71Sopenharmony_ci| Type    | Description          |
4893e41f4b71Sopenharmony_ci| -------- | -------------- |
4894e41f4b71Sopenharmony_ci| number[] | Byte array read.|
4895e41f4b71Sopenharmony_ci
4896e41f4b71Sopenharmony_ci**Example**
4897e41f4b71Sopenharmony_ci
4898e41f4b71Sopenharmony_ci  ```ts
4899e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
4900e41f4b71Sopenharmony_ci
4901e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
4902e41f4b71Sopenharmony_ci  let ByteArrayVar = [1, 2, 3, 4, 5];
4903e41f4b71Sopenharmony_ci  let result = data.writeByteArray(ByteArrayVar);
4904e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: writeByteArray is ' + result);
4905e41f4b71Sopenharmony_ci  let array = data.readByteArray();
4906e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: readByteArray is ' + array);
4907e41f4b71Sopenharmony_ci  ```
4908e41f4b71Sopenharmony_ci
4909e41f4b71Sopenharmony_ci### writeShortArray
4910e41f4b71Sopenharmony_ci
4911e41f4b71Sopenharmony_ciwriteShortArray(shortArray: number[]): boolean
4912e41f4b71Sopenharmony_ci
4913e41f4b71Sopenharmony_ciWrites a short array to this **MessageParcel** object.
4914e41f4b71Sopenharmony_ci
4915e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
4916e41f4b71Sopenharmony_ci
4917e41f4b71Sopenharmony_ci**Parameters**
4918e41f4b71Sopenharmony_ci
4919e41f4b71Sopenharmony_ci| Name    | Type    | Mandatory| Description                |
4920e41f4b71Sopenharmony_ci| ---------- | -------- | ---- | -------------------- |
4921e41f4b71Sopenharmony_ci| shortArray | number[] | Yes  | Short array to write.|
4922e41f4b71Sopenharmony_ci
4923e41f4b71Sopenharmony_ci**Return value**
4924e41f4b71Sopenharmony_ci
4925e41f4b71Sopenharmony_ci| Type   | Description                            |
4926e41f4b71Sopenharmony_ci| ------- | -------------------------------- |
4927e41f4b71Sopenharmony_ci| boolean | Returns **true** if the data is written successfully; returns **false** otherwise.|
4928e41f4b71Sopenharmony_ci
4929e41f4b71Sopenharmony_ci**Example**
4930e41f4b71Sopenharmony_ci
4931e41f4b71Sopenharmony_ci  ```ts
4932e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
4933e41f4b71Sopenharmony_ci
4934e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
4935e41f4b71Sopenharmony_ci  let result = data.writeShortArray([11, 12, 13]);
4936e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: writeShortArray is ' + result);
4937e41f4b71Sopenharmony_ci  ```
4938e41f4b71Sopenharmony_ci
4939e41f4b71Sopenharmony_ci### readShortArray
4940e41f4b71Sopenharmony_ci
4941e41f4b71Sopenharmony_cireadShortArray(dataIn: number[]): void
4942e41f4b71Sopenharmony_ci
4943e41f4b71Sopenharmony_ciReads a short array from this **MessageParcel** object.
4944e41f4b71Sopenharmony_ci
4945e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
4946e41f4b71Sopenharmony_ci
4947e41f4b71Sopenharmony_ci**Parameters**
4948e41f4b71Sopenharmony_ci
4949e41f4b71Sopenharmony_ci| Name| Type    | Mandatory| Description                |
4950e41f4b71Sopenharmony_ci| ------ | -------- | ---- | -------------------- |
4951e41f4b71Sopenharmony_ci| dataIn | number[] | Yes  | Short array to read.|
4952e41f4b71Sopenharmony_ci
4953e41f4b71Sopenharmony_ci**Example**
4954e41f4b71Sopenharmony_ci
4955e41f4b71Sopenharmony_ci  ```ts
4956e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
4957e41f4b71Sopenharmony_ci
4958e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
4959e41f4b71Sopenharmony_ci  let result = data.writeShortArray([11, 12, 13]);
4960e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: writeShortArray is ' + result);
4961e41f4b71Sopenharmony_ci  let array: Array<number> = new Array(3);
4962e41f4b71Sopenharmony_ci  data.readShortArray(array);
4963e41f4b71Sopenharmony_ci  ```
4964e41f4b71Sopenharmony_ci
4965e41f4b71Sopenharmony_ci### readShortArray
4966e41f4b71Sopenharmony_ci
4967e41f4b71Sopenharmony_cireadShortArray(): number[]
4968e41f4b71Sopenharmony_ci
4969e41f4b71Sopenharmony_ciReads the short array from this **MessageParcel** object.
4970e41f4b71Sopenharmony_ci
4971e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
4972e41f4b71Sopenharmony_ci
4973e41f4b71Sopenharmony_ci**Return value**
4974e41f4b71Sopenharmony_ci
4975e41f4b71Sopenharmony_ci| Type    | Description            |
4976e41f4b71Sopenharmony_ci| -------- | ---------------- |
4977e41f4b71Sopenharmony_ci| number[] | Short array read.|
4978e41f4b71Sopenharmony_ci
4979e41f4b71Sopenharmony_ci**Example**
4980e41f4b71Sopenharmony_ci
4981e41f4b71Sopenharmony_ci  ```ts
4982e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
4983e41f4b71Sopenharmony_ci
4984e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
4985e41f4b71Sopenharmony_ci  let result = data.writeShortArray([11, 12, 13]);
4986e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: writeShortArray is ' + result);
4987e41f4b71Sopenharmony_ci  let array = data.readShortArray();
4988e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: readShortArray is ' + array);
4989e41f4b71Sopenharmony_ci  ```
4990e41f4b71Sopenharmony_ci
4991e41f4b71Sopenharmony_ci### writeIntArray
4992e41f4b71Sopenharmony_ci
4993e41f4b71Sopenharmony_ciwriteIntArray(intArray: number[]): boolean
4994e41f4b71Sopenharmony_ci
4995e41f4b71Sopenharmony_ciWrites an integer array to this **MessageParcel** object.
4996e41f4b71Sopenharmony_ci
4997e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
4998e41f4b71Sopenharmony_ci
4999e41f4b71Sopenharmony_ci**Parameters**
5000e41f4b71Sopenharmony_ci
5001e41f4b71Sopenharmony_ci| Name  | Type    | Mandatory| Description              |
5002e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------ |
5003e41f4b71Sopenharmony_ci| intArray | number[] | Yes  | Integer array to write.|
5004e41f4b71Sopenharmony_ci
5005e41f4b71Sopenharmony_ci**Return value**
5006e41f4b71Sopenharmony_ci
5007e41f4b71Sopenharmony_ci| Type   | Description                            |
5008e41f4b71Sopenharmony_ci| ------- | -------------------------------- |
5009e41f4b71Sopenharmony_ci| boolean | Returns **true** if the data is written successfully; returns **false** otherwise.|
5010e41f4b71Sopenharmony_ci
5011e41f4b71Sopenharmony_ci**Example**
5012e41f4b71Sopenharmony_ci
5013e41f4b71Sopenharmony_ci  ```ts
5014e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
5015e41f4b71Sopenharmony_ci
5016e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
5017e41f4b71Sopenharmony_ci  let result = data.writeIntArray([100, 111, 112]);
5018e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: writeIntArray is ' + result);
5019e41f4b71Sopenharmony_ci  ```
5020e41f4b71Sopenharmony_ci
5021e41f4b71Sopenharmony_ci### readIntArray
5022e41f4b71Sopenharmony_ci
5023e41f4b71Sopenharmony_cireadIntArray(dataIn: number[]): void
5024e41f4b71Sopenharmony_ci
5025e41f4b71Sopenharmony_ciReads an integer array from this **MessageParcel** object.
5026e41f4b71Sopenharmony_ci
5027e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
5028e41f4b71Sopenharmony_ci
5029e41f4b71Sopenharmony_ci**Parameters**
5030e41f4b71Sopenharmony_ci
5031e41f4b71Sopenharmony_ci| Name| Type    | Mandatory| Description              |
5032e41f4b71Sopenharmony_ci| ------ | -------- | ---- | ------------------ |
5033e41f4b71Sopenharmony_ci| dataIn | number[] | Yes  | Integer array to read.|
5034e41f4b71Sopenharmony_ci
5035e41f4b71Sopenharmony_ci**Example**
5036e41f4b71Sopenharmony_ci
5037e41f4b71Sopenharmony_ci  ```ts
5038e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
5039e41f4b71Sopenharmony_ci
5040e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
5041e41f4b71Sopenharmony_ci  let result = data.writeIntArray([100, 111, 112]);
5042e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: writeIntArray is ' + result);
5043e41f4b71Sopenharmony_ci  let array: Array<number> = new Array(3);
5044e41f4b71Sopenharmony_ci  data.readIntArray(array);
5045e41f4b71Sopenharmony_ci  ```
5046e41f4b71Sopenharmony_ci
5047e41f4b71Sopenharmony_ci### readIntArray
5048e41f4b71Sopenharmony_ci
5049e41f4b71Sopenharmony_cireadIntArray(): number[]
5050e41f4b71Sopenharmony_ci
5051e41f4b71Sopenharmony_ciReads the integer array from this **MessageParcel** object.
5052e41f4b71Sopenharmony_ci
5053e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
5054e41f4b71Sopenharmony_ci
5055e41f4b71Sopenharmony_ci**Return value**
5056e41f4b71Sopenharmony_ci
5057e41f4b71Sopenharmony_ci| Type    | Description          |
5058e41f4b71Sopenharmony_ci| -------- | -------------- |
5059e41f4b71Sopenharmony_ci| number[] | Integer array read.|
5060e41f4b71Sopenharmony_ci
5061e41f4b71Sopenharmony_ci**Example**
5062e41f4b71Sopenharmony_ci
5063e41f4b71Sopenharmony_ci  ```ts
5064e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
5065e41f4b71Sopenharmony_ci
5066e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
5067e41f4b71Sopenharmony_ci  let result = data.writeIntArray([100, 111, 112]);
5068e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: writeIntArray is ' + result);
5069e41f4b71Sopenharmony_ci  let array = data.readIntArray();
5070e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: readIntArray is ' + array);
5071e41f4b71Sopenharmony_ci  ```
5072e41f4b71Sopenharmony_ci
5073e41f4b71Sopenharmony_ci### writeLongArray
5074e41f4b71Sopenharmony_ci
5075e41f4b71Sopenharmony_ciwriteLongArray(longArray: number[]): boolean
5076e41f4b71Sopenharmony_ci
5077e41f4b71Sopenharmony_ciWrites a long array to this **MessageParcel** object.
5078e41f4b71Sopenharmony_ci
5079e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
5080e41f4b71Sopenharmony_ci
5081e41f4b71Sopenharmony_ci**Parameters**
5082e41f4b71Sopenharmony_ci
5083e41f4b71Sopenharmony_ci| Name   | Type    | Mandatory| Description                |
5084e41f4b71Sopenharmony_ci| --------- | -------- | ---- | -------------------- |
5085e41f4b71Sopenharmony_ci| longArray | number[] | Yes  | Long array to write.|
5086e41f4b71Sopenharmony_ci
5087e41f4b71Sopenharmony_ci**Return value**
5088e41f4b71Sopenharmony_ci
5089e41f4b71Sopenharmony_ci| Type   | Description                         |
5090e41f4b71Sopenharmony_ci| ------- | ----------------------------- |
5091e41f4b71Sopenharmony_ci| boolean | Returns **true** if the data is written successfully; returns **false** otherwise.|
5092e41f4b71Sopenharmony_ci
5093e41f4b71Sopenharmony_ci**Example**
5094e41f4b71Sopenharmony_ci
5095e41f4b71Sopenharmony_ci  ```ts
5096e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
5097e41f4b71Sopenharmony_ci
5098e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
5099e41f4b71Sopenharmony_ci  let result = data.writeLongArray([1111, 1112, 1113]);
5100e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: writeLongArray is ' + result);
5101e41f4b71Sopenharmony_ci  ```
5102e41f4b71Sopenharmony_ci
5103e41f4b71Sopenharmony_ci### readLongArray
5104e41f4b71Sopenharmony_ci
5105e41f4b71Sopenharmony_cireadLongArray(dataIn: number[]): void
5106e41f4b71Sopenharmony_ci
5107e41f4b71Sopenharmony_ciReads a long array from this **MessageParcel** object.
5108e41f4b71Sopenharmony_ci
5109e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
5110e41f4b71Sopenharmony_ci
5111e41f4b71Sopenharmony_ci**Parameters**
5112e41f4b71Sopenharmony_ci
5113e41f4b71Sopenharmony_ci| Name| Type    | Mandatory| Description                |
5114e41f4b71Sopenharmony_ci| ------ | -------- | ---- | -------------------- |
5115e41f4b71Sopenharmony_ci| dataIn | number[] | Yes  | Long array to read.|
5116e41f4b71Sopenharmony_ci
5117e41f4b71Sopenharmony_ci**Example**
5118e41f4b71Sopenharmony_ci
5119e41f4b71Sopenharmony_ci  ```ts
5120e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
5121e41f4b71Sopenharmony_ci
5122e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
5123e41f4b71Sopenharmony_ci  let result = data.writeLongArray([1111, 1112, 1113]);
5124e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: writeLongArray is ' + result);
5125e41f4b71Sopenharmony_ci  let array: Array<number> = new Array(3);
5126e41f4b71Sopenharmony_ci  data.readLongArray(array);
5127e41f4b71Sopenharmony_ci  ```
5128e41f4b71Sopenharmony_ci
5129e41f4b71Sopenharmony_ci### readLongArray
5130e41f4b71Sopenharmony_ci
5131e41f4b71Sopenharmony_cireadLongArray(): number[]
5132e41f4b71Sopenharmony_ci
5133e41f4b71Sopenharmony_ciReads the long array from this **MessageParcel** object.
5134e41f4b71Sopenharmony_ci
5135e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
5136e41f4b71Sopenharmony_ci
5137e41f4b71Sopenharmony_ci**Return value**
5138e41f4b71Sopenharmony_ci
5139e41f4b71Sopenharmony_ci| Type    | Description            |
5140e41f4b71Sopenharmony_ci| -------- | ---------------- |
5141e41f4b71Sopenharmony_ci| number[] | Long array read.|
5142e41f4b71Sopenharmony_ci
5143e41f4b71Sopenharmony_ci**Example**
5144e41f4b71Sopenharmony_ci
5145e41f4b71Sopenharmony_ci  ```ts
5146e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
5147e41f4b71Sopenharmony_ci
5148e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
5149e41f4b71Sopenharmony_ci  let result = data.writeLongArray([1111, 1112, 1113]);
5150e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: writeLongArray is ' + result);
5151e41f4b71Sopenharmony_ci  let array = data.readLongArray();
5152e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: readLongArray is ' + array);
5153e41f4b71Sopenharmony_ci  ```
5154e41f4b71Sopenharmony_ci
5155e41f4b71Sopenharmony_ci### writeFloatArray
5156e41f4b71Sopenharmony_ci
5157e41f4b71Sopenharmony_ciwriteFloatArray(floatArray: number[]): boolean
5158e41f4b71Sopenharmony_ci
5159e41f4b71Sopenharmony_ciWrites a FloatArray to this **MessageParcel** object.
5160e41f4b71Sopenharmony_ci
5161e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
5162e41f4b71Sopenharmony_ci
5163e41f4b71Sopenharmony_ci**Parameters**
5164e41f4b71Sopenharmony_ci
5165e41f4b71Sopenharmony_ci| Name| Type| Mandatory| Description |
5166e41f4b71Sopenharmony_ci| ---------- | -------- | ---- | --- |
5167e41f4b71Sopenharmony_ci| floatArray | number[] | Yes  | Floating-point array to write. The system processes Float data as that of the Double type. Therefore, the total number of bytes occupied by a FloatArray must be calculated as the Double type.|
5168e41f4b71Sopenharmony_ci
5169e41f4b71Sopenharmony_ci**Return value**
5170e41f4b71Sopenharmony_ci
5171e41f4b71Sopenharmony_ci| Type   | Description                            |
5172e41f4b71Sopenharmony_ci| ------- | -------------------------------- |
5173e41f4b71Sopenharmony_ci| boolean | Returns **true** if the data is written successfully; returns **false** otherwise.|
5174e41f4b71Sopenharmony_ci
5175e41f4b71Sopenharmony_ci**Example**
5176e41f4b71Sopenharmony_ci
5177e41f4b71Sopenharmony_ci  ```ts
5178e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
5179e41f4b71Sopenharmony_ci
5180e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
5181e41f4b71Sopenharmony_ci  let result = data.writeFloatArray([1.2, 1.3, 1.4]);
5182e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: writeFloatArray is ' + result);
5183e41f4b71Sopenharmony_ci  ```
5184e41f4b71Sopenharmony_ci
5185e41f4b71Sopenharmony_ci### readFloatArray
5186e41f4b71Sopenharmony_ci
5187e41f4b71Sopenharmony_cireadFloatArray(dataIn: number[]): void
5188e41f4b71Sopenharmony_ci
5189e41f4b71Sopenharmony_ciReads a FloatArray from this **MessageParcel** object.
5190e41f4b71Sopenharmony_ci
5191e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
5192e41f4b71Sopenharmony_ci
5193e41f4b71Sopenharmony_ci**Parameters**
5194e41f4b71Sopenharmony_ci
5195e41f4b71Sopenharmony_ci| Name| Type    | Mandatory| Description  |
5196e41f4b71Sopenharmony_ci| ------ | -------- | ---- | ------ |
5197e41f4b71Sopenharmony_ci| dataIn | number[] | Yes  | Floating-point array to read. The system processes Float data as that of the Double type. Therefore, the total number of bytes occupied by a FloatArray must be calculated as the Double type.|
5198e41f4b71Sopenharmony_ci
5199e41f4b71Sopenharmony_ci**Example**
5200e41f4b71Sopenharmony_ci
5201e41f4b71Sopenharmony_ci  ```ts
5202e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
5203e41f4b71Sopenharmony_ci
5204e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
5205e41f4b71Sopenharmony_ci  let result = data.writeFloatArray([1.2, 1.3, 1.4]);
5206e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: writeFloatArray is ' + result);
5207e41f4b71Sopenharmony_ci  let array: Array<number> = new Array(3);
5208e41f4b71Sopenharmony_ci  data.readFloatArray(array);
5209e41f4b71Sopenharmony_ci  ```
5210e41f4b71Sopenharmony_ci
5211e41f4b71Sopenharmony_ci### readFloatArray
5212e41f4b71Sopenharmony_ci
5213e41f4b71Sopenharmony_cireadFloatArray(): number[]
5214e41f4b71Sopenharmony_ci
5215e41f4b71Sopenharmony_ciReads the FloatArray from this **MessageParcel** object.
5216e41f4b71Sopenharmony_ci
5217e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
5218e41f4b71Sopenharmony_ci
5219e41f4b71Sopenharmony_ci**Return value**
5220e41f4b71Sopenharmony_ci
5221e41f4b71Sopenharmony_ci| Type    | Description          |
5222e41f4b71Sopenharmony_ci| -------- | -------------- |
5223e41f4b71Sopenharmony_ci| number[] | FloatArray read.|
5224e41f4b71Sopenharmony_ci
5225e41f4b71Sopenharmony_ci**Example**
5226e41f4b71Sopenharmony_ci
5227e41f4b71Sopenharmony_ci  ```ts
5228e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
5229e41f4b71Sopenharmony_ci
5230e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
5231e41f4b71Sopenharmony_ci  let result = data.writeFloatArray([1.2, 1.3, 1.4]);
5232e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: writeFloatArray is ' + result);
5233e41f4b71Sopenharmony_ci  let array = data.readFloatArray();
5234e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: readFloatArray is ' + array);
5235e41f4b71Sopenharmony_ci  ```
5236e41f4b71Sopenharmony_ci
5237e41f4b71Sopenharmony_ci### writeDoubleArray
5238e41f4b71Sopenharmony_ci
5239e41f4b71Sopenharmony_ciwriteDoubleArray(doubleArray: number[]): boolean
5240e41f4b71Sopenharmony_ci
5241e41f4b71Sopenharmony_ciWrites a DoubleArray to this **MessageParcel** object.
5242e41f4b71Sopenharmony_ci
5243e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
5244e41f4b71Sopenharmony_ci
5245e41f4b71Sopenharmony_ci**Parameters**
5246e41f4b71Sopenharmony_ci
5247e41f4b71Sopenharmony_ci| Name     | Type    | Mandatory| Description                    |
5248e41f4b71Sopenharmony_ci| ----------- | -------- | ---- | ------------------------ |
5249e41f4b71Sopenharmony_ci| doubleArray | number[] | Yes  | DoubleArray to write.|
5250e41f4b71Sopenharmony_ci
5251e41f4b71Sopenharmony_ci**Return value**
5252e41f4b71Sopenharmony_ci
5253e41f4b71Sopenharmony_ci| Type   | Description                            |
5254e41f4b71Sopenharmony_ci| ------- | -------------------------------- |
5255e41f4b71Sopenharmony_ci| boolean | Returns **true** if the data is written successfully; returns **false** otherwise.|
5256e41f4b71Sopenharmony_ci
5257e41f4b71Sopenharmony_ci**Example**
5258e41f4b71Sopenharmony_ci
5259e41f4b71Sopenharmony_ci  ```ts
5260e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
5261e41f4b71Sopenharmony_ci
5262e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
5263e41f4b71Sopenharmony_ci  let result = data.writeDoubleArray([11.1, 12.2, 13.3]);
5264e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: writeDoubleArray is ' + result);
5265e41f4b71Sopenharmony_ci  ```
5266e41f4b71Sopenharmony_ci
5267e41f4b71Sopenharmony_ci### readDoubleArray
5268e41f4b71Sopenharmony_ci
5269e41f4b71Sopenharmony_cireadDoubleArray(dataIn: number[]): void
5270e41f4b71Sopenharmony_ci
5271e41f4b71Sopenharmony_ciReads a DoubleArray from this **MessageParcel** object.
5272e41f4b71Sopenharmony_ci
5273e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
5274e41f4b71Sopenharmony_ci
5275e41f4b71Sopenharmony_ci**Parameters**
5276e41f4b71Sopenharmony_ci
5277e41f4b71Sopenharmony_ci| Name| Type    | Mandatory| Description                    |
5278e41f4b71Sopenharmony_ci| ------ | -------- | ---- | ------------------------ |
5279e41f4b71Sopenharmony_ci| dataIn | number[] | Yes  | DoubleArray to read.|
5280e41f4b71Sopenharmony_ci
5281e41f4b71Sopenharmony_ci**Example**
5282e41f4b71Sopenharmony_ci
5283e41f4b71Sopenharmony_ci  ```ts
5284e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
5285e41f4b71Sopenharmony_ci
5286e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
5287e41f4b71Sopenharmony_ci  let result = data.writeDoubleArray([11.1, 12.2, 13.3]);
5288e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: writeDoubleArray is ' + result);
5289e41f4b71Sopenharmony_ci  let array: Array<number> = new Array(3);
5290e41f4b71Sopenharmony_ci  data.readDoubleArray(array);
5291e41f4b71Sopenharmony_ci  ```
5292e41f4b71Sopenharmony_ci
5293e41f4b71Sopenharmony_ci### readDoubleArray
5294e41f4b71Sopenharmony_ci
5295e41f4b71Sopenharmony_cireadDoubleArray(): number[]
5296e41f4b71Sopenharmony_ci
5297e41f4b71Sopenharmony_ciReads the DoubleArray from this **MessageParcel** object.
5298e41f4b71Sopenharmony_ci
5299e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
5300e41f4b71Sopenharmony_ci
5301e41f4b71Sopenharmony_ci**Return value**
5302e41f4b71Sopenharmony_ci
5303e41f4b71Sopenharmony_ci| Type    | Description                |
5304e41f4b71Sopenharmony_ci| -------- | -------------------- |
5305e41f4b71Sopenharmony_ci| number[] | DoubleArray read.|
5306e41f4b71Sopenharmony_ci
5307e41f4b71Sopenharmony_ci**Example**
5308e41f4b71Sopenharmony_ci
5309e41f4b71Sopenharmony_ci  ```ts
5310e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
5311e41f4b71Sopenharmony_ci
5312e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
5313e41f4b71Sopenharmony_ci  let result = data.writeDoubleArray([11.1, 12.2, 13.3]);
5314e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: writeDoubleArray is ' + result);
5315e41f4b71Sopenharmony_ci  let array = data.readDoubleArray();
5316e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: readDoubleArray is ' + array);
5317e41f4b71Sopenharmony_ci  ```
5318e41f4b71Sopenharmony_ci
5319e41f4b71Sopenharmony_ci### writeBooleanArray
5320e41f4b71Sopenharmony_ci
5321e41f4b71Sopenharmony_ciwriteBooleanArray(booleanArray: boolean[]): boolean
5322e41f4b71Sopenharmony_ci
5323e41f4b71Sopenharmony_ciWrites a Boolean array to this **MessageParcel** object.
5324e41f4b71Sopenharmony_ci
5325e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
5326e41f4b71Sopenharmony_ci
5327e41f4b71Sopenharmony_ci**Parameters**
5328e41f4b71Sopenharmony_ci
5329e41f4b71Sopenharmony_ci| Name      | Type     | Mandatory| Description              |
5330e41f4b71Sopenharmony_ci| ------------ | --------- | ---- | ------------------ |
5331e41f4b71Sopenharmony_ci| booleanArray | boolean[] | Yes  | Boolean array to write.|
5332e41f4b71Sopenharmony_ci
5333e41f4b71Sopenharmony_ci**Return value**
5334e41f4b71Sopenharmony_ci
5335e41f4b71Sopenharmony_ci| Type   | Description                            |
5336e41f4b71Sopenharmony_ci| ------- | -------------------------------- |
5337e41f4b71Sopenharmony_ci| boolean | Returns **true** if the data is written successfully; returns **false** otherwise.|
5338e41f4b71Sopenharmony_ci
5339e41f4b71Sopenharmony_ci**Example**
5340e41f4b71Sopenharmony_ci
5341e41f4b71Sopenharmony_ci  ```ts
5342e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
5343e41f4b71Sopenharmony_ci
5344e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
5345e41f4b71Sopenharmony_ci  let result = data.writeBooleanArray([false, true, false]);
5346e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: writeBooleanArray is ' + result);
5347e41f4b71Sopenharmony_ci  ```
5348e41f4b71Sopenharmony_ci
5349e41f4b71Sopenharmony_ci### readBooleanArray
5350e41f4b71Sopenharmony_ci
5351e41f4b71Sopenharmony_cireadBooleanArray(dataIn: boolean[]): void
5352e41f4b71Sopenharmony_ci
5353e41f4b71Sopenharmony_ciReads a Boolean array from this **MessageParcel** object.
5354e41f4b71Sopenharmony_ci
5355e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
5356e41f4b71Sopenharmony_ci
5357e41f4b71Sopenharmony_ci**Parameters**
5358e41f4b71Sopenharmony_ci
5359e41f4b71Sopenharmony_ci| Name| Type     | Mandatory| Description              |
5360e41f4b71Sopenharmony_ci| ------ | --------- | ---- | ------------------ |
5361e41f4b71Sopenharmony_ci| dataIn | boolean[] | Yes  | Boolean array to read.|
5362e41f4b71Sopenharmony_ci
5363e41f4b71Sopenharmony_ci**Example**
5364e41f4b71Sopenharmony_ci
5365e41f4b71Sopenharmony_ci  ```ts
5366e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
5367e41f4b71Sopenharmony_ci
5368e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
5369e41f4b71Sopenharmony_ci  let result = data.writeBooleanArray([false, true, false]);
5370e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: writeBooleanArray is ' + result);
5371e41f4b71Sopenharmony_ci  let array: Array<boolean> = new Array(3);
5372e41f4b71Sopenharmony_ci  data.readBooleanArray(array);
5373e41f4b71Sopenharmony_ci  ```
5374e41f4b71Sopenharmony_ci
5375e41f4b71Sopenharmony_ci### readBooleanArray
5376e41f4b71Sopenharmony_ci
5377e41f4b71Sopenharmony_cireadBooleanArray(): boolean[]
5378e41f4b71Sopenharmony_ci
5379e41f4b71Sopenharmony_ciReads the Boolean array from this **MessageParcel** object.
5380e41f4b71Sopenharmony_ci
5381e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
5382e41f4b71Sopenharmony_ci
5383e41f4b71Sopenharmony_ci**Return value**
5384e41f4b71Sopenharmony_ci
5385e41f4b71Sopenharmony_ci| Type     | Description          |
5386e41f4b71Sopenharmony_ci| --------- | -------------- |
5387e41f4b71Sopenharmony_ci| boolean[] | Boolean array read.|
5388e41f4b71Sopenharmony_ci
5389e41f4b71Sopenharmony_ci**Example**
5390e41f4b71Sopenharmony_ci
5391e41f4b71Sopenharmony_ci  ```ts
5392e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
5393e41f4b71Sopenharmony_ci
5394e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
5395e41f4b71Sopenharmony_ci  let result = data.writeBooleanArray([false, true, false]);
5396e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: writeBooleanArray is ' + result);
5397e41f4b71Sopenharmony_ci  let array = data.readBooleanArray();
5398e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: readBooleanArray is ' + array);
5399e41f4b71Sopenharmony_ci  ```
5400e41f4b71Sopenharmony_ci
5401e41f4b71Sopenharmony_ci### writeCharArray
5402e41f4b71Sopenharmony_ci
5403e41f4b71Sopenharmony_ciwriteCharArray(charArray: number[]): boolean
5404e41f4b71Sopenharmony_ci
5405e41f4b71Sopenharmony_ciWrites a character array to this **MessageParcel** object.
5406e41f4b71Sopenharmony_ci
5407e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
5408e41f4b71Sopenharmony_ci
5409e41f4b71Sopenharmony_ci**Parameters**
5410e41f4b71Sopenharmony_ci
5411e41f4b71Sopenharmony_ci| Name   | Type    | Mandatory| Description                  |
5412e41f4b71Sopenharmony_ci| --------- | -------- | ---- | ---------------------- |
5413e41f4b71Sopenharmony_ci| charArray | number[] | Yes  | Character array to write.|
5414e41f4b71Sopenharmony_ci
5415e41f4b71Sopenharmony_ci**Return value**
5416e41f4b71Sopenharmony_ci
5417e41f4b71Sopenharmony_ci| Type   | Description                            |
5418e41f4b71Sopenharmony_ci| ------- | -------------------------------- |
5419e41f4b71Sopenharmony_ci| boolean | Returns **true** if the data is written successfully; returns **false** otherwise.|
5420e41f4b71Sopenharmony_ci
5421e41f4b71Sopenharmony_ci**Example**
5422e41f4b71Sopenharmony_ci
5423e41f4b71Sopenharmony_ci  ```ts
5424e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
5425e41f4b71Sopenharmony_ci
5426e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
5427e41f4b71Sopenharmony_ci  let result = data.writeCharArray([97, 98, 88]);
5428e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: writeCharArray is ' + result);
5429e41f4b71Sopenharmony_ci  ```
5430e41f4b71Sopenharmony_ci
5431e41f4b71Sopenharmony_ci### readCharArray
5432e41f4b71Sopenharmony_ci
5433e41f4b71Sopenharmony_cireadCharArray(dataIn: number[]): void
5434e41f4b71Sopenharmony_ci
5435e41f4b71Sopenharmony_ciReads a character array from this **MessageParcel** object.
5436e41f4b71Sopenharmony_ci
5437e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
5438e41f4b71Sopenharmony_ci
5439e41f4b71Sopenharmony_ci**Parameters**
5440e41f4b71Sopenharmony_ci
5441e41f4b71Sopenharmony_ci| Name| Type    | Mandatory| Description                  |
5442e41f4b71Sopenharmony_ci| ------ | -------- | ---- | ---------------------- |
5443e41f4b71Sopenharmony_ci| dataIn | number[] | Yes  | Character array to read.|
5444e41f4b71Sopenharmony_ci
5445e41f4b71Sopenharmony_ci**Example**
5446e41f4b71Sopenharmony_ci
5447e41f4b71Sopenharmony_ci  ```ts
5448e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
5449e41f4b71Sopenharmony_ci
5450e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
5451e41f4b71Sopenharmony_ci  let result = data.writeCharArray([97, 98, 99]);
5452e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: writeCharArray is ' + result);
5453e41f4b71Sopenharmony_ci  let array: Array<number> = new Array(3);
5454e41f4b71Sopenharmony_ci  data.readCharArray(array);
5455e41f4b71Sopenharmony_ci  ```
5456e41f4b71Sopenharmony_ci
5457e41f4b71Sopenharmony_ci### readCharArray
5458e41f4b71Sopenharmony_ci
5459e41f4b71Sopenharmony_cireadCharArray(): number[]
5460e41f4b71Sopenharmony_ci
5461e41f4b71Sopenharmony_ciReads the character array from this **MessageParcel** object.
5462e41f4b71Sopenharmony_ci
5463e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
5464e41f4b71Sopenharmony_ci
5465e41f4b71Sopenharmony_ci**Return value**
5466e41f4b71Sopenharmony_ci
5467e41f4b71Sopenharmony_ci| Type    | Description              |
5468e41f4b71Sopenharmony_ci| -------- | ------------------ |
5469e41f4b71Sopenharmony_ci| number[] | Character array read.|
5470e41f4b71Sopenharmony_ci
5471e41f4b71Sopenharmony_ci**Example**
5472e41f4b71Sopenharmony_ci
5473e41f4b71Sopenharmony_ci  ```ts
5474e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
5475e41f4b71Sopenharmony_ci
5476e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
5477e41f4b71Sopenharmony_ci  let result = data.writeCharArray([97, 98, 99]);
5478e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: writeCharArray is ' + result);
5479e41f4b71Sopenharmony_ci  let array = data.readCharArray();
5480e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: readCharArray is ' + array);
5481e41f4b71Sopenharmony_ci  ```
5482e41f4b71Sopenharmony_ci
5483e41f4b71Sopenharmony_ci### writeStringArray
5484e41f4b71Sopenharmony_ci
5485e41f4b71Sopenharmony_ciwriteStringArray(stringArray: string[]): boolean
5486e41f4b71Sopenharmony_ci
5487e41f4b71Sopenharmony_ciWrites a string array to this **MessageParcel** object.
5488e41f4b71Sopenharmony_ci
5489e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
5490e41f4b71Sopenharmony_ci
5491e41f4b71Sopenharmony_ci**Parameters**
5492e41f4b71Sopenharmony_ci
5493e41f4b71Sopenharmony_ci| Name     | Type    | Mandatory| Description            |
5494e41f4b71Sopenharmony_ci| ----------- | -------- | ---- | ---------------- |
5495e41f4b71Sopenharmony_ci| stringArray | string[] | Yes  | String array to write. The length of a single element in the array must be less than 40960 bytes.|
5496e41f4b71Sopenharmony_ci
5497e41f4b71Sopenharmony_ci**Return value**
5498e41f4b71Sopenharmony_ci
5499e41f4b71Sopenharmony_ci| Type   | Description|
5500e41f4b71Sopenharmony_ci| ------- | -------------------------------- |
5501e41f4b71Sopenharmony_ci| boolean | Returns **true** if the data is written successfully; returns **false** otherwise.|
5502e41f4b71Sopenharmony_ci
5503e41f4b71Sopenharmony_ci**Example**
5504e41f4b71Sopenharmony_ci
5505e41f4b71Sopenharmony_ci  ```ts
5506e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
5507e41f4b71Sopenharmony_ci
5508e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
5509e41f4b71Sopenharmony_ci  let result = data.writeStringArray(["abc", "def"]);
5510e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: writeStringArray is ' + result);
5511e41f4b71Sopenharmony_ci  ```
5512e41f4b71Sopenharmony_ci
5513e41f4b71Sopenharmony_ci### readStringArray
5514e41f4b71Sopenharmony_ci
5515e41f4b71Sopenharmony_cireadStringArray(dataIn: string[]): void
5516e41f4b71Sopenharmony_ci
5517e41f4b71Sopenharmony_ciReads a string array from this **MessageParcel** object.
5518e41f4b71Sopenharmony_ci
5519e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
5520e41f4b71Sopenharmony_ci
5521e41f4b71Sopenharmony_ci**Parameters**
5522e41f4b71Sopenharmony_ci
5523e41f4b71Sopenharmony_ci| Name| Type    | Mandatory| Description                |
5524e41f4b71Sopenharmony_ci| ------ | -------- | ---- | -------------------- |
5525e41f4b71Sopenharmony_ci| dataIn | string[] | Yes  | String array to read.|
5526e41f4b71Sopenharmony_ci
5527e41f4b71Sopenharmony_ci**Example**
5528e41f4b71Sopenharmony_ci
5529e41f4b71Sopenharmony_ci  ```ts
5530e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
5531e41f4b71Sopenharmony_ci
5532e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
5533e41f4b71Sopenharmony_ci  let result = data.writeStringArray(["abc", "def"]);
5534e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: writeStringArray is ' + result);
5535e41f4b71Sopenharmony_ci  let array: Array<string> = new Array(2);
5536e41f4b71Sopenharmony_ci  data.readStringArray(array);
5537e41f4b71Sopenharmony_ci  ```
5538e41f4b71Sopenharmony_ci
5539e41f4b71Sopenharmony_ci### readStringArray
5540e41f4b71Sopenharmony_ci
5541e41f4b71Sopenharmony_cireadStringArray(): string[]
5542e41f4b71Sopenharmony_ci
5543e41f4b71Sopenharmony_ciReads the string array from this **MessageParcel** object.
5544e41f4b71Sopenharmony_ci
5545e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
5546e41f4b71Sopenharmony_ci
5547e41f4b71Sopenharmony_ci**Return value**
5548e41f4b71Sopenharmony_ci
5549e41f4b71Sopenharmony_ci| Type    | Description            |
5550e41f4b71Sopenharmony_ci| -------- | ---------------- |
5551e41f4b71Sopenharmony_ci| string[] | String array read.|
5552e41f4b71Sopenharmony_ci
5553e41f4b71Sopenharmony_ci**Example**
5554e41f4b71Sopenharmony_ci
5555e41f4b71Sopenharmony_ci  ```ts
5556e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
5557e41f4b71Sopenharmony_ci
5558e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
5559e41f4b71Sopenharmony_ci  let result = data.writeStringArray(["abc", "def"]);
5560e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: writeStringArray is ' + result);
5561e41f4b71Sopenharmony_ci  let array = data.readStringArray();
5562e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: readStringArray is ' + array);
5563e41f4b71Sopenharmony_ci  ```
5564e41f4b71Sopenharmony_ci
5565e41f4b71Sopenharmony_ci### writeNoException<sup>8+</sup>
5566e41f4b71Sopenharmony_ci
5567e41f4b71Sopenharmony_ciwriteNoException(): void
5568e41f4b71Sopenharmony_ci
5569e41f4b71Sopenharmony_ciWrites information to this **MessageParcel** object indicating that no exception occurred.
5570e41f4b71Sopenharmony_ci
5571e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
5572e41f4b71Sopenharmony_ci
5573e41f4b71Sopenharmony_ci**Example**
5574e41f4b71Sopenharmony_ci
5575e41f4b71Sopenharmony_ci  ```ts
5576e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
5577e41f4b71Sopenharmony_ci
5578e41f4b71Sopenharmony_ci  class MyDeathRecipient implements rpc.DeathRecipient {
5579e41f4b71Sopenharmony_ci    onRemoteDied() {
5580e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'server died');
5581e41f4b71Sopenharmony_ci    }
5582e41f4b71Sopenharmony_ci  }
5583e41f4b71Sopenharmony_ci  class TestRemoteObject extends rpc.RemoteObject {
5584e41f4b71Sopenharmony_ci    constructor(descriptor: string) {
5585e41f4b71Sopenharmony_ci      super(descriptor);
5586e41f4b71Sopenharmony_ci    }
5587e41f4b71Sopenharmony_ci    addDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
5588e41f4b71Sopenharmony_ci      return true;
5589e41f4b71Sopenharmony_ci    }
5590e41f4b71Sopenharmony_ci    removeDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
5591e41f4b71Sopenharmony_ci      return true;
5592e41f4b71Sopenharmony_ci    }
5593e41f4b71Sopenharmony_ci    isObjectDead(): boolean {
5594e41f4b71Sopenharmony_ci      return false;
5595e41f4b71Sopenharmony_ci    }
5596e41f4b71Sopenharmony_ci    onRemoteRequest(code: number, data: rpc.MessageParcel, reply: rpc.MessageParcel, option: rpc.MessageOption): boolean {
5597e41f4b71Sopenharmony_ci      if (code === 1) {
5598e41f4b71Sopenharmony_ci        hilog.info(0x0000, 'testTag', 'RpcServer: onRemoteRequest called');
5599e41f4b71Sopenharmony_ci        reply.writeNoException();
5600e41f4b71Sopenharmony_ci        return true;
5601e41f4b71Sopenharmony_ci      } else {
5602e41f4b71Sopenharmony_ci        hilog.error(0x0000, 'testTag', 'RpcServer: unknown code: ' + code);
5603e41f4b71Sopenharmony_ci        return false;
5604e41f4b71Sopenharmony_ci      }
5605e41f4b71Sopenharmony_ci    }
5606e41f4b71Sopenharmony_ci  }
5607e41f4b71Sopenharmony_ci  ```
5608e41f4b71Sopenharmony_ci
5609e41f4b71Sopenharmony_ci### readException<sup>8+</sup>
5610e41f4b71Sopenharmony_ci
5611e41f4b71Sopenharmony_cireadException(): void
5612e41f4b71Sopenharmony_ci
5613e41f4b71Sopenharmony_ciReads the exception information from this **MessageParcel** object.
5614e41f4b71Sopenharmony_ci
5615e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
5616e41f4b71Sopenharmony_ci
5617e41f4b71Sopenharmony_ci**Example**
5618e41f4b71Sopenharmony_ci
5619e41f4b71Sopenharmony_ci  ```ts
5620e41f4b71Sopenharmony_ci  // If the FA model is used, import featureAbility from @kit.AbilityKit.
5621e41f4b71Sopenharmony_ci  // import { featureAbility } from '@kit.AbilityKit';
5622e41f4b71Sopenharmony_ci  import { Want, common } from '@kit.AbilityKit';
5623e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
5624e41f4b71Sopenharmony_ci
5625e41f4b71Sopenharmony_ci  let proxy: rpc.IRemoteObject | undefined;
5626e41f4b71Sopenharmony_ci  let connect: common.ConnectOptions = {
5627e41f4b71Sopenharmony_ci    onConnect: (elementName, remoteProxy) => {
5628e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcClient: js onConnect called');
5629e41f4b71Sopenharmony_ci      proxy = remoteProxy;
5630e41f4b71Sopenharmony_ci    },
5631e41f4b71Sopenharmony_ci    onDisconnect: (elementName) => {
5632e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcClient: onDisconnect');
5633e41f4b71Sopenharmony_ci    },
5634e41f4b71Sopenharmony_ci    onFailed: () => {
5635e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcClient: onFailed');
5636e41f4b71Sopenharmony_ci    }
5637e41f4b71Sopenharmony_ci  };
5638e41f4b71Sopenharmony_ci  let want: Want = {
5639e41f4b71Sopenharmony_ci    bundleName: "com.ohos.server",
5640e41f4b71Sopenharmony_ci    abilityName: "com.ohos.server.EntryAbility",
5641e41f4b71Sopenharmony_ci  };
5642e41f4b71Sopenharmony_ci
5643e41f4b71Sopenharmony_ci  // Use this method to connect to the ability for the FA model.
5644e41f4b71Sopenharmony_ci  // FA.connectAbility(want,connect);
5645e41f4b71Sopenharmony_ci
5646e41f4b71Sopenharmony_ci  // Save the connection ID, which will be used for the subsequent service disconnection.
5647e41f4b71Sopenharmony_ci  let context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext; // UIAbilityContext
5648e41f4b71Sopenharmony_ci  // Save the connection ID, which will be used for the subsequent service disconnection.
5649e41f4b71Sopenharmony_ci  let connectionId = context.connectServiceExtensionAbility(want, connect);
5650e41f4b71Sopenharmony_ci  ```
5651e41f4b71Sopenharmony_ci
5652e41f4b71Sopenharmony_ci  The proxy object in the **onConnect** callback can be assigned a value only after the ability is connected asynchronously. Then, **sendMessageRequest()** of the proxy object is called to send a message.
5653e41f4b71Sopenharmony_ci
5654e41f4b71Sopenharmony_ci  ```ts
5655e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
5656e41f4b71Sopenharmony_ci
5657e41f4b71Sopenharmony_ci  let option = new rpc.MessageOption();
5658e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
5659e41f4b71Sopenharmony_ci  let reply = rpc.MessageParcel.create();
5660e41f4b71Sopenharmony_ci  data.writeNoException();
5661e41f4b71Sopenharmony_ci  data.writeString('hello');
5662e41f4b71Sopenharmony_ci  if (proxy != undefined) {
5663e41f4b71Sopenharmony_ci    let a = proxy.sendRequest(1, data, reply, option) as Object;
5664e41f4b71Sopenharmony_ci    let b = a as Promise<rpc.SendRequestResult>;
5665e41f4b71Sopenharmony_ci    b.then((result: rpc.SendRequestResult) => {
5666e41f4b71Sopenharmony_ci      if (result.errCode === 0) {
5667e41f4b71Sopenharmony_ci        hilog.info(0x0000, 'testTag', 'sendRequest got result');
5668e41f4b71Sopenharmony_ci        result.reply.readException();
5669e41f4b71Sopenharmony_ci        let msg = result.reply.readString();
5670e41f4b71Sopenharmony_ci        hilog.info(0x0000, 'testTag', 'RPCTest: reply msg: ' + msg);
5671e41f4b71Sopenharmony_ci      } else {
5672e41f4b71Sopenharmony_ci        hilog.error(0x0000, 'testTag', 'RPCTest: sendRequest failed, errCode: ' + result.errCode);
5673e41f4b71Sopenharmony_ci      }
5674e41f4b71Sopenharmony_ci    }).catch((e: Error) => {
5675e41f4b71Sopenharmony_ci      hilog.error(0x0000, 'testTag', 'RPCTest: sendRequest got exception: ' + e.message);
5676e41f4b71Sopenharmony_ci    }).finally (() => {
5677e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RPCTest: sendRequest ends, reclaim parcel');
5678e41f4b71Sopenharmony_ci      data.reclaim();
5679e41f4b71Sopenharmony_ci      reply.reclaim();
5680e41f4b71Sopenharmony_ci    });
5681e41f4b71Sopenharmony_ci  }
5682e41f4b71Sopenharmony_ci  ```
5683e41f4b71Sopenharmony_ci
5684e41f4b71Sopenharmony_ci### writeSequenceableArray
5685e41f4b71Sopenharmony_ci
5686e41f4b71Sopenharmony_ciwriteSequenceableArray(sequenceableArray: Sequenceable[]): boolean
5687e41f4b71Sopenharmony_ci
5688e41f4b71Sopenharmony_ciWrites a sequenceable array to this **MessageParcel** object.
5689e41f4b71Sopenharmony_ci
5690e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
5691e41f4b71Sopenharmony_ci
5692e41f4b71Sopenharmony_ci**Parameters**
5693e41f4b71Sopenharmony_ci
5694e41f4b71Sopenharmony_ci| Name           | Type                                     | Mandatory| Description                      |
5695e41f4b71Sopenharmony_ci| ----------------- | ----------------------------------------- | ---- | -------------------------- |
5696e41f4b71Sopenharmony_ci| sequenceableArray | [Sequenceable](#sequenceabledeprecated)[] | Yes  | Sequenceable array to write.|
5697e41f4b71Sopenharmony_ci
5698e41f4b71Sopenharmony_ci**Return value**
5699e41f4b71Sopenharmony_ci
5700e41f4b71Sopenharmony_ci| Type   | Description                            |
5701e41f4b71Sopenharmony_ci| ------- | -------------------------------- |
5702e41f4b71Sopenharmony_ci| boolean | Returns **true** if the data is written successfully; returns **false** otherwise.|
5703e41f4b71Sopenharmony_ci
5704e41f4b71Sopenharmony_ci**Example**
5705e41f4b71Sopenharmony_ci
5706e41f4b71Sopenharmony_ci  ```ts
5707e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
5708e41f4b71Sopenharmony_ci
5709e41f4b71Sopenharmony_ci  class MySequenceable implements rpc.Sequenceable {
5710e41f4b71Sopenharmony_ci    num: number = 0;
5711e41f4b71Sopenharmony_ci    str: string = '';
5712e41f4b71Sopenharmony_ci    constructor(num: number, str: string) {
5713e41f4b71Sopenharmony_ci      this.num = num;
5714e41f4b71Sopenharmony_ci      this.str = str;
5715e41f4b71Sopenharmony_ci    }
5716e41f4b71Sopenharmony_ci    marshalling(messageParcel: rpc.MessageParcel): boolean {
5717e41f4b71Sopenharmony_ci      messageParcel.writeInt(this.num);
5718e41f4b71Sopenharmony_ci      messageParcel.writeString(this.str);
5719e41f4b71Sopenharmony_ci      return true;
5720e41f4b71Sopenharmony_ci    }
5721e41f4b71Sopenharmony_ci    unmarshalling(messageParcel: rpc.MessageParcel): boolean {
5722e41f4b71Sopenharmony_ci      this.num = messageParcel.readInt();
5723e41f4b71Sopenharmony_ci      this.str = messageParcel.readString();
5724e41f4b71Sopenharmony_ci      return true;
5725e41f4b71Sopenharmony_ci    }
5726e41f4b71Sopenharmony_ci  }
5727e41f4b71Sopenharmony_ci  let sequenceable = new MySequenceable(1, "aaa");
5728e41f4b71Sopenharmony_ci  let sequenceable2 = new MySequenceable(2, "bbb");
5729e41f4b71Sopenharmony_ci  let sequenceable3 = new MySequenceable(3, "ccc");
5730e41f4b71Sopenharmony_ci  let a = [sequenceable, sequenceable2, sequenceable3];
5731e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
5732e41f4b71Sopenharmony_ci  let result = data.writeSequenceableArray(a);
5733e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: writeSequenceableArray is ' + result);
5734e41f4b71Sopenharmony_ci  ```
5735e41f4b71Sopenharmony_ci
5736e41f4b71Sopenharmony_ci### readSequenceableArray<sup>8+</sup>
5737e41f4b71Sopenharmony_ci
5738e41f4b71Sopenharmony_cireadSequenceableArray(sequenceableArray: Sequenceable[]): void
5739e41f4b71Sopenharmony_ci
5740e41f4b71Sopenharmony_ciReads a sequenceable array from this **MessageParcel** object.
5741e41f4b71Sopenharmony_ci
5742e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
5743e41f4b71Sopenharmony_ci
5744e41f4b71Sopenharmony_ci**Parameters**
5745e41f4b71Sopenharmony_ci
5746e41f4b71Sopenharmony_ci| Name           | Type                                     | Mandatory| Description                      |
5747e41f4b71Sopenharmony_ci| ----------------- | ----------------------------------------- | ---- | -------------------------- |
5748e41f4b71Sopenharmony_ci| sequenceableArray | [Sequenceable](#sequenceabledeprecated)[] | Yes  | Sequenceable array to read.|
5749e41f4b71Sopenharmony_ci
5750e41f4b71Sopenharmony_ci**Example**
5751e41f4b71Sopenharmony_ci
5752e41f4b71Sopenharmony_ci  ```ts
5753e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
5754e41f4b71Sopenharmony_ci
5755e41f4b71Sopenharmony_ci  class MySequenceable implements rpc.Sequenceable {
5756e41f4b71Sopenharmony_ci    num: number = 0;
5757e41f4b71Sopenharmony_ci    str: string = '';
5758e41f4b71Sopenharmony_ci    constructor(num: number, str: string) {
5759e41f4b71Sopenharmony_ci      this.num = num;
5760e41f4b71Sopenharmony_ci      this.str = str;
5761e41f4b71Sopenharmony_ci    }
5762e41f4b71Sopenharmony_ci    marshalling(messageParcel: rpc.MessageParcel): boolean {
5763e41f4b71Sopenharmony_ci      messageParcel.writeInt(this.num);
5764e41f4b71Sopenharmony_ci      messageParcel.writeString(this.str);
5765e41f4b71Sopenharmony_ci      return true;
5766e41f4b71Sopenharmony_ci    }
5767e41f4b71Sopenharmony_ci    unmarshalling(messageParcel: rpc.MessageParcel): boolean {
5768e41f4b71Sopenharmony_ci      this.num = messageParcel.readInt();
5769e41f4b71Sopenharmony_ci      this.str = messageParcel.readString();
5770e41f4b71Sopenharmony_ci      return true;
5771e41f4b71Sopenharmony_ci    }
5772e41f4b71Sopenharmony_ci  }
5773e41f4b71Sopenharmony_ci  let sequenceable = new MySequenceable(1, "aaa");
5774e41f4b71Sopenharmony_ci  let sequenceable2 = new MySequenceable(2, "bbb");
5775e41f4b71Sopenharmony_ci  let sequenceable3 = new MySequenceable(3, "ccc");
5776e41f4b71Sopenharmony_ci  let a = [sequenceable, sequenceable2, sequenceable3];
5777e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
5778e41f4b71Sopenharmony_ci  let result = data.writeSequenceableArray(a);
5779e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: writeSequenceableArray is ' + result);
5780e41f4b71Sopenharmony_ci  let b = [new MySequenceable(0, ""), new MySequenceable(0, ""), new MySequenceable(0, "")];
5781e41f4b71Sopenharmony_ci  data.readSequenceableArray(b);
5782e41f4b71Sopenharmony_ci  ```
5783e41f4b71Sopenharmony_ci
5784e41f4b71Sopenharmony_ci### writeRemoteObjectArray<sup>8+</sup>
5785e41f4b71Sopenharmony_ci
5786e41f4b71Sopenharmony_ciwriteRemoteObjectArray(objectArray: IRemoteObject[]): boolean
5787e41f4b71Sopenharmony_ci
5788e41f4b71Sopenharmony_ciWrites an array of **IRemoteObject** objects to this **MessageParcel** object.
5789e41f4b71Sopenharmony_ci
5790e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
5791e41f4b71Sopenharmony_ci
5792e41f4b71Sopenharmony_ci**Parameters**
5793e41f4b71Sopenharmony_ci
5794e41f4b71Sopenharmony_ci| Name     | Type           | Mandatory| Description |
5795e41f4b71Sopenharmony_ci| ----------- | --------------- | ---- | ----- |
5796e41f4b71Sopenharmony_ci| objectArray | [IRemoteObject](#iremoteobject)[] | Yes  | Array of **IRemoteObject** objects to write.|
5797e41f4b71Sopenharmony_ci
5798e41f4b71Sopenharmony_ci**Return value**
5799e41f4b71Sopenharmony_ci
5800e41f4b71Sopenharmony_ci| Type   | Description                                                                                                                |
5801e41f4b71Sopenharmony_ci| ------- | -------------------------------- |
5802e41f4b71Sopenharmony_ci| boolean | Returns **true** if the data is written successfully; returns **false** otherwise.|
5803e41f4b71Sopenharmony_ci
5804e41f4b71Sopenharmony_ci**Example**
5805e41f4b71Sopenharmony_ci
5806e41f4b71Sopenharmony_ci  ```ts
5807e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
5808e41f4b71Sopenharmony_ci
5809e41f4b71Sopenharmony_ci  class MyDeathRecipient implements rpc.DeathRecipient {
5810e41f4b71Sopenharmony_ci    onRemoteDied() {
5811e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'server died');
5812e41f4b71Sopenharmony_ci    }
5813e41f4b71Sopenharmony_ci  }
5814e41f4b71Sopenharmony_ci  class TestRemoteObject extends rpc.RemoteObject {
5815e41f4b71Sopenharmony_ci    constructor(descriptor: string) {
5816e41f4b71Sopenharmony_ci      super(descriptor);
5817e41f4b71Sopenharmony_ci      this.attachLocalInterface(this, descriptor);
5818e41f4b71Sopenharmony_ci    }
5819e41f4b71Sopenharmony_ci    addDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
5820e41f4b71Sopenharmony_ci      return true;
5821e41f4b71Sopenharmony_ci    }
5822e41f4b71Sopenharmony_ci    removeDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
5823e41f4b71Sopenharmony_ci      return true;
5824e41f4b71Sopenharmony_ci    }
5825e41f4b71Sopenharmony_ci    isObjectDead(): boolean {
5826e41f4b71Sopenharmony_ci      return false;
5827e41f4b71Sopenharmony_ci    }
5828e41f4b71Sopenharmony_ci    asObject(): rpc.IRemoteObject {
5829e41f4b71Sopenharmony_ci      return this;
5830e41f4b71Sopenharmony_ci    }
5831e41f4b71Sopenharmony_ci  }
5832e41f4b71Sopenharmony_ci  let a = [new TestRemoteObject("testObject1"), new TestRemoteObject("testObject2"), new TestRemoteObject("testObject3")];
5833e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
5834e41f4b71Sopenharmony_ci  let result = data.writeRemoteObjectArray(a);
5835e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: writeRemoteObjectArray is ' + result);
5836e41f4b71Sopenharmony_ci  ```
5837e41f4b71Sopenharmony_ci
5838e41f4b71Sopenharmony_ci### readRemoteObjectArray<sup>8+</sup>
5839e41f4b71Sopenharmony_ci
5840e41f4b71Sopenharmony_cireadRemoteObjectArray(objects: IRemoteObject[]): void
5841e41f4b71Sopenharmony_ci
5842e41f4b71Sopenharmony_ciReads an **IRemoteObject** array from this **MessageParcel** object.
5843e41f4b71Sopenharmony_ci
5844e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
5845e41f4b71Sopenharmony_ci
5846e41f4b71Sopenharmony_ci**Parameters**
5847e41f4b71Sopenharmony_ci
5848e41f4b71Sopenharmony_ci| Name | Type           | Mandatory| Description     |
5849e41f4b71Sopenharmony_ci| ------- | --------------- | ---- | --------- |
5850e41f4b71Sopenharmony_ci| objects | [IRemoteObject](#iremoteobject)[] | Yes  | **IRemoteObject** array to read.|
5851e41f4b71Sopenharmony_ci
5852e41f4b71Sopenharmony_ci**Example**
5853e41f4b71Sopenharmony_ci
5854e41f4b71Sopenharmony_ci  ```ts
5855e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
5856e41f4b71Sopenharmony_ci
5857e41f4b71Sopenharmony_ci  class MyDeathRecipient implements rpc.DeathRecipient {
5858e41f4b71Sopenharmony_ci    onRemoteDied() {
5859e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'server died');
5860e41f4b71Sopenharmony_ci    }
5861e41f4b71Sopenharmony_ci  }
5862e41f4b71Sopenharmony_ci  class TestRemoteObject extends rpc.RemoteObject {
5863e41f4b71Sopenharmony_ci    constructor(descriptor: string) {
5864e41f4b71Sopenharmony_ci      super(descriptor);
5865e41f4b71Sopenharmony_ci      this.attachLocalInterface(this, descriptor);
5866e41f4b71Sopenharmony_ci    }
5867e41f4b71Sopenharmony_ci    addDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
5868e41f4b71Sopenharmony_ci      return true;
5869e41f4b71Sopenharmony_ci    }
5870e41f4b71Sopenharmony_ci    removeDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
5871e41f4b71Sopenharmony_ci      return true;
5872e41f4b71Sopenharmony_ci    }
5873e41f4b71Sopenharmony_ci    isObjectDead(): boolean {
5874e41f4b71Sopenharmony_ci      return false;
5875e41f4b71Sopenharmony_ci    }
5876e41f4b71Sopenharmony_ci    asObject(): rpc.IRemoteObject {
5877e41f4b71Sopenharmony_ci      return this;
5878e41f4b71Sopenharmony_ci    }
5879e41f4b71Sopenharmony_ci  }
5880e41f4b71Sopenharmony_ci  let a = [new TestRemoteObject("testObject1"), new TestRemoteObject("testObject2"), new TestRemoteObject("testObject3")];
5881e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
5882e41f4b71Sopenharmony_ci  data.writeRemoteObjectArray(a);
5883e41f4b71Sopenharmony_ci  let b: Array<rpc.IRemoteObject> = new Array(3);
5884e41f4b71Sopenharmony_ci  data.readRemoteObjectArray(b);
5885e41f4b71Sopenharmony_ci  ```
5886e41f4b71Sopenharmony_ci
5887e41f4b71Sopenharmony_ci### readRemoteObjectArray<sup>8+</sup>
5888e41f4b71Sopenharmony_ci
5889e41f4b71Sopenharmony_cireadRemoteObjectArray(): IRemoteObject[]
5890e41f4b71Sopenharmony_ci
5891e41f4b71Sopenharmony_ciReads the **IRemoteObject** array from this **MessageParcel** object.
5892e41f4b71Sopenharmony_ci
5893e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
5894e41f4b71Sopenharmony_ci
5895e41f4b71Sopenharmony_ci**Return value**
5896e41f4b71Sopenharmony_ci
5897e41f4b71Sopenharmony_ci| Type           | Description                       |
5898e41f4b71Sopenharmony_ci| --------------- | --------------------------- |
5899e41f4b71Sopenharmony_ci| [IRemoteObject](#iremoteobject)[] | **IRemoteObject** object array obtained.|
5900e41f4b71Sopenharmony_ci
5901e41f4b71Sopenharmony_ci**Example**
5902e41f4b71Sopenharmony_ci
5903e41f4b71Sopenharmony_ci  ```ts
5904e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
5905e41f4b71Sopenharmony_ci
5906e41f4b71Sopenharmony_ci  class MyDeathRecipient implements rpc.DeathRecipient {
5907e41f4b71Sopenharmony_ci    onRemoteDied() {
5908e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'server died');
5909e41f4b71Sopenharmony_ci    }
5910e41f4b71Sopenharmony_ci  }
5911e41f4b71Sopenharmony_ci  class TestRemoteObject extends rpc.RemoteObject {
5912e41f4b71Sopenharmony_ci    constructor(descriptor: string) {
5913e41f4b71Sopenharmony_ci      super(descriptor);
5914e41f4b71Sopenharmony_ci      this.attachLocalInterface(this, descriptor);
5915e41f4b71Sopenharmony_ci    }
5916e41f4b71Sopenharmony_ci    addDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
5917e41f4b71Sopenharmony_ci      return true;
5918e41f4b71Sopenharmony_ci    }
5919e41f4b71Sopenharmony_ci    removeDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
5920e41f4b71Sopenharmony_ci      return true;
5921e41f4b71Sopenharmony_ci    }
5922e41f4b71Sopenharmony_ci    isObjectDead(): boolean {
5923e41f4b71Sopenharmony_ci      return false;
5924e41f4b71Sopenharmony_ci    }
5925e41f4b71Sopenharmony_ci    asObject(): rpc.IRemoteObject {
5926e41f4b71Sopenharmony_ci      return this;
5927e41f4b71Sopenharmony_ci    }
5928e41f4b71Sopenharmony_ci  }
5929e41f4b71Sopenharmony_ci  let a = [new TestRemoteObject("testObject1"), new TestRemoteObject("testObject2"), new TestRemoteObject("testObject3")];
5930e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
5931e41f4b71Sopenharmony_ci  let result = data.writeRemoteObjectArray(a);
5932e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: readRemoteObjectArray is ' + result);
5933e41f4b71Sopenharmony_ci  let b = data.readRemoteObjectArray();
5934e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: readRemoteObjectArray is ' + b);
5935e41f4b71Sopenharmony_ci  ```
5936e41f4b71Sopenharmony_ci
5937e41f4b71Sopenharmony_ci### closeFileDescriptor<sup>8+</sup>
5938e41f4b71Sopenharmony_ci
5939e41f4b71Sopenharmony_cistatic closeFileDescriptor(fd: number): void
5940e41f4b71Sopenharmony_ci
5941e41f4b71Sopenharmony_ciCloses a file descriptor. This API is a static method.
5942e41f4b71Sopenharmony_ci
5943e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
5944e41f4b71Sopenharmony_ci
5945e41f4b71Sopenharmony_ci**Parameters**
5946e41f4b71Sopenharmony_ci
5947e41f4b71Sopenharmony_ci| Name| Type  | Mandatory| Description                |
5948e41f4b71Sopenharmony_ci| ------ | ------ | ---- | -------------------- |
5949e41f4b71Sopenharmony_ci| fd     | number | Yes  | File descriptor to close.|
5950e41f4b71Sopenharmony_ci
5951e41f4b71Sopenharmony_ci**Example**
5952e41f4b71Sopenharmony_ci
5953e41f4b71Sopenharmony_ci  ```ts
5954e41f4b71Sopenharmony_ci  import { fileIo } from '@kit.CoreFileKit';
5955e41f4b71Sopenharmony_ci
5956e41f4b71Sopenharmony_ci  let filePath = "path/to/file";
5957e41f4b71Sopenharmony_ci  let file = fileIo.openSync(filePath, fileIo.OpenMode.READ_WRITE | fileIo.OpenMode.CREATE);
5958e41f4b71Sopenharmony_ci  rpc.MessageParcel.closeFileDescriptor(file.fd);
5959e41f4b71Sopenharmony_ci  ```
5960e41f4b71Sopenharmony_ci
5961e41f4b71Sopenharmony_ci### dupFileDescriptor<sup>8+</sup>
5962e41f4b71Sopenharmony_ci
5963e41f4b71Sopenharmony_cistatic dupFileDescriptor(fd: number) :number
5964e41f4b71Sopenharmony_ci
5965e41f4b71Sopenharmony_ciDuplicates a file descriptor. This API is a static method.
5966e41f4b71Sopenharmony_ci
5967e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
5968e41f4b71Sopenharmony_ci
5969e41f4b71Sopenharmony_ci**Parameters**
5970e41f4b71Sopenharmony_ci
5971e41f4b71Sopenharmony_ci| Name| Type  | Mandatory| Description                    |
5972e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------ |
5973e41f4b71Sopenharmony_ci| fd     | number | Yes  | File descriptor to duplicate.|
5974e41f4b71Sopenharmony_ci
5975e41f4b71Sopenharmony_ci**Return value**
5976e41f4b71Sopenharmony_ci
5977e41f4b71Sopenharmony_ci| Type  | Description                |
5978e41f4b71Sopenharmony_ci| ------ | -------------------- |
5979e41f4b71Sopenharmony_ci| number | New file descriptor.|
5980e41f4b71Sopenharmony_ci
5981e41f4b71Sopenharmony_ci**Example**
5982e41f4b71Sopenharmony_ci
5983e41f4b71Sopenharmony_ci  ```ts
5984e41f4b71Sopenharmony_ci  import { fileIo } from '@kit.CoreFileKit';
5985e41f4b71Sopenharmony_ci
5986e41f4b71Sopenharmony_ci  let filePath = "path/to/file";
5987e41f4b71Sopenharmony_ci  let file = fileIo.openSync(filePath, fileIo.OpenMode.READ_WRITE | fileIo.OpenMode.CREATE);
5988e41f4b71Sopenharmony_ci  rpc.MessageParcel.dupFileDescriptor(file.fd);
5989e41f4b71Sopenharmony_ci  ```
5990e41f4b71Sopenharmony_ci
5991e41f4b71Sopenharmony_ci### containFileDescriptors<sup>8+</sup>
5992e41f4b71Sopenharmony_ci
5993e41f4b71Sopenharmony_cicontainFileDescriptors(): boolean
5994e41f4b71Sopenharmony_ci
5995e41f4b71Sopenharmony_ciChecks whether this **MessageParcel** object contains file descriptors.
5996e41f4b71Sopenharmony_ci
5997e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
5998e41f4b71Sopenharmony_ci
5999e41f4b71Sopenharmony_ci**Return value**
6000e41f4b71Sopenharmony_ci
6001e41f4b71Sopenharmony_ci| Type   | Description                                         |
6002e41f4b71Sopenharmony_ci| ------- | --------------------------------------------- |
6003e41f4b71Sopenharmony_ci| boolean |Returns **true** if the **MessageParcel** object contains file descriptors; returns **false** otherwise.|
6004e41f4b71Sopenharmony_ci
6005e41f4b71Sopenharmony_ci**Example**
6006e41f4b71Sopenharmony_ci
6007e41f4b71Sopenharmony_ci  ```ts
6008e41f4b71Sopenharmony_ci  import { fileIo } from '@kit.CoreFileKit';
6009e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
6010e41f4b71Sopenharmony_ci
6011e41f4b71Sopenharmony_ci  let parcel = new rpc.MessageParcel();
6012e41f4b71Sopenharmony_ci  let filePath = "path/to/file";
6013e41f4b71Sopenharmony_ci  let file = fileIo.openSync(filePath, fileIo.OpenMode.READ_WRITE | fileIo.OpenMode.CREATE);
6014e41f4b71Sopenharmony_ci  let writeResult = parcel.writeFileDescriptor(file.fd);
6015e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcTest: parcel writeFd result is ' + writeResult);
6016e41f4b71Sopenharmony_ci  let containFD = parcel.containFileDescriptors();
6017e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcTest: parcel after write fd containFd result is ' + containFD);
6018e41f4b71Sopenharmony_ci  ```
6019e41f4b71Sopenharmony_ci
6020e41f4b71Sopenharmony_ci### writeFileDescriptor<sup>8+</sup>
6021e41f4b71Sopenharmony_ci
6022e41f4b71Sopenharmony_ciwriteFileDescriptor(fd: number): boolean
6023e41f4b71Sopenharmony_ci
6024e41f4b71Sopenharmony_ciWrites a file descriptor to this **MessageParcel** object.
6025e41f4b71Sopenharmony_ci
6026e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
6027e41f4b71Sopenharmony_ci
6028e41f4b71Sopenharmony_ci**Parameters**
6029e41f4b71Sopenharmony_ci
6030e41f4b71Sopenharmony_ci| Name| Type  | Mandatory| Description        |
6031e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------ |
6032e41f4b71Sopenharmony_ci| fd     | number | Yes  | File descriptor to write.|
6033e41f4b71Sopenharmony_ci
6034e41f4b71Sopenharmony_ci**Return value**
6035e41f4b71Sopenharmony_ci
6036e41f4b71Sopenharmony_ci| Type   | Description                            |
6037e41f4b71Sopenharmony_ci| ------- | -------------------------------- |
6038e41f4b71Sopenharmony_ci| boolean | Returns **true** if the operation is successful; returns **false** otherwise.|
6039e41f4b71Sopenharmony_ci
6040e41f4b71Sopenharmony_ci**Example**
6041e41f4b71Sopenharmony_ci
6042e41f4b71Sopenharmony_ci  ```ts
6043e41f4b71Sopenharmony_ci  import { fileIo } from '@kit.CoreFileKit';
6044e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
6045e41f4b71Sopenharmony_ci
6046e41f4b71Sopenharmony_ci  let parcel = new rpc.MessageParcel();
6047e41f4b71Sopenharmony_ci  let filePath = "path/to/file";
6048e41f4b71Sopenharmony_ci  let file = fileIo.openSync(filePath, fileIo.OpenMode.READ_WRITE | fileIo.OpenMode.CREATE);
6049e41f4b71Sopenharmony_ci  let writeResult = parcel.writeFileDescriptor(file.fd);
6050e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcTest: parcel writeFd result is ' + writeResult);
6051e41f4b71Sopenharmony_ci  ```
6052e41f4b71Sopenharmony_ci
6053e41f4b71Sopenharmony_ci### readFileDescriptor<sup>8+</sup>
6054e41f4b71Sopenharmony_ci
6055e41f4b71Sopenharmony_cireadFileDescriptor(): number
6056e41f4b71Sopenharmony_ci
6057e41f4b71Sopenharmony_ciReads the file descriptor from this **MessageParcel** object.
6058e41f4b71Sopenharmony_ci
6059e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
6060e41f4b71Sopenharmony_ci
6061e41f4b71Sopenharmony_ci**Return value**
6062e41f4b71Sopenharmony_ci
6063e41f4b71Sopenharmony_ci| Type  | Description            |
6064e41f4b71Sopenharmony_ci| ------ | ---------------- |
6065e41f4b71Sopenharmony_ci| number | File descriptor read.|
6066e41f4b71Sopenharmony_ci
6067e41f4b71Sopenharmony_ci**Example**
6068e41f4b71Sopenharmony_ci
6069e41f4b71Sopenharmony_ci  ```ts
6070e41f4b71Sopenharmony_ci  import { fileIo } from '@kit.CoreFileKit';
6071e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
6072e41f4b71Sopenharmony_ci
6073e41f4b71Sopenharmony_ci  let parcel = new rpc.MessageParcel();
6074e41f4b71Sopenharmony_ci  let filePath = "path/to/file";
6075e41f4b71Sopenharmony_ci  let file = fileIo.openSync(filePath, fileIo.OpenMode.READ_WRITE | fileIo.OpenMode.CREATE);
6076e41f4b71Sopenharmony_ci  parcel.writeFileDescriptor(file.fd);
6077e41f4b71Sopenharmony_ci  let readFD = parcel.readFileDescriptor();
6078e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcTest: parcel read fd is ' + readFD);
6079e41f4b71Sopenharmony_ci  ```
6080e41f4b71Sopenharmony_ci
6081e41f4b71Sopenharmony_ci### writeAshmem<sup>8+</sup>
6082e41f4b71Sopenharmony_ci
6083e41f4b71Sopenharmony_ciwriteAshmem(ashmem: Ashmem): boolean
6084e41f4b71Sopenharmony_ci
6085e41f4b71Sopenharmony_ciWrites an anonymous shared object to this **MessageParcel** object.
6086e41f4b71Sopenharmony_ci
6087e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
6088e41f4b71Sopenharmony_ci
6089e41f4b71Sopenharmony_ci**Parameters**
6090e41f4b71Sopenharmony_ci
6091e41f4b71Sopenharmony_ci| Name| Type  | Mandatory| Description                               |
6092e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ----------------------------------- |
6093e41f4b71Sopenharmony_ci| ashmem | [Ashmem](#ashmem8) | Yes  | Anonymous shared object to write.|
6094e41f4b71Sopenharmony_ci
6095e41f4b71Sopenharmony_ci**Return value**
6096e41f4b71Sopenharmony_ci
6097e41f4b71Sopenharmony_ci| Type   | Description                            |
6098e41f4b71Sopenharmony_ci| ------- | -------------------------------- |
6099e41f4b71Sopenharmony_ci| boolean | Returns **true** if the data is written successfully; returns **false** otherwise.|
6100e41f4b71Sopenharmony_ci
6101e41f4b71Sopenharmony_ci**Example**
6102e41f4b71Sopenharmony_ci
6103e41f4b71Sopenharmony_ci  ```ts
6104e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
6105e41f4b71Sopenharmony_ci
6106e41f4b71Sopenharmony_ci  let parcel = new rpc.MessageParcel();
6107e41f4b71Sopenharmony_ci  let ashmem = rpc.Ashmem.createAshmem("ashmem", 1024);
6108e41f4b71Sopenharmony_ci  let isWriteSuccess = parcel.writeAshmem(ashmem);
6109e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcTest: write ashmem to result is ' + isWriteSuccess);
6110e41f4b71Sopenharmony_ci  ```
6111e41f4b71Sopenharmony_ci
6112e41f4b71Sopenharmony_ci### readAshmem<sup>8+</sup>
6113e41f4b71Sopenharmony_ci
6114e41f4b71Sopenharmony_cireadAshmem(): Ashmem
6115e41f4b71Sopenharmony_ci
6116e41f4b71Sopenharmony_ciReads the anonymous shared object from this **MessageParcel** object.
6117e41f4b71Sopenharmony_ci
6118e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
6119e41f4b71Sopenharmony_ci
6120e41f4b71Sopenharmony_ci**Return value**
6121e41f4b71Sopenharmony_ci
6122e41f4b71Sopenharmony_ci| Type  | Description              |
6123e41f4b71Sopenharmony_ci| ------ | ------------------ |
6124e41f4b71Sopenharmony_ci| [Ashmem](#ashmem8) | Anonymous share object obtained.|
6125e41f4b71Sopenharmony_ci
6126e41f4b71Sopenharmony_ci**Example**
6127e41f4b71Sopenharmony_ci
6128e41f4b71Sopenharmony_ci  ```ts
6129e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
6130e41f4b71Sopenharmony_ci
6131e41f4b71Sopenharmony_ci  let parcel = new rpc.MessageParcel();
6132e41f4b71Sopenharmony_ci  let ashmem = rpc.Ashmem.createAshmem("ashmem", 1024);
6133e41f4b71Sopenharmony_ci  let isWriteSuccess = parcel.writeAshmem(ashmem);
6134e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcTest: write ashmem to result is ' + isWriteSuccess);
6135e41f4b71Sopenharmony_ci  let readAshmem = parcel.readAshmem();
6136e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcTest: read ashmem to result is ' + readAshmem);
6137e41f4b71Sopenharmony_ci  ```
6138e41f4b71Sopenharmony_ci
6139e41f4b71Sopenharmony_ci### getRawDataCapacity<sup>8+</sup>
6140e41f4b71Sopenharmony_ci
6141e41f4b71Sopenharmony_cigetRawDataCapacity(): number
6142e41f4b71Sopenharmony_ci
6143e41f4b71Sopenharmony_ciObtains the maximum amount of raw data that can be held by this **MessageParcel** object.
6144e41f4b71Sopenharmony_ci
6145e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
6146e41f4b71Sopenharmony_ci
6147e41f4b71Sopenharmony_ci**Return value**
6148e41f4b71Sopenharmony_ci
6149e41f4b71Sopenharmony_ci| Type  | Description                                                      |
6150e41f4b71Sopenharmony_ci| ------ | ---------------------------------------------------------- |
6151e41f4b71Sopenharmony_ci| number | Maximum amount of raw data that **MessageParcel** can hold, that is, 128 MB.|
6152e41f4b71Sopenharmony_ci
6153e41f4b71Sopenharmony_ci**Example**
6154e41f4b71Sopenharmony_ci
6155e41f4b71Sopenharmony_ci  ```ts
6156e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
6157e41f4b71Sopenharmony_ci
6158e41f4b71Sopenharmony_ci  let parcel = new rpc.MessageParcel();
6159e41f4b71Sopenharmony_ci  let result = parcel.getRawDataCapacity();
6160e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcTest: parcel get RawDataCapacity result is ' + result);
6161e41f4b71Sopenharmony_ci  ```
6162e41f4b71Sopenharmony_ci
6163e41f4b71Sopenharmony_ci### writeRawData<sup>8+</sup>
6164e41f4b71Sopenharmony_ci
6165e41f4b71Sopenharmony_ciwriteRawData(rawData: number[], size: number): boolean
6166e41f4b71Sopenharmony_ci
6167e41f4b71Sopenharmony_ciWrites raw data to this **MessageParcel** object.
6168e41f4b71Sopenharmony_ci
6169e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
6170e41f4b71Sopenharmony_ci
6171e41f4b71Sopenharmony_ci**Parameters**
6172e41f4b71Sopenharmony_ci
6173e41f4b71Sopenharmony_ci| Name | Type    | Mandatory| Description                              |
6174e41f4b71Sopenharmony_ci| ------- | -------- | ---- | ---------------------------------- |
6175e41f4b71Sopenharmony_ci| rawData | number[] | Yes  | Raw data to write.                |
6176e41f4b71Sopenharmony_ci| size    | number   | Yes  | Size of the raw data, in bytes.|
6177e41f4b71Sopenharmony_ci
6178e41f4b71Sopenharmony_ci**Return value**
6179e41f4b71Sopenharmony_ci
6180e41f4b71Sopenharmony_ci| Type   | Description                            |
6181e41f4b71Sopenharmony_ci| ------- | -------------------------------- |
6182e41f4b71Sopenharmony_ci| boolean | Returns **true** if the data is written successfully; returns **false** otherwise.|
6183e41f4b71Sopenharmony_ci
6184e41f4b71Sopenharmony_ci**Example**
6185e41f4b71Sopenharmony_ci
6186e41f4b71Sopenharmony_ci  ```ts
6187e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
6188e41f4b71Sopenharmony_ci
6189e41f4b71Sopenharmony_ci  let parcel = new rpc.MessageParcel();
6190e41f4b71Sopenharmony_ci  let arr = [1, 2, 3, 4, 5];
6191e41f4b71Sopenharmony_ci  let isWriteSuccess = parcel.writeRawData(arr, arr.length);
6192e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcTest: parcel write raw data result is ' + isWriteSuccess);
6193e41f4b71Sopenharmony_ci  ```
6194e41f4b71Sopenharmony_ci
6195e41f4b71Sopenharmony_ci### readRawData<sup>8+</sup>
6196e41f4b71Sopenharmony_ci
6197e41f4b71Sopenharmony_cireadRawData(size: number): number[]
6198e41f4b71Sopenharmony_ci
6199e41f4b71Sopenharmony_ciReads raw data from this **MessageParcel** object.
6200e41f4b71Sopenharmony_ci
6201e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
6202e41f4b71Sopenharmony_ci
6203e41f4b71Sopenharmony_ci**Parameters**
6204e41f4b71Sopenharmony_ci
6205e41f4b71Sopenharmony_ci| Name| Type  | Mandatory| Description                    |
6206e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------ |
6207e41f4b71Sopenharmony_ci| size   | number | Yes  | Size of the raw data to read.|
6208e41f4b71Sopenharmony_ci
6209e41f4b71Sopenharmony_ci**Return value**
6210e41f4b71Sopenharmony_ci
6211e41f4b71Sopenharmony_ci| Type    | Description                          |
6212e41f4b71Sopenharmony_ci| -------- | ------------------------------ |
6213e41f4b71Sopenharmony_ci| number[] | Raw data obtained, in bytes.|
6214e41f4b71Sopenharmony_ci
6215e41f4b71Sopenharmony_ci**Example**
6216e41f4b71Sopenharmony_ci
6217e41f4b71Sopenharmony_ci  ```ts
6218e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
6219e41f4b71Sopenharmony_ci
6220e41f4b71Sopenharmony_ci  let parcel = new rpc.MessageParcel();
6221e41f4b71Sopenharmony_ci  let arr = [1, 2, 3, 4, 5];
6222e41f4b71Sopenharmony_ci  let isWriteSuccess = parcel.writeRawData(arr, arr.length);
6223e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcTest: parcel write raw data result is ' + isWriteSuccess);
6224e41f4b71Sopenharmony_ci  let result = parcel.readRawData(5);
6225e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcTest: parcel read raw data result is ' + result);
6226e41f4b71Sopenharmony_ci  ```
6227e41f4b71Sopenharmony_ci
6228e41f4b71Sopenharmony_ci## Parcelable<sup>9+</sup>
6229e41f4b71Sopenharmony_ci
6230e41f4b71Sopenharmony_ciWrites an object to a **MessageSequence** and reads it from the **MessageSequence** during IPC.
6231e41f4b71Sopenharmony_ci
6232e41f4b71Sopenharmony_ci### marshalling
6233e41f4b71Sopenharmony_ci
6234e41f4b71Sopenharmony_cimarshalling(dataOut: MessageSequence): boolean
6235e41f4b71Sopenharmony_ci
6236e41f4b71Sopenharmony_ciMarshals this **Parcelable** object into a **MessageSequence** object.
6237e41f4b71Sopenharmony_ci
6238e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
6239e41f4b71Sopenharmony_ci
6240e41f4b71Sopenharmony_ci**Parameters**
6241e41f4b71Sopenharmony_ci
6242e41f4b71Sopenharmony_ci| Name | Type           | Mandatory| Description                                       |
6243e41f4b71Sopenharmony_ci| ------- | --------------- | ---- | ------------------------------------------- |
6244e41f4b71Sopenharmony_ci| dataOut |[MessageSequence](#messagesequence9)| Yes  | **MessageSequence** object to which the **Parcelable** object is to be marshaled.|
6245e41f4b71Sopenharmony_ci
6246e41f4b71Sopenharmony_ci**Return value**
6247e41f4b71Sopenharmony_ci
6248e41f4b71Sopenharmony_ci| Type   | Description                            |
6249e41f4b71Sopenharmony_ci| ------- | -------------------------------- |
6250e41f4b71Sopenharmony_ci| boolean | Returns **true** if the operation is successful; returns **false** otherwise.|
6251e41f4b71Sopenharmony_ci
6252e41f4b71Sopenharmony_ci**Example**
6253e41f4b71Sopenharmony_ci
6254e41f4b71Sopenharmony_ci  ```ts
6255e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
6256e41f4b71Sopenharmony_ci
6257e41f4b71Sopenharmony_ci  class MyParcelable implements rpc.Parcelable {
6258e41f4b71Sopenharmony_ci    num: number = 0;
6259e41f4b71Sopenharmony_ci    str: string = '';
6260e41f4b71Sopenharmony_ci    constructor(num: number, str: string) {
6261e41f4b71Sopenharmony_ci      this.num = num;
6262e41f4b71Sopenharmony_ci      this.str = str;
6263e41f4b71Sopenharmony_ci    }
6264e41f4b71Sopenharmony_ci    marshalling(messageSequence: rpc.MessageSequence): boolean {
6265e41f4b71Sopenharmony_ci      messageSequence.writeInt(this.num);
6266e41f4b71Sopenharmony_ci      messageSequence.writeString(this.str);
6267e41f4b71Sopenharmony_ci      return true;
6268e41f4b71Sopenharmony_ci    }
6269e41f4b71Sopenharmony_ci    unmarshalling(messageSequence: rpc.MessageSequence): boolean {
6270e41f4b71Sopenharmony_ci      this.num = messageSequence.readInt();
6271e41f4b71Sopenharmony_ci      this.str = messageSequence.readString();
6272e41f4b71Sopenharmony_ci      return true;
6273e41f4b71Sopenharmony_ci    }
6274e41f4b71Sopenharmony_ci  }
6275e41f4b71Sopenharmony_ci  let parcelable = new MyParcelable(1, "aaa");
6276e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
6277e41f4b71Sopenharmony_ci  let result = data.writeParcelable(parcelable);
6278e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: writeParcelable is ' + result);
6279e41f4b71Sopenharmony_ci  let ret = new MyParcelable(0, "");
6280e41f4b71Sopenharmony_ci  let result2 = data.readParcelable(ret);
6281e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: readParcelable is ' + result2);
6282e41f4b71Sopenharmony_ci  ```
6283e41f4b71Sopenharmony_ci
6284e41f4b71Sopenharmony_ci### unmarshalling
6285e41f4b71Sopenharmony_ci
6286e41f4b71Sopenharmony_ciunmarshalling(dataIn: MessageSequence): boolean
6287e41f4b71Sopenharmony_ci
6288e41f4b71Sopenharmony_ciUnmarshals this **Parcelable** object from a **MessageSequence** object.
6289e41f4b71Sopenharmony_ci
6290e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
6291e41f4b71Sopenharmony_ci
6292e41f4b71Sopenharmony_ci**Parameters**
6293e41f4b71Sopenharmony_ci
6294e41f4b71Sopenharmony_ci| Name| Type           | Mandatory| Description                                           |
6295e41f4b71Sopenharmony_ci| ------ | --------------- | ---- | ----------------------------------------------- |
6296e41f4b71Sopenharmony_ci| dataIn | [MessageSequence](#messagesequence9) | Yes  | **MessageSequence** object from which the **Parcelable** object is to be unmarshaled.|
6297e41f4b71Sopenharmony_ci
6298e41f4b71Sopenharmony_ci**Return value**
6299e41f4b71Sopenharmony_ci
6300e41f4b71Sopenharmony_ci| Type   | Description                                    |
6301e41f4b71Sopenharmony_ci| ------- | ---------------------------------------- |
6302e41f4b71Sopenharmony_ci| boolean | Returns **true** if the operation is successful; returns **false** otherwise.|
6303e41f4b71Sopenharmony_ci
6304e41f4b71Sopenharmony_ci**Example**
6305e41f4b71Sopenharmony_ci
6306e41f4b71Sopenharmony_ci  ```ts
6307e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
6308e41f4b71Sopenharmony_ci
6309e41f4b71Sopenharmony_ci  class MyParcelable implements rpc.Parcelable {
6310e41f4b71Sopenharmony_ci    num: number = 0;
6311e41f4b71Sopenharmony_ci    str: string = '';
6312e41f4b71Sopenharmony_ci    constructor(num: number, str: string) {
6313e41f4b71Sopenharmony_ci      this.num = num;
6314e41f4b71Sopenharmony_ci      this.str = str;
6315e41f4b71Sopenharmony_ci    }
6316e41f4b71Sopenharmony_ci    marshalling(messageSequence: rpc.MessageSequence): boolean {
6317e41f4b71Sopenharmony_ci      messageSequence.writeInt(this.num);
6318e41f4b71Sopenharmony_ci      messageSequence.writeString(this.str);
6319e41f4b71Sopenharmony_ci      return true;
6320e41f4b71Sopenharmony_ci    }
6321e41f4b71Sopenharmony_ci    unmarshalling(messageSequence: rpc.MessageSequence): boolean {
6322e41f4b71Sopenharmony_ci      this.num = messageSequence.readInt();
6323e41f4b71Sopenharmony_ci      this.str = messageSequence.readString();
6324e41f4b71Sopenharmony_ci      return true;
6325e41f4b71Sopenharmony_ci    }
6326e41f4b71Sopenharmony_ci  }
6327e41f4b71Sopenharmony_ci  let parcelable = new MyParcelable(1, "aaa");
6328e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
6329e41f4b71Sopenharmony_ci  let result = data.writeParcelable(parcelable);
6330e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: writeParcelable is ' + result);
6331e41f4b71Sopenharmony_ci  let ret = new MyParcelable(0, "");
6332e41f4b71Sopenharmony_ci  let result2 = data.readParcelable(ret);
6333e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: readParcelable is ' + result2);
6334e41f4b71Sopenharmony_ci  ```
6335e41f4b71Sopenharmony_ci
6336e41f4b71Sopenharmony_ci## Sequenceable<sup>(deprecated)</sup>
6337e41f4b71Sopenharmony_ci
6338e41f4b71Sopenharmony_ci>**NOTE**<br>This class is no longer maintained since API version 9. Use [Parcelable](#parcelable9) instead.
6339e41f4b71Sopenharmony_ci
6340e41f4b71Sopenharmony_ciWrites objects of classes to a **MessageParcel** and reads them from the **MessageParcel** during IPC.
6341e41f4b71Sopenharmony_ci
6342e41f4b71Sopenharmony_ci### marshalling
6343e41f4b71Sopenharmony_ci
6344e41f4b71Sopenharmony_cimarshalling(dataOut: MessageParcel): boolean
6345e41f4b71Sopenharmony_ci
6346e41f4b71Sopenharmony_ciMarshals the sequenceable object into a **MessageParcel** object.
6347e41f4b71Sopenharmony_ci
6348e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
6349e41f4b71Sopenharmony_ci
6350e41f4b71Sopenharmony_ci**Parameters**
6351e41f4b71Sopenharmony_ci
6352e41f4b71Sopenharmony_ci| Name | Type                                     | Mandatory| Description                                     |
6353e41f4b71Sopenharmony_ci| ------- | ----------------------------------------- | ---- | ----------------------------------------- |
6354e41f4b71Sopenharmony_ci| dataOut | [MessageParcel](#messageparceldeprecated) | Yes  | **MessageParcel** object to which the sequenceable object is to be marshaled.|
6355e41f4b71Sopenharmony_ci
6356e41f4b71Sopenharmony_ci**Return value**
6357e41f4b71Sopenharmony_ci
6358e41f4b71Sopenharmony_ci| Type   | Description                             |
6359e41f4b71Sopenharmony_ci| ------- | --------------------------------  |
6360e41f4b71Sopenharmony_ci| boolean | Returns **true** if the operation is successful; returns **false** otherwise.|
6361e41f4b71Sopenharmony_ci
6362e41f4b71Sopenharmony_ci**Example**
6363e41f4b71Sopenharmony_ci
6364e41f4b71Sopenharmony_ci  ```ts
6365e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
6366e41f4b71Sopenharmony_ci
6367e41f4b71Sopenharmony_ci  class MySequenceable implements rpc.Sequenceable {
6368e41f4b71Sopenharmony_ci    num: number = 0;
6369e41f4b71Sopenharmony_ci    str: string = '';
6370e41f4b71Sopenharmony_ci    constructor(num: number, str: string) {
6371e41f4b71Sopenharmony_ci      this.num = num;
6372e41f4b71Sopenharmony_ci      this.str = str;
6373e41f4b71Sopenharmony_ci    }
6374e41f4b71Sopenharmony_ci    marshalling(messageParcel: rpc.MessageParcel): boolean {
6375e41f4b71Sopenharmony_ci      messageParcel.writeInt(this.num);
6376e41f4b71Sopenharmony_ci      messageParcel.writeString(this.str);
6377e41f4b71Sopenharmony_ci      return true;
6378e41f4b71Sopenharmony_ci    }
6379e41f4b71Sopenharmony_ci    unmarshalling(messageParcel: rpc.MessageParcel): boolean {
6380e41f4b71Sopenharmony_ci      this.num = messageParcel.readInt();
6381e41f4b71Sopenharmony_ci      this.str = messageParcel.readString();
6382e41f4b71Sopenharmony_ci      return true;
6383e41f4b71Sopenharmony_ci    }
6384e41f4b71Sopenharmony_ci  }
6385e41f4b71Sopenharmony_ci  let sequenceable = new MySequenceable(1, "aaa");
6386e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
6387e41f4b71Sopenharmony_ci  let result = data.writeSequenceable(sequenceable);
6388e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: writeSequenceable is ' + result);
6389e41f4b71Sopenharmony_ci  let ret = new MySequenceable(0, "");
6390e41f4b71Sopenharmony_ci  let result2 = data.readSequenceable(ret);
6391e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: readSequenceable is ' + result2);
6392e41f4b71Sopenharmony_ci  ```
6393e41f4b71Sopenharmony_ci
6394e41f4b71Sopenharmony_ci### unmarshalling
6395e41f4b71Sopenharmony_ci
6396e41f4b71Sopenharmony_ciunmarshalling(dataIn: MessageParcel): boolean
6397e41f4b71Sopenharmony_ci
6398e41f4b71Sopenharmony_ciUnmarshals this sequenceable object from a **MessageParcel** object.
6399e41f4b71Sopenharmony_ci
6400e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
6401e41f4b71Sopenharmony_ci
6402e41f4b71Sopenharmony_ci**Parameters**
6403e41f4b71Sopenharmony_ci
6404e41f4b71Sopenharmony_ci| Name| Type                                     | Mandatory| Description                                         |
6405e41f4b71Sopenharmony_ci| ------ | ----------------------------------------- | ---- | --------------------------------------------- |
6406e41f4b71Sopenharmony_ci| dataIn | [MessageParcel](#messageparceldeprecated) | Yes  | **MessageParcel** object in which the sequenceable object is to be unmarshaled.|
6407e41f4b71Sopenharmony_ci
6408e41f4b71Sopenharmony_ci**Return value**
6409e41f4b71Sopenharmony_ci
6410e41f4b71Sopenharmony_ci| Type   | Description                                    |
6411e41f4b71Sopenharmony_ci| ------- | ---------------------------------------- |
6412e41f4b71Sopenharmony_ci| boolean | Returns **true** if the operation is successful; returns **false** otherwise.|
6413e41f4b71Sopenharmony_ci
6414e41f4b71Sopenharmony_ci**Example**
6415e41f4b71Sopenharmony_ci
6416e41f4b71Sopenharmony_ci  ```ts
6417e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
6418e41f4b71Sopenharmony_ci
6419e41f4b71Sopenharmony_ci  class MySequenceable implements rpc.Sequenceable {
6420e41f4b71Sopenharmony_ci    num: number = 0;
6421e41f4b71Sopenharmony_ci    str: string = '';
6422e41f4b71Sopenharmony_ci    constructor(num: number, str: string) {
6423e41f4b71Sopenharmony_ci      this.num = num;
6424e41f4b71Sopenharmony_ci      this.str = str;
6425e41f4b71Sopenharmony_ci    }
6426e41f4b71Sopenharmony_ci    marshalling(messageParcel: rpc.MessageParcel): boolean {
6427e41f4b71Sopenharmony_ci      messageParcel.writeInt(this.num);
6428e41f4b71Sopenharmony_ci      messageParcel.writeString(this.str);
6429e41f4b71Sopenharmony_ci      return true;
6430e41f4b71Sopenharmony_ci    }
6431e41f4b71Sopenharmony_ci    unmarshalling(messageParcel: rpc.MessageParcel): boolean {
6432e41f4b71Sopenharmony_ci      this.num = messageParcel.readInt();
6433e41f4b71Sopenharmony_ci      this.str = messageParcel.readString();
6434e41f4b71Sopenharmony_ci      return true;
6435e41f4b71Sopenharmony_ci    }
6436e41f4b71Sopenharmony_ci  }
6437e41f4b71Sopenharmony_ci  let sequenceable = new MySequenceable(1, "aaa");
6438e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
6439e41f4b71Sopenharmony_ci  let result = data.writeSequenceable(sequenceable);
6440e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: writeSequenceable is ' + result);
6441e41f4b71Sopenharmony_ci  let ret = new MySequenceable(0, "");
6442e41f4b71Sopenharmony_ci  let result2 = data.readSequenceable(ret);
6443e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcClient: readSequenceable is ' + result2);
6444e41f4b71Sopenharmony_ci  ```
6445e41f4b71Sopenharmony_ci
6446e41f4b71Sopenharmony_ci## IRemoteBroker
6447e41f4b71Sopenharmony_ci
6448e41f4b71Sopenharmony_ciProvides the holder of a remote proxy object.
6449e41f4b71Sopenharmony_ci
6450e41f4b71Sopenharmony_ci### asObject
6451e41f4b71Sopenharmony_ci
6452e41f4b71Sopenharmony_ciasObject(): IRemoteObject
6453e41f4b71Sopenharmony_ci
6454e41f4b71Sopenharmony_ciObtains a proxy or remote object. This API must be implemented by its derived classes.
6455e41f4b71Sopenharmony_ci
6456e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
6457e41f4b71Sopenharmony_ci
6458e41f4b71Sopenharmony_ci**Return value**
6459e41f4b71Sopenharmony_ci
6460e41f4b71Sopenharmony_ci| Type | Description |
6461e41f4b71Sopenharmony_ci| ----- | ----- |
6462e41f4b71Sopenharmony_ci| [IRemoteObject](#iremoteobject) | Returns the **RemoteObject** if it is the caller; returns the [IRemoteObject](#iremoteobject), the holder of this **RemoteProxy** object, if the caller is a [RemoteProxy](#remoteproxy) object.|
6463e41f4b71Sopenharmony_ci
6464e41f4b71Sopenharmony_ci**Example**
6465e41f4b71Sopenharmony_ci
6466e41f4b71Sopenharmony_ci  ```ts
6467e41f4b71Sopenharmony_ci  class TestAbility extends rpc.RemoteObject {
6468e41f4b71Sopenharmony_ci    asObject() {
6469e41f4b71Sopenharmony_ci      return this;
6470e41f4b71Sopenharmony_ci    }
6471e41f4b71Sopenharmony_ci  }
6472e41f4b71Sopenharmony_ci  let remoteObject = new TestAbility("testObject").asObject();
6473e41f4b71Sopenharmony_ci  ```
6474e41f4b71Sopenharmony_ci
6475e41f4b71Sopenharmony_ci**Example**
6476e41f4b71Sopenharmony_ci
6477e41f4b71Sopenharmony_ci  ```ts
6478e41f4b71Sopenharmony_ci  // If the FA model is used, import featureAbility from @kit.AbilityKit.
6479e41f4b71Sopenharmony_ci  // import { featureAbility } from '@kit.AbilityKit';
6480e41f4b71Sopenharmony_ci  import { Want, common } from '@kit.AbilityKit';
6481e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
6482e41f4b71Sopenharmony_ci
6483e41f4b71Sopenharmony_ci  let proxy: rpc.IRemoteObject | undefined;
6484e41f4b71Sopenharmony_ci  let connect: common.ConnectOptions = {
6485e41f4b71Sopenharmony_ci    onConnect: (elementName, remoteProxy) => {
6486e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcClient: js onConnect called');
6487e41f4b71Sopenharmony_ci      proxy = remoteProxy;
6488e41f4b71Sopenharmony_ci    },
6489e41f4b71Sopenharmony_ci    onDisconnect: (elementName) => {
6490e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcClient: onDisconnect');
6491e41f4b71Sopenharmony_ci    },
6492e41f4b71Sopenharmony_ci    onFailed: () => {
6493e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcClient: onFailed');
6494e41f4b71Sopenharmony_ci    }
6495e41f4b71Sopenharmony_ci  };
6496e41f4b71Sopenharmony_ci  let want: Want  = {
6497e41f4b71Sopenharmony_ci    bundleName: "com.ohos.server",
6498e41f4b71Sopenharmony_ci    abilityName: "com.ohos.server.EntryAbility",
6499e41f4b71Sopenharmony_ci  };
6500e41f4b71Sopenharmony_ci
6501e41f4b71Sopenharmony_ci  // Use this method to connect to the ability for the FA model.
6502e41f4b71Sopenharmony_ci  // FA.connectAbility(want,connect);
6503e41f4b71Sopenharmony_ci
6504e41f4b71Sopenharmony_ci  // Save the connection ID, which will be used for the subsequent service disconnection.
6505e41f4b71Sopenharmony_ci  let context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext; // UIAbilityContext
6506e41f4b71Sopenharmony_ci  // Save the connection ID, which will be used for the subsequent service disconnection.
6507e41f4b71Sopenharmony_ci  let connectionId = context.connectServiceExtensionAbility(want, connect);
6508e41f4b71Sopenharmony_ci  ```
6509e41f4b71Sopenharmony_ci
6510e41f4b71Sopenharmony_ci  The proxy object in the **onConnect** callback can be assigned a value only after the ability is connected asynchronously. Then, **asObject()** of the proxy object is called to obtain the proxy or remote object.
6511e41f4b71Sopenharmony_ci
6512e41f4b71Sopenharmony_ci  ```ts
6513e41f4b71Sopenharmony_ci  class TestProxy {
6514e41f4b71Sopenharmony_ci    remote: rpc.IRemoteObject;
6515e41f4b71Sopenharmony_ci    constructor(remote: rpc.IRemoteObject) {
6516e41f4b71Sopenharmony_ci      this.remote = remote;
6517e41f4b71Sopenharmony_ci    }
6518e41f4b71Sopenharmony_ci    asObject() {
6519e41f4b71Sopenharmony_ci      return this.remote;
6520e41f4b71Sopenharmony_ci    }
6521e41f4b71Sopenharmony_ci  }
6522e41f4b71Sopenharmony_ci  if (proxy != undefined) {
6523e41f4b71Sopenharmony_ci    let iRemoteObject = new TestProxy(proxy).asObject();
6524e41f4b71Sopenharmony_ci  }
6525e41f4b71Sopenharmony_ci  ```
6526e41f4b71Sopenharmony_ci
6527e41f4b71Sopenharmony_ci## DeathRecipient
6528e41f4b71Sopenharmony_ci
6529e41f4b71Sopenharmony_ciSubscribes to death notifications of a remote object. When the remote object is dead, the local end will receive a notification and **[onRemoteDied](#onremotedied)** will be called. A remote object is dead when the process holding the object is terminated or the device of the remote object is shut down or restarted. If the local and remote objects belong to different devices, the remote object is dead when the device holding the remote object is detached from the network. 
6530e41f4b71Sopenharmony_ci
6531e41f4b71Sopenharmony_ci### onRemoteDied
6532e41f4b71Sopenharmony_ci
6533e41f4b71Sopenharmony_cionRemoteDied(): void
6534e41f4b71Sopenharmony_ci
6535e41f4b71Sopenharmony_ciCalled to perform subsequent operations when a death notification of the remote object is received.
6536e41f4b71Sopenharmony_ci
6537e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
6538e41f4b71Sopenharmony_ci
6539e41f4b71Sopenharmony_ci**Example**
6540e41f4b71Sopenharmony_ci
6541e41f4b71Sopenharmony_ci  ```ts
6542e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
6543e41f4b71Sopenharmony_ci
6544e41f4b71Sopenharmony_ci  class MyDeathRecipient implements rpc.DeathRecipient {
6545e41f4b71Sopenharmony_ci    onRemoteDied() {
6546e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'server died');
6547e41f4b71Sopenharmony_ci    }
6548e41f4b71Sopenharmony_ci  }
6549e41f4b71Sopenharmony_ci  ```
6550e41f4b71Sopenharmony_ci
6551e41f4b71Sopenharmony_ci## RequestResult<sup>9+</sup>
6552e41f4b71Sopenharmony_ci
6553e41f4b71Sopenharmony_ciDefines the response to the request.
6554e41f4b71Sopenharmony_ci
6555e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
6556e41f4b71Sopenharmony_ci
6557e41f4b71Sopenharmony_ci| Name   | Type           | Readable| Writable| Description                                 |
6558e41f4b71Sopenharmony_ci| ------- | --------------- | ---- | ---- |-------------------------------------- |
6559e41f4b71Sopenharmony_ci| errCode | number          | Yes  | No  | Error code.                             |
6560e41f4b71Sopenharmony_ci| code    | number          | Yes  | No  | Message code.                           |
6561e41f4b71Sopenharmony_ci| data    | [MessageSequence](#messagesequence9) | Yes  | No  | **MessageSequence** object sent to the remote process.|
6562e41f4b71Sopenharmony_ci| reply   | [MessageSequence](#messagesequence9) | Yes  | No  | **MessageSequence** object returned by the remote process.  |
6563e41f4b71Sopenharmony_ci
6564e41f4b71Sopenharmony_ci## SendRequestResult<sup>8+(deprecated)</sup>
6565e41f4b71Sopenharmony_ci
6566e41f4b71Sopenharmony_ci>**NOTE**<br>This API is no longer maintained since API version 9. Use [RequestResult](#requestresult9) instead.
6567e41f4b71Sopenharmony_ci
6568e41f4b71Sopenharmony_ciDefines the response to the request.
6569e41f4b71Sopenharmony_ci
6570e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
6571e41f4b71Sopenharmony_ci
6572e41f4b71Sopenharmony_ci| Name   | Type         | Readable| Writable| Description                               |
6573e41f4b71Sopenharmony_ci| ------- | ------------- | ---- | ---- | ----------------------------------- |
6574e41f4b71Sopenharmony_ci| errCode | number        | Yes  | No  | Error code.                           |
6575e41f4b71Sopenharmony_ci| code    | number        | Yes  | No  | Message code.                         |
6576e41f4b71Sopenharmony_ci| data    | [MessageParcel](#messageparceldeprecated) | Yes  | No  | **MessageParcel** object sent to the remote process.|
6577e41f4b71Sopenharmony_ci| reply   | [MessageParcel](#messageparceldeprecated) | Yes  | No  | **MessageParcel** object returned by the remote process.  |
6578e41f4b71Sopenharmony_ci
6579e41f4b71Sopenharmony_ci## IRemoteObject
6580e41f4b71Sopenharmony_ci
6581e41f4b71Sopenharmony_ciProvides methods to query of obtain interface descriptors, add or delete death notifications, dump object status to specific files, and send messages.
6582e41f4b71Sopenharmony_ci
6583e41f4b71Sopenharmony_ci### getLocalInterface<sup>9+</sup>
6584e41f4b71Sopenharmony_ci
6585e41f4b71Sopenharmony_cigetLocalInterface(descriptor: string): IRemoteBroker
6586e41f4b71Sopenharmony_ci
6587e41f4b71Sopenharmony_ciObtains the string of the interface descriptor.
6588e41f4b71Sopenharmony_ci
6589e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
6590e41f4b71Sopenharmony_ci
6591e41f4b71Sopenharmony_ci**Parameters**
6592e41f4b71Sopenharmony_ci
6593e41f4b71Sopenharmony_ci| Name    | Type  | Mandatory| Description                |
6594e41f4b71Sopenharmony_ci| ---------- | ------ | ---- | -------------------- |
6595e41f4b71Sopenharmony_ci| descriptor | string | Yes  | Interface descriptor.|
6596e41f4b71Sopenharmony_ci
6597e41f4b71Sopenharmony_ci**Return value**
6598e41f4b71Sopenharmony_ci
6599e41f4b71Sopenharmony_ci| Type         | Description                                         |
6600e41f4b71Sopenharmony_ci| ------------- | --------------------------------------------- |
6601e41f4b71Sopenharmony_ci| [IRemoteBroker](#iremotebroker) | **IRemoteBroker** object bound to the specified interface token.|
6602e41f4b71Sopenharmony_ci
6603e41f4b71Sopenharmony_ci**Error codes**
6604e41f4b71Sopenharmony_ci
6605e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
6606e41f4b71Sopenharmony_ci
6607e41f4b71Sopenharmony_ci| ID| Error Message|
6608e41f4b71Sopenharmony_ci| -------- | -------- |
6609e41f4b71Sopenharmony_ci| 401      | check param failed |
6610e41f4b71Sopenharmony_ci
6611e41f4b71Sopenharmony_ci### queryLocalInterface<sup>(deprecated)</sup>
6612e41f4b71Sopenharmony_ci
6613e41f4b71Sopenharmony_ci>**NOTE**<br>This API is no longer maintained since API version 9. Use [getLocalInterface](#getlocalinterface9) instead.
6614e41f4b71Sopenharmony_ci
6615e41f4b71Sopenharmony_ciqueryLocalInterface(descriptor: string): IRemoteBroker
6616e41f4b71Sopenharmony_ci
6617e41f4b71Sopenharmony_ciQueries the string of the interface descriptor.
6618e41f4b71Sopenharmony_ci
6619e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
6620e41f4b71Sopenharmony_ci
6621e41f4b71Sopenharmony_ci**Parameters**
6622e41f4b71Sopenharmony_ci
6623e41f4b71Sopenharmony_ci| Name    | Type  | Mandatory| Description                |
6624e41f4b71Sopenharmony_ci| ---------- | ------ | ---- | -------------------- |
6625e41f4b71Sopenharmony_ci| descriptor | string | Yes  | Interface descriptor.|
6626e41f4b71Sopenharmony_ci
6627e41f4b71Sopenharmony_ci**Return value**
6628e41f4b71Sopenharmony_ci
6629e41f4b71Sopenharmony_ci| Type         | Description                                         |
6630e41f4b71Sopenharmony_ci| ------------- | --------------------------------------------- |
6631e41f4b71Sopenharmony_ci| [IRemoteBroker](#iremotebroker) | **IRemoteBroker** object bound to the specified interface token.|
6632e41f4b71Sopenharmony_ci
6633e41f4b71Sopenharmony_ci### sendRequest<sup>(deprecated)</sup>
6634e41f4b71Sopenharmony_ci
6635e41f4b71Sopenharmony_ci>**NOTE**<br>This API is no longer maintained since API version 8. Use [sendMessageRequest](#sendmessagerequest9) instead.
6636e41f4b71Sopenharmony_ci
6637e41f4b71Sopenharmony_cisendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption): boolean
6638e41f4b71Sopenharmony_ci
6639e41f4b71Sopenharmony_ciSends a **MessageParcel** message to the remote process in synchronous or asynchronous mode. If asynchronous mode is set in **options**, a promise will be fulfilled immediately and the reply message does not contain any content. If synchronous mode is set in **options** , a promise will be fulfilled when the response to **sendRequest** is returned, and the reply message contains the returned information.
6640e41f4b71Sopenharmony_ci
6641e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
6642e41f4b71Sopenharmony_ci
6643e41f4b71Sopenharmony_ci**Parameters**
6644e41f4b71Sopenharmony_ci
6645e41f4b71Sopenharmony_ci| Name | Type                                     | Mandatory| Description                                                                                  |
6646e41f4b71Sopenharmony_ci| ------- | ----------------------------------------- | ---- | -------------------------------------------------------------------------------------- |
6647e41f4b71Sopenharmony_ci| code    | number                                    | Yes  | Message code (1-16777215) called by the request, which is determined by the communication parties. If the method is generated by an IDL tool, the message code is automatically generated by the IDL tool.|
6648e41f4b71Sopenharmony_ci| data    | [MessageParcel](#messageparceldeprecated) | Yes  | **MessageParcel** object holding the data to send.                                             |
6649e41f4b71Sopenharmony_ci| reply   | [MessageParcel](#messageparceldeprecated) | Yes  | **MessageParcel** object that receives the response.                                                     |
6650e41f4b71Sopenharmony_ci| options | [MessageOption](#messageoption)           | Yes  | Request sending mode, which can be synchronous (default) or asynchronous.                                                  |
6651e41f4b71Sopenharmony_ci
6652e41f4b71Sopenharmony_ci**Return value**
6653e41f4b71Sopenharmony_ci
6654e41f4b71Sopenharmony_ci| Type   | Description                            |
6655e41f4b71Sopenharmony_ci| ------- | -------------------------------- |
6656e41f4b71Sopenharmony_ci| boolean | Returns **true** if the message is sent successfully; returns **false** otherwise.|
6657e41f4b71Sopenharmony_ci
6658e41f4b71Sopenharmony_ci### sendMessageRequest<sup>9+</sup>
6659e41f4b71Sopenharmony_ci
6660e41f4b71Sopenharmony_cisendMessageRequest(code: number, data: MessageSequence, reply: MessageSequence, options: MessageOption): Promise&lt;RequestResult&gt;
6661e41f4b71Sopenharmony_ci
6662e41f4b71Sopenharmony_ciSends a **MessageSequence** message to the remote process in synchronous or asynchronous mode. If asynchronous mode is set in **options**, a promise will be fulfilled immediately and the reply message is empty. The specific reply needs to be obtained from the callback on the service side. If synchronous mode is set in **options**, a promise will be fulfilled when the response to **sendMessageRequest** is returned, and the reply message contains the returned information.
6663e41f4b71Sopenharmony_ci
6664e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
6665e41f4b71Sopenharmony_ci
6666e41f4b71Sopenharmony_ci**Parameters**
6667e41f4b71Sopenharmony_ci
6668e41f4b71Sopenharmony_ci| Name | Type                                | Mandatory| Description                                                                                  |
6669e41f4b71Sopenharmony_ci| ------- | ------------------------------------ | ---- | -------------------------------------------------------------------------------------- |
6670e41f4b71Sopenharmony_ci| code    | number                               | Yes  | Message code (1-16777215) called by the request, which is determined by the communication parties. If the method is generated by an IDL tool, the message code is automatically generated by the IDL tool.|
6671e41f4b71Sopenharmony_ci| data    | [MessageSequence](#messagesequence9) | Yes  | **MessageSequence** object holding the data to send.                                           |
6672e41f4b71Sopenharmony_ci| reply   | [MessageSequence](#messagesequence9) | Yes  | **MessageSequence** object that receives the response.                                                   |
6673e41f4b71Sopenharmony_ci| options | [MessageOption](#messageoption)      | Yes  | Request sending mode, which can be synchronous (default) or asynchronous.                                                  |
6674e41f4b71Sopenharmony_ci
6675e41f4b71Sopenharmony_ci**Return value**
6676e41f4b71Sopenharmony_ci
6677e41f4b71Sopenharmony_ci| Type                        | Description                                     |
6678e41f4b71Sopenharmony_ci| ---------------------------- | ----------------------------------------- |
6679e41f4b71Sopenharmony_ci| Promise&lt;[RequestResult](#requestresult9)&gt; | Promise used to return the **requestResult** object.|
6680e41f4b71Sopenharmony_ci
6681e41f4b71Sopenharmony_ci**Error codes**
6682e41f4b71Sopenharmony_ci
6683e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
6684e41f4b71Sopenharmony_ci
6685e41f4b71Sopenharmony_ci| ID| Error Message|
6686e41f4b71Sopenharmony_ci| -------- | -------- |
6687e41f4b71Sopenharmony_ci| 401      | check param failed |
6688e41f4b71Sopenharmony_ci
6689e41f4b71Sopenharmony_ci### sendRequest<sup>8+(deprecated)</sup>
6690e41f4b71Sopenharmony_ci
6691e41f4b71Sopenharmony_ci>**NOTE**<br>This API is no longer maintained since API version 9. Use [sendMessageRequest](#sendmessagerequest9) instead.
6692e41f4b71Sopenharmony_ci
6693e41f4b71Sopenharmony_cisendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption): Promise&lt;SendRequestResult&gt;
6694e41f4b71Sopenharmony_ci
6695e41f4b71Sopenharmony_ciSends a **MessageParcel** message to the remote process in synchronous or asynchronous mode. If asynchronous mode is set in **options**, a promise will be fulfilled immediately and the reply message is empty. The specific reply needs to be obtained from the callback on the service side. If synchronous mode is set in **options**, a promise will be fulfilled when the response to **sendRequest** is returned, and the reply message contains the returned information.
6696e41f4b71Sopenharmony_ci
6697e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
6698e41f4b71Sopenharmony_ci
6699e41f4b71Sopenharmony_ci**Parameters**
6700e41f4b71Sopenharmony_ci
6701e41f4b71Sopenharmony_ci| Name | Type                                     | Mandatory| Description                                                                                  |
6702e41f4b71Sopenharmony_ci| ------- | ----------------------------------------  | ---- | -------------------------------------------------------------------------------------- |
6703e41f4b71Sopenharmony_ci| code    | number                                    | Yes  | Message code (1-16777215) called by the request, which is determined by the communication parties. If the method is generated by an IDL tool, the message code is automatically generated by the IDL tool.|
6704e41f4b71Sopenharmony_ci| data    | [MessageParcel](#messageparceldeprecated) | Yes  | **MessageParcel** object holding the data to send.                                              |
6705e41f4b71Sopenharmony_ci| reply   | [MessageParcel](#messageparceldeprecated) | Yes  | **MessageParcel** object that receives the response.                                                     |
6706e41f4b71Sopenharmony_ci| options | [MessageOption](#messageoption)           | Yes  | Request sending mode, which can be synchronous (default) or asynchronous.                                                  |
6707e41f4b71Sopenharmony_ci
6708e41f4b71Sopenharmony_ci**Return value**
6709e41f4b71Sopenharmony_ci
6710e41f4b71Sopenharmony_ci| Type                                                        | Description                                         |
6711e41f4b71Sopenharmony_ci| ------------------------------------------------------------ | --------------------------------------------- |
6712e41f4b71Sopenharmony_ci| Promise&lt;[SendRequestResult](#sendrequestresult8deprecated)&gt; | Promise used to return the **sendRequestResult** object.|
6713e41f4b71Sopenharmony_ci
6714e41f4b71Sopenharmony_ci### sendMessageRequest<sup>9+</sup>
6715e41f4b71Sopenharmony_ci
6716e41f4b71Sopenharmony_cisendMessageRequest(code: number, data: MessageSequence, reply: MessageSequence, options: MessageOption, callback: AsyncCallback&lt;RequestResult&gt;): void
6717e41f4b71Sopenharmony_ci
6718e41f4b71Sopenharmony_ciSends a **MessageSequence** message to the remote process in synchronous or asynchronous mode. If asynchronous mode is set in **options**, a callback will be called immediately, and the reply message is empty. The specific reply needs to be obtained from the callback on the service side. If synchronous mode is set in **options**, a callback will be invoked when the response to sendRequest is returned, and the reply message contains the returned information.
6719e41f4b71Sopenharmony_ci
6720e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
6721e41f4b71Sopenharmony_ci
6722e41f4b71Sopenharmony_ci**Parameters**
6723e41f4b71Sopenharmony_ci
6724e41f4b71Sopenharmony_ci| Name  | Type                                | Mandatory| Description                                                                                  |
6725e41f4b71Sopenharmony_ci| -------- | ------------------------------------ | ---- | -------------------------------------------------------------------------------------- |
6726e41f4b71Sopenharmony_ci| code     | number                               | Yes  | Message code (1-16777215) called by the request, which is determined by the communication parties. If the method is generated by an IDL tool, the message code is automatically generated by the IDL tool.|
6727e41f4b71Sopenharmony_ci| data     | [MessageSequence](#messagesequence9) | Yes  | **MessageSequence** object holding the data to send.                                            |
6728e41f4b71Sopenharmony_ci| reply    | [MessageSequence](#messagesequence9) | Yes  | **MessageSequence** object that receives the response.                                                   |
6729e41f4b71Sopenharmony_ci| options  | [MessageOption](#messageoption)      | Yes  | Request sending mode, which can be synchronous (default) or asynchronous.                                                  |
6730e41f4b71Sopenharmony_ci| callback | AsyncCallback&lt;[RequestResult](#requestresult9)&gt;   | Yes  | Callback for receiving the sending result.                                                                  |
6731e41f4b71Sopenharmony_ci
6732e41f4b71Sopenharmony_ci**Error codes**
6733e41f4b71Sopenharmony_ci
6734e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
6735e41f4b71Sopenharmony_ci
6736e41f4b71Sopenharmony_ci| ID| Error Message|
6737e41f4b71Sopenharmony_ci| -------- | -------- |
6738e41f4b71Sopenharmony_ci| 401      | check param failed |
6739e41f4b71Sopenharmony_ci
6740e41f4b71Sopenharmony_ci### sendRequest<sup>8+(deprecated)</sup>
6741e41f4b71Sopenharmony_ci
6742e41f4b71Sopenharmony_ci>**NOTE**<br>This API is no longer maintained since API version 9. Use [sendMessageRequest](#sendmessagerequest9-1) instead.
6743e41f4b71Sopenharmony_ci
6744e41f4b71Sopenharmony_cisendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption, callback: AsyncCallback&lt;SendRequestResult&gt;): void
6745e41f4b71Sopenharmony_ci
6746e41f4b71Sopenharmony_ciSends a **MessageParcel** message to the remote process in synchronous or asynchronous mode. If asynchronous mode is set in **options**, a callback will be called immediately, and the reply message is empty. The specific reply needs to be obtained from the callback on the service side. If synchronous mode is set in **options**, a callback will be invoked when the response to sendRequest is returned, and the reply message contains the returned information.
6747e41f4b71Sopenharmony_ci
6748e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
6749e41f4b71Sopenharmony_ci
6750e41f4b71Sopenharmony_ci**Parameters**
6751e41f4b71Sopenharmony_ci
6752e41f4b71Sopenharmony_ci| Name  | Type                                                        | Mandatory| Description                                                        |
6753e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
6754e41f4b71Sopenharmony_ci| code     | number                                                       | Yes  | Message code (1-16777215) called by the request, which is determined by the communication parties. If the method is generated by an IDL tool, the message code is automatically generated by the IDL tool.|
6755e41f4b71Sopenharmony_ci| data     | [MessageParcel](#messageparceldeprecated)                    | Yes  | **MessageParcel** object holding the data to send.                    |
6756e41f4b71Sopenharmony_ci| reply    | [MessageParcel](#messageparceldeprecated)                    | Yes  | **MessageParcel** object that receives the response.                           |
6757e41f4b71Sopenharmony_ci| options  | [MessageOption](#messageoption)                              | Yes  | Request sending mode, which can be synchronous (default) or asynchronous.                        |
6758e41f4b71Sopenharmony_ci| callback | AsyncCallback&lt;[SendRequestResult](#sendrequestresult8deprecated)&gt; | Yes  | Callback for receiving the sending result.                                        |
6759e41f4b71Sopenharmony_ci
6760e41f4b71Sopenharmony_ci### registerDeathRecipient<sup>9+</sup>
6761e41f4b71Sopenharmony_ci
6762e41f4b71Sopenharmony_ciregisterDeathRecipient(recipient: DeathRecipient, flags: number): void
6763e41f4b71Sopenharmony_ci
6764e41f4b71Sopenharmony_ciRegisters a callback for receiving death notifications of the remote object. The callback will be called if the remote object process matching the **RemoteProxy** object is killed.
6765e41f4b71Sopenharmony_ci
6766e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
6767e41f4b71Sopenharmony_ci
6768e41f4b71Sopenharmony_ci**Parameters**
6769e41f4b71Sopenharmony_ci
6770e41f4b71Sopenharmony_ci| Name   | Type                             | Mandatory| Description          |
6771e41f4b71Sopenharmony_ci| --------- | --------------------------------- | ---- | -------------- |
6772e41f4b71Sopenharmony_ci| recipient | [DeathRecipient](#deathrecipient) | Yes  | Callback to register.|
6773e41f4b71Sopenharmony_ci| flags     | number                            | Yes  | Flag of the death notification.|
6774e41f4b71Sopenharmony_ci
6775e41f4b71Sopenharmony_ci**Error codes**
6776e41f4b71Sopenharmony_ci
6777e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
6778e41f4b71Sopenharmony_ci
6779e41f4b71Sopenharmony_ci| ID| Error Message|
6780e41f4b71Sopenharmony_ci| -------- | -------- |
6781e41f4b71Sopenharmony_ci| 401      | check param failed |
6782e41f4b71Sopenharmony_ci| 1900008  | proxy or remote object is invalid |
6783e41f4b71Sopenharmony_ci
6784e41f4b71Sopenharmony_ci### addDeathrecipient<sup>(deprecated)</sup>
6785e41f4b71Sopenharmony_ci
6786e41f4b71Sopenharmony_ci>**NOTE**<br>This API is no longer maintained since API version 9. Use [registerDeathRecipient](#registerdeathrecipient9) instead.
6787e41f4b71Sopenharmony_ci
6788e41f4b71Sopenharmony_ciaddDeathRecipient(recipient: DeathRecipient, flags: number): boolean
6789e41f4b71Sopenharmony_ci
6790e41f4b71Sopenharmony_ciAdds a callback for receiving death notifications of the remote object. This method is called if the remote object process matching the **RemoteProxy** object is killed.
6791e41f4b71Sopenharmony_ci
6792e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
6793e41f4b71Sopenharmony_ci
6794e41f4b71Sopenharmony_ci**Parameters**
6795e41f4b71Sopenharmony_ci
6796e41f4b71Sopenharmony_ci| Name   | Type                             | Mandatory| Description          |
6797e41f4b71Sopenharmony_ci| --------- | --------------------------------- | ---- | -------------- |
6798e41f4b71Sopenharmony_ci| recipient | [DeathRecipient](#deathrecipient) | Yes  | Callback to add.|
6799e41f4b71Sopenharmony_ci| flags     | number                            | Yes  | Flag of the death notification.|
6800e41f4b71Sopenharmony_ci
6801e41f4b71Sopenharmony_ci**Return value**
6802e41f4b71Sopenharmony_ci
6803e41f4b71Sopenharmony_ci| Type   | Description                                    |
6804e41f4b71Sopenharmony_ci| ------- | ---------------------------------------- |
6805e41f4b71Sopenharmony_ci| boolean | Returns **true** if the callback is added successfully; returns **false** otherwise.|
6806e41f4b71Sopenharmony_ci
6807e41f4b71Sopenharmony_ci### unregisterDeathRecipient<sup>9+</sup>
6808e41f4b71Sopenharmony_ci
6809e41f4b71Sopenharmony_ciunregisterDeathRecipient(recipient: DeathRecipient, flags: number): void
6810e41f4b71Sopenharmony_ci
6811e41f4b71Sopenharmony_ciUnregisters the callback used to receive death notifications of the remote object.
6812e41f4b71Sopenharmony_ci
6813e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
6814e41f4b71Sopenharmony_ci
6815e41f4b71Sopenharmony_ci**Parameters**
6816e41f4b71Sopenharmony_ci
6817e41f4b71Sopenharmony_ci| Name   | Type                             | Mandatory| Description          |
6818e41f4b71Sopenharmony_ci| --------- | --------------------------------- | ---- | -------------- |
6819e41f4b71Sopenharmony_ci| recipient | [DeathRecipient](#deathrecipient) | Yes  | Callback to unregister.|
6820e41f4b71Sopenharmony_ci| flags     | number                            | Yes  | Flag of the death notification.|
6821e41f4b71Sopenharmony_ci
6822e41f4b71Sopenharmony_ci**Error codes**
6823e41f4b71Sopenharmony_ci
6824e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
6825e41f4b71Sopenharmony_ci
6826e41f4b71Sopenharmony_ci| ID| Error Message|
6827e41f4b71Sopenharmony_ci| -------- | -------- |
6828e41f4b71Sopenharmony_ci| 401      | check param failed |
6829e41f4b71Sopenharmony_ci| 1900008  | proxy or remote object is invalid |
6830e41f4b71Sopenharmony_ci
6831e41f4b71Sopenharmony_ci### removeDeathRecipient<sup>(deprecated)</sup>
6832e41f4b71Sopenharmony_ci
6833e41f4b71Sopenharmony_ci>**NOTE**<br>This API is no longer maintained since API version 9. Use [unregisterDeathRecipient](#unregisterdeathrecipient9) instead.
6834e41f4b71Sopenharmony_ci
6835e41f4b71Sopenharmony_ciremoveDeathRecipient(recipient: DeathRecipient, flags: number): boolean
6836e41f4b71Sopenharmony_ci
6837e41f4b71Sopenharmony_ciRemoves the callback used to receive death notifications of the remote object.
6838e41f4b71Sopenharmony_ci
6839e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
6840e41f4b71Sopenharmony_ci
6841e41f4b71Sopenharmony_ci**Parameters**
6842e41f4b71Sopenharmony_ci
6843e41f4b71Sopenharmony_ci| Name   | Type                             | Mandatory| Description          |
6844e41f4b71Sopenharmony_ci| --------- | --------------------------------- | ---- | -------------- |
6845e41f4b71Sopenharmony_ci| recipient | [DeathRecipient](#deathrecipient) | Yes  | Callback to remove.|
6846e41f4b71Sopenharmony_ci| flags     | number                            | Yes  | Flag of the death notification.|
6847e41f4b71Sopenharmony_ci
6848e41f4b71Sopenharmony_ci**Return value**
6849e41f4b71Sopenharmony_ci
6850e41f4b71Sopenharmony_ci| Type   | Description                                    |
6851e41f4b71Sopenharmony_ci| ------- | -----------------------------------------|
6852e41f4b71Sopenharmony_ci| boolean | Returns **true** if the callback is removed; returns **false** otherwise.|
6853e41f4b71Sopenharmony_ci
6854e41f4b71Sopenharmony_ci### getDescriptor<sup>9+</sup>
6855e41f4b71Sopenharmony_ci
6856e41f4b71Sopenharmony_cigetDescriptor(): string
6857e41f4b71Sopenharmony_ci
6858e41f4b71Sopenharmony_ciObtains the interface descriptor (which is a string) of this object.
6859e41f4b71Sopenharmony_ci
6860e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
6861e41f4b71Sopenharmony_ci
6862e41f4b71Sopenharmony_ci**Return value**
6863e41f4b71Sopenharmony_ci
6864e41f4b71Sopenharmony_ci| Type  | Description            |
6865e41f4b71Sopenharmony_ci| ------ | ---------------- |
6866e41f4b71Sopenharmony_ci| string | Interface descriptor obtained.|
6867e41f4b71Sopenharmony_ci
6868e41f4b71Sopenharmony_ci**Error codes**
6869e41f4b71Sopenharmony_ci
6870e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
6871e41f4b71Sopenharmony_ci
6872e41f4b71Sopenharmony_ci| ID| Error Message|
6873e41f4b71Sopenharmony_ci| -------- | -------- |
6874e41f4b71Sopenharmony_ci| 1900008  | proxy or remote object is invalid |
6875e41f4b71Sopenharmony_ci
6876e41f4b71Sopenharmony_ci### getInterfaceDescriptor<sup>(deprecated)</sup>
6877e41f4b71Sopenharmony_ci
6878e41f4b71Sopenharmony_ci>**NOTE**<br>This API is no longer maintained since API version 9. Use [getDescriptor](#getdescriptor9) instead.
6879e41f4b71Sopenharmony_ci
6880e41f4b71Sopenharmony_cigetInterfaceDescriptor(): string
6881e41f4b71Sopenharmony_ci
6882e41f4b71Sopenharmony_ciObtains the interface descriptor (which is a string) of this object.
6883e41f4b71Sopenharmony_ci
6884e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
6885e41f4b71Sopenharmony_ci
6886e41f4b71Sopenharmony_ci**Return value**
6887e41f4b71Sopenharmony_ci
6888e41f4b71Sopenharmony_ci| Type  | Description            |
6889e41f4b71Sopenharmony_ci| ------ | ---------------- |
6890e41f4b71Sopenharmony_ci| string | Interface descriptor obtained.|
6891e41f4b71Sopenharmony_ci
6892e41f4b71Sopenharmony_ci### isObjectDead
6893e41f4b71Sopenharmony_ci
6894e41f4b71Sopenharmony_ciisObjectDead(): boolean
6895e41f4b71Sopenharmony_ci
6896e41f4b71Sopenharmony_ciChecks whether this object is dead.
6897e41f4b71Sopenharmony_ci
6898e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
6899e41f4b71Sopenharmony_ci
6900e41f4b71Sopenharmony_ci**Return value**
6901e41f4b71Sopenharmony_ci
6902e41f4b71Sopenharmony_ci| Type   | Description                              |
6903e41f4b71Sopenharmony_ci| ------- | ---------------------------------- |
6904e41f4b71Sopenharmony_ci| boolean | Returns **true** if the object is dead; returns **false** otherwise.|
6905e41f4b71Sopenharmony_ci
6906e41f4b71Sopenharmony_ci
6907e41f4b71Sopenharmony_ci
6908e41f4b71Sopenharmony_ci## RemoteProxy
6909e41f4b71Sopenharmony_ci
6910e41f4b71Sopenharmony_ciProvides APIs to implement **IRemoteObject**.
6911e41f4b71Sopenharmony_ci
6912e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
6913e41f4b71Sopenharmony_ci
6914e41f4b71Sopenharmony_ci| Name                 | Value                     | Description                             |
6915e41f4b71Sopenharmony_ci| --------------------- | ----------------------- | --------------------------------- |
6916e41f4b71Sopenharmony_ci| PING_TRANSACTION      | 1599098439 (0x5f504e47) | Internal instruction code used to test whether the IPC service is normal.|
6917e41f4b71Sopenharmony_ci| DUMP_TRANSACTION      | 1598311760 (0x5f444d50) | Internal instruction code used to obtain the internal status of the binder. |
6918e41f4b71Sopenharmony_ci| INTERFACE_TRANSACTION | 1598968902 (0x5f4e5446) | Internal instruction code used to obtain the remote interface token. |
6919e41f4b71Sopenharmony_ci| MIN_TRANSACTION_ID    | 1 (0x00000001)          | Minimum valid instruction code.                 |
6920e41f4b71Sopenharmony_ci| MAX_TRANSACTION_ID    | 16777215 (0x00FFFFFF)   | Maximum valid instruction code.                 |
6921e41f4b71Sopenharmony_ci
6922e41f4b71Sopenharmony_ci### sendRequest<sup>(deprecated)</sup>
6923e41f4b71Sopenharmony_ci
6924e41f4b71Sopenharmony_ci>**NOTE**<br>This API is no longer maintained since API version 8. Use [sendMessageRequest](#sendmessagerequest9-2) instead.
6925e41f4b71Sopenharmony_ci
6926e41f4b71Sopenharmony_cisendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption): boolean
6927e41f4b71Sopenharmony_ci
6928e41f4b71Sopenharmony_ciSends a **MessageParcel** message to the remote process in synchronous or asynchronous mode. If asynchronous mode is set in **options**, a promise will be fulfilled immediately and the reply message is empty. The specific reply needs to be obtained from the callback on the service side. If synchronous mode is set in **options**, a promise will be fulfilled when the response to **sendRequest** is returned, and the reply message contains the returned information.
6929e41f4b71Sopenharmony_ci
6930e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
6931e41f4b71Sopenharmony_ci
6932e41f4b71Sopenharmony_ci**Parameters**
6933e41f4b71Sopenharmony_ci
6934e41f4b71Sopenharmony_ci| Name | Type                                     | Mandatory| Description                                                                                  |
6935e41f4b71Sopenharmony_ci| ------- | ----------------------------------------- | ---- | -------------------------------------------------------------------------------------- |
6936e41f4b71Sopenharmony_ci| code    | number                                    | Yes  | Message code (1-16777215) called by the request, which is determined by the communication parties. If the method is generated by an IDL tool, the message code is automatically generated by the IDL tool.|
6937e41f4b71Sopenharmony_ci| data    | [MessageParcel](#messageparceldeprecated) | Yes  | **MessageParcel** object holding the data to send.                                             |
6938e41f4b71Sopenharmony_ci| reply   | [MessageParcel](#messageparceldeprecated) | Yes  | **MessageParcel** object that receives the response.                                                     |
6939e41f4b71Sopenharmony_ci| options | [MessageOption](#messageoption)           | Yes  | Request sending mode, which can be synchronous (default) or asynchronous.                                                  |
6940e41f4b71Sopenharmony_ci
6941e41f4b71Sopenharmony_ci**Return value**
6942e41f4b71Sopenharmony_ci
6943e41f4b71Sopenharmony_ci| Type   | Description                            |
6944e41f4b71Sopenharmony_ci| ------- | ---------------------------------|
6945e41f4b71Sopenharmony_ci| boolean | Returns **true** if the message is sent successfully; returns **false** otherwise.|
6946e41f4b71Sopenharmony_ci
6947e41f4b71Sopenharmony_ci**Example**
6948e41f4b71Sopenharmony_ci
6949e41f4b71Sopenharmony_ci  ```ts
6950e41f4b71Sopenharmony_ci  // If the FA model is used, import featureAbility from @kit.AbilityKit.
6951e41f4b71Sopenharmony_ci  // import { featureAbility } from '@kit.AbilityKit';
6952e41f4b71Sopenharmony_ci  import { Want, common } from '@kit.AbilityKit';
6953e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
6954e41f4b71Sopenharmony_ci
6955e41f4b71Sopenharmony_ci  let proxy: rpc.IRemoteObject | undefined;
6956e41f4b71Sopenharmony_ci  let connect: common.ConnectOptions = {
6957e41f4b71Sopenharmony_ci     onConnect: (elementName, remoteProxy) => {
6958e41f4b71Sopenharmony_ci        hilog.info(0x0000, 'testTag', 'RpcClient: js onConnect called');
6959e41f4b71Sopenharmony_ci        proxy = remoteProxy;
6960e41f4b71Sopenharmony_ci     },
6961e41f4b71Sopenharmony_ci     onDisconnect: (elementName) => {
6962e41f4b71Sopenharmony_ci        hilog.info(0x0000, 'testTag', 'RpcClient: onDisconnect');
6963e41f4b71Sopenharmony_ci     },
6964e41f4b71Sopenharmony_ci     onFailed: () => {
6965e41f4b71Sopenharmony_ci        hilog.info(0x0000, 'testTag', 'RpcClient: onFailed');
6966e41f4b71Sopenharmony_ci     }
6967e41f4b71Sopenharmony_ci  };
6968e41f4b71Sopenharmony_ci  let want: Want = {
6969e41f4b71Sopenharmony_ci    bundleName: "com.ohos.server",
6970e41f4b71Sopenharmony_ci    abilityName: "com.ohos.server.EntryAbility",
6971e41f4b71Sopenharmony_ci  };
6972e41f4b71Sopenharmony_ci
6973e41f4b71Sopenharmony_ci  // Use this method to connect to the ability for the FA model.
6974e41f4b71Sopenharmony_ci  // FA.connectAbility(want,connect);
6975e41f4b71Sopenharmony_ci
6976e41f4b71Sopenharmony_ci  // Save the connection ID, which will be used for the subsequent service disconnection.
6977e41f4b71Sopenharmony_ci  let context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext; // UIAbilityContext
6978e41f4b71Sopenharmony_ci  // Save the connection ID, which will be used for the subsequent service disconnection.
6979e41f4b71Sopenharmony_ci  let connectionId = context.connectServiceExtensionAbility(want, connect);
6980e41f4b71Sopenharmony_ci  ```
6981e41f4b71Sopenharmony_ci
6982e41f4b71Sopenharmony_ci  The proxy object in the **onConnect** callback can be assigned a value only after the ability is connected asynchronously. Then, **sendMessageRequest()** of the proxy object is called to send a message.
6983e41f4b71Sopenharmony_ci
6984e41f4b71Sopenharmony_ci  ```ts
6985e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
6986e41f4b71Sopenharmony_ci
6987e41f4b71Sopenharmony_ci  let option = new rpc.MessageOption();
6988e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
6989e41f4b71Sopenharmony_ci  let reply = rpc.MessageParcel.create();
6990e41f4b71Sopenharmony_ci  data.writeInt(1);
6991e41f4b71Sopenharmony_ci  data.writeString("hello");
6992e41f4b71Sopenharmony_ci  if (proxy != undefined) {
6993e41f4b71Sopenharmony_ci    let ret: boolean = proxy.sendRequest(1, data, reply, option);
6994e41f4b71Sopenharmony_ci    if (ret) {
6995e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', 'sendRequest got result');
6996e41f4b71Sopenharmony_ci    let msg = reply.readString();
6997e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', 'RPCTest: reply msg: ' + msg);
6998e41f4b71Sopenharmony_ci    } else {
6999e41f4b71Sopenharmony_ci      hilog.error(0x0000, 'testTag', 'RPCTest: sendRequest failed');
7000e41f4b71Sopenharmony_ci    }
7001e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', 'RPCTest: sendRequest ends, reclaim parcel');
7002e41f4b71Sopenharmony_ci    data.reclaim();
7003e41f4b71Sopenharmony_ci    reply.reclaim();
7004e41f4b71Sopenharmony_ci  }
7005e41f4b71Sopenharmony_ci  ```
7006e41f4b71Sopenharmony_ci
7007e41f4b71Sopenharmony_ci### sendMessageRequest<sup>9+</sup>
7008e41f4b71Sopenharmony_ci
7009e41f4b71Sopenharmony_cisendMessageRequest(code: number, data: MessageSequence, reply: MessageSequence, options: MessageOption): Promise&lt;RequestResult&gt;
7010e41f4b71Sopenharmony_ci
7011e41f4b71Sopenharmony_ciSends a **MessageSequence** message to the remote process in synchronous or asynchronous mode. If asynchronous mode is set in **options**, a promise will be fulfilled immediately and the reply message is empty. The specific reply needs to be obtained from the callback on the service side. If synchronous mode is set in **options**, a promise will be fulfilled when the response to **sendMessageRequest** is returned, and the reply message contains the returned information.
7012e41f4b71Sopenharmony_ci
7013e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
7014e41f4b71Sopenharmony_ci
7015e41f4b71Sopenharmony_ci**Parameters**
7016e41f4b71Sopenharmony_ci
7017e41f4b71Sopenharmony_ci| Name | Type                                | Mandatory| Description                                                                                  |
7018e41f4b71Sopenharmony_ci| ------- | ------------------------------------ | ---- | -------------------------------------------------------------------------------------- |
7019e41f4b71Sopenharmony_ci| code    | number                               | Yes  | Message code (1-16777215) called by the request, which is determined by the communication parties. If the method is generated by an IDL tool, the message code is automatically generated by the IDL tool.|
7020e41f4b71Sopenharmony_ci| data    | [MessageSequence](#messagesequence9) | Yes  | **MessageSequence** object holding the data to send.                                           |
7021e41f4b71Sopenharmony_ci| reply   | [MessageSequence](#messagesequence9) | Yes  | **MessageSequence** object that receives the response.                                                   |
7022e41f4b71Sopenharmony_ci| options | [MessageOption](#messageoption)      | Yes  | Request sending mode, which can be synchronous (default) or asynchronous.                                                  |
7023e41f4b71Sopenharmony_ci
7024e41f4b71Sopenharmony_ci**Return value**
7025e41f4b71Sopenharmony_ci
7026e41f4b71Sopenharmony_ci| Type                        | Description                                     |
7027e41f4b71Sopenharmony_ci| ---------------------------- | ----------------------------------------- |
7028e41f4b71Sopenharmony_ci| Promise&lt;[RequestResult](#requestresult9)&gt; | Promise used to return a **requestResult** instance.|
7029e41f4b71Sopenharmony_ci
7030e41f4b71Sopenharmony_ci
7031e41f4b71Sopenharmony_ci**Error codes**
7032e41f4b71Sopenharmony_ci
7033e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
7034e41f4b71Sopenharmony_ci
7035e41f4b71Sopenharmony_ci| ID| Error Message|
7036e41f4b71Sopenharmony_ci| -------- | -------- |
7037e41f4b71Sopenharmony_ci| 401      | check param failed |
7038e41f4b71Sopenharmony_ci
7039e41f4b71Sopenharmony_ci**Example**
7040e41f4b71Sopenharmony_ci
7041e41f4b71Sopenharmony_ci  ```ts
7042e41f4b71Sopenharmony_ci  // If the FA model is used, import featureAbility from @kit.AbilityKit.
7043e41f4b71Sopenharmony_ci  // import { featureAbility } from '@kit.AbilityKit';
7044e41f4b71Sopenharmony_ci  import { Want, common } from '@kit.AbilityKit';
7045e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
7046e41f4b71Sopenharmony_ci
7047e41f4b71Sopenharmony_ci  let proxy: rpc.IRemoteObject | undefined;
7048e41f4b71Sopenharmony_ci  let connect: common.ConnectOptions = {
7049e41f4b71Sopenharmony_ci    onConnect: (elementName, remoteProxy) => {
7050e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcClient: js onConnect called');
7051e41f4b71Sopenharmony_ci      proxy = remoteProxy;
7052e41f4b71Sopenharmony_ci    },
7053e41f4b71Sopenharmony_ci    onDisconnect: (elementName) => {
7054e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcClient: onDisconnect');
7055e41f4b71Sopenharmony_ci    },
7056e41f4b71Sopenharmony_ci    onFailed: () => {
7057e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcClient: onFailed');
7058e41f4b71Sopenharmony_ci    }
7059e41f4b71Sopenharmony_ci  };
7060e41f4b71Sopenharmony_ci  let want: Want = {
7061e41f4b71Sopenharmony_ci    bundleName: "com.ohos.server",
7062e41f4b71Sopenharmony_ci    abilityName: "com.ohos.server.EntryAbility",
7063e41f4b71Sopenharmony_ci  };
7064e41f4b71Sopenharmony_ci
7065e41f4b71Sopenharmony_ci  // Use this method to connect to the ability for the FA model.
7066e41f4b71Sopenharmony_ci  // FA.connectAbility(want,connect);
7067e41f4b71Sopenharmony_ci
7068e41f4b71Sopenharmony_ci  // Save the connection ID, which will be used for the subsequent service disconnection.
7069e41f4b71Sopenharmony_ci  let context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext; // UIAbilityContext
7070e41f4b71Sopenharmony_ci  // Save the connection ID, which will be used for the subsequent service disconnection.
7071e41f4b71Sopenharmony_ci  let connectionId = context.connectServiceExtensionAbility(want, connect);
7072e41f4b71Sopenharmony_ci  ```
7073e41f4b71Sopenharmony_ci
7074e41f4b71Sopenharmony_ci  The proxy object in the **onConnect** callback can be assigned a value only after the ability is connected asynchronously. Then, **sendMessageRequest()** of the proxy object is called to send a message.
7075e41f4b71Sopenharmony_ci
7076e41f4b71Sopenharmony_ci  ```ts
7077e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
7078e41f4b71Sopenharmony_ci
7079e41f4b71Sopenharmony_ci  let option = new rpc.MessageOption();
7080e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
7081e41f4b71Sopenharmony_ci  let reply = rpc.MessageSequence.create();
7082e41f4b71Sopenharmony_ci  data.writeInt(1);
7083e41f4b71Sopenharmony_ci  data.writeString("hello");
7084e41f4b71Sopenharmony_ci  if (proxy != undefined) {
7085e41f4b71Sopenharmony_ci    proxy.sendMessageRequest(1, data, reply, option)
7086e41f4b71Sopenharmony_ci    .then((result: rpc.RequestResult) => {
7087e41f4b71Sopenharmony_ci      if (result.errCode === 0) {
7088e41f4b71Sopenharmony_ci        hilog.info(0x0000, 'testTag', 'sendMessageRequest got result');
7089e41f4b71Sopenharmony_ci        let num = result.reply.readInt();
7090e41f4b71Sopenharmony_ci        let msg = result.reply.readString();
7091e41f4b71Sopenharmony_ci        hilog.info(0x0000, 'testTag', 'RPCTest: reply num: ' + num);
7092e41f4b71Sopenharmony_ci        hilog.info(0x0000, 'testTag', 'RPCTest: reply msg: ' + msg);
7093e41f4b71Sopenharmony_ci      } else {
7094e41f4b71Sopenharmony_ci        hilog.error(0x0000, 'testTag', 'RPCTest: sendMessageRequest failed, errCode: ' + result.errCode);
7095e41f4b71Sopenharmony_ci      }
7096e41f4b71Sopenharmony_ci    }).catch((e: Error) => {
7097e41f4b71Sopenharmony_ci      hilog.error(0x0000, 'testTag', 'RPCTest: sendMessageRequest failed, message: ' + e.message);
7098e41f4b71Sopenharmony_ci    }).finally (() => {
7099e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RPCTest: sendMessageRequest ends, reclaim parcel');
7100e41f4b71Sopenharmony_ci      data.reclaim();
7101e41f4b71Sopenharmony_ci      reply.reclaim();
7102e41f4b71Sopenharmony_ci    });
7103e41f4b71Sopenharmony_ci  }
7104e41f4b71Sopenharmony_ci  ```
7105e41f4b71Sopenharmony_ci
7106e41f4b71Sopenharmony_ci### sendRequest<sup>8+(deprecated)</sup>
7107e41f4b71Sopenharmony_ci
7108e41f4b71Sopenharmony_ci>**NOTE**<br>This API is no longer maintained since API version 9. Use [sendMessageRequest](#sendmessagerequest9-2) instead.
7109e41f4b71Sopenharmony_ci
7110e41f4b71Sopenharmony_cisendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption): Promise&lt;SendRequestResult&gt;
7111e41f4b71Sopenharmony_ci
7112e41f4b71Sopenharmony_ciSends a **MessageParcel** message to the remote process in synchronous or asynchronous mode. If asynchronous mode is set in **options**, a promise will be fulfilled immediately and the reply message is empty. The specific reply needs to be obtained from the callback on the service side. If synchronous mode is set in **options**, a promise will be fulfilled when the response to **sendRequest** is returned, and the reply message contains the returned information.
7113e41f4b71Sopenharmony_ci
7114e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
7115e41f4b71Sopenharmony_ci
7116e41f4b71Sopenharmony_ci**Parameters**
7117e41f4b71Sopenharmony_ci
7118e41f4b71Sopenharmony_ci| Name | Type                                     | Mandatory| Description                                                                                  |
7119e41f4b71Sopenharmony_ci| ------- | ----------------------------------------- | ---- | -------------------------------------------------------------------------------------- |
7120e41f4b71Sopenharmony_ci| code    | number                                    | Yes  | Message code (1-16777215) called by the request, which is determined by the communication parties. If the method is generated by an IDL tool, the message code is automatically generated by the IDL tool.|
7121e41f4b71Sopenharmony_ci| data    | [MessageParcel](#messageparceldeprecated) | Yes  | **MessageParcel** object holding the data to send.                                             |
7122e41f4b71Sopenharmony_ci| reply   | [MessageParcel](#messageparceldeprecated) | Yes  | **MessageParcel** object that receives the response.                                                     |
7123e41f4b71Sopenharmony_ci| options | [MessageOption](#messageoption)           | Yes  | Request sending mode, which can be synchronous (default) or asynchronous.                                                  |
7124e41f4b71Sopenharmony_ci
7125e41f4b71Sopenharmony_ci**Return value**
7126e41f4b71Sopenharmony_ci
7127e41f4b71Sopenharmony_ci| Type                                                        | Description                                         |
7128e41f4b71Sopenharmony_ci| ------------------------------------------------------------ | --------------------------------------------- |
7129e41f4b71Sopenharmony_ci| Promise&lt;[SendRequestResult](#sendrequestresult8deprecated)&gt; | Promise used to return a **sendRequestResult** instance.|
7130e41f4b71Sopenharmony_ci
7131e41f4b71Sopenharmony_ci**Example**
7132e41f4b71Sopenharmony_ci
7133e41f4b71Sopenharmony_ci  ```ts
7134e41f4b71Sopenharmony_ci  // If the FA model is used, import featureAbility from @kit.AbilityKit.
7135e41f4b71Sopenharmony_ci  // import { featureAbility } from '@kit.AbilityKit';
7136e41f4b71Sopenharmony_ci  import { Want, common } from '@kit.AbilityKit';
7137e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
7138e41f4b71Sopenharmony_ci
7139e41f4b71Sopenharmony_ci  let proxy: rpc.IRemoteObject | undefined;
7140e41f4b71Sopenharmony_ci  let connect: common.ConnectOptions = {
7141e41f4b71Sopenharmony_ci    onConnect: (elementName, remoteProxy) => {
7142e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcClient: js onConnect called');
7143e41f4b71Sopenharmony_ci      proxy = remoteProxy;
7144e41f4b71Sopenharmony_ci    },
7145e41f4b71Sopenharmony_ci    onDisconnect: (elementName) => {
7146e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcClient: onDisconnect');
7147e41f4b71Sopenharmony_ci    },
7148e41f4b71Sopenharmony_ci    onFailed: () => {
7149e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcClient: onFailed');
7150e41f4b71Sopenharmony_ci    }
7151e41f4b71Sopenharmony_ci  };
7152e41f4b71Sopenharmony_ci  let want: Want = {
7153e41f4b71Sopenharmony_ci    bundleName: "com.ohos.server",
7154e41f4b71Sopenharmony_ci    abilityName: "com.ohos.server.EntryAbility",
7155e41f4b71Sopenharmony_ci  };
7156e41f4b71Sopenharmony_ci
7157e41f4b71Sopenharmony_ci  // Use this method to connect to the ability for the FA model.
7158e41f4b71Sopenharmony_ci  // FA.connectAbility(want,connect);
7159e41f4b71Sopenharmony_ci
7160e41f4b71Sopenharmony_ci  // Save the connection ID, which will be used for the subsequent service disconnection.
7161e41f4b71Sopenharmony_ci  let context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext; // UIAbilityContext
7162e41f4b71Sopenharmony_ci  // Save the connection ID, which will be used for the subsequent service disconnection.
7163e41f4b71Sopenharmony_ci  let connectionId = context.connectServiceExtensionAbility(want, connect);
7164e41f4b71Sopenharmony_ci  ```
7165e41f4b71Sopenharmony_ci
7166e41f4b71Sopenharmony_ci  The proxy object in the **onConnect** callback can be assigned a value only after the ability is connected asynchronously. Then, **sendMessageRequest()** of the proxy object is called to send a message.
7167e41f4b71Sopenharmony_ci
7168e41f4b71Sopenharmony_ci  ```ts
7169e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
7170e41f4b71Sopenharmony_ci
7171e41f4b71Sopenharmony_ci  let option = new rpc.MessageOption();
7172e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
7173e41f4b71Sopenharmony_ci  let reply = rpc.MessageParcel.create();
7174e41f4b71Sopenharmony_ci  data.writeInt(1);
7175e41f4b71Sopenharmony_ci  data.writeString("hello");
7176e41f4b71Sopenharmony_ci  if (proxy != undefined) {
7177e41f4b71Sopenharmony_ci    let a = proxy.sendRequest(1, data, reply, option) as Object;
7178e41f4b71Sopenharmony_ci    let b = a as Promise<rpc.SendRequestResult>;
7179e41f4b71Sopenharmony_ci    b.then((result: rpc.SendRequestResult) => {
7180e41f4b71Sopenharmony_ci      if (result.errCode === 0) {
7181e41f4b71Sopenharmony_ci        hilog.info(0x0000, 'testTag', 'sendRequest got result');
7182e41f4b71Sopenharmony_ci        let num = result.reply.readInt();
7183e41f4b71Sopenharmony_ci        let msg = result.reply.readString();
7184e41f4b71Sopenharmony_ci        hilog.info(0x0000, 'testTag', 'RPCTest: reply num: ' + num);
7185e41f4b71Sopenharmony_ci        hilog.info(0x0000, 'testTag', 'RPCTest: reply msg: ' + msg);
7186e41f4b71Sopenharmony_ci      } else {
7187e41f4b71Sopenharmony_ci        hilog.error(0x0000, 'testTag', 'RPCTest: sendRequest failed, errCode: ' + result.errCode);
7188e41f4b71Sopenharmony_ci      }
7189e41f4b71Sopenharmony_ci    }).catch((e: Error) => {
7190e41f4b71Sopenharmony_ci      hilog.error(0x0000, 'testTag', 'RPCTest: sendRequest failed, message: ' + e.message);
7191e41f4b71Sopenharmony_ci    }).finally (() => {
7192e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RPCTest: sendRequest ends, reclaim parcel');
7193e41f4b71Sopenharmony_ci      data.reclaim();
7194e41f4b71Sopenharmony_ci      reply.reclaim();
7195e41f4b71Sopenharmony_ci    });
7196e41f4b71Sopenharmony_ci  }
7197e41f4b71Sopenharmony_ci  ```
7198e41f4b71Sopenharmony_ci
7199e41f4b71Sopenharmony_ci### sendMessageRequest<sup>9+</sup>
7200e41f4b71Sopenharmony_ci
7201e41f4b71Sopenharmony_cisendMessageRequest(code: number, data: MessageSequence, reply: MessageSequence, options: MessageOption, callback: AsyncCallback&lt;RequestResult&gt;): void
7202e41f4b71Sopenharmony_ci
7203e41f4b71Sopenharmony_ciSends a **MessageSequence** message to the remote process in synchronous or asynchronous mode. If asynchronous mode is set in **options**, a callback will be called immediately, and the reply message is empty. The specific reply needs to be obtained from the callback on the service side. If synchronous mode is set in **options**, a callback will be invoked at certain time after the response to **sendMessageRequest** is returned, and the reply contains the returned information.
7204e41f4b71Sopenharmony_ci
7205e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
7206e41f4b71Sopenharmony_ci
7207e41f4b71Sopenharmony_ci**Parameters**
7208e41f4b71Sopenharmony_ci
7209e41f4b71Sopenharmony_ci| Name  | Type                                | Mandatory| Description                                                                                  |
7210e41f4b71Sopenharmony_ci| -------- | ------------------------------------ | ---- | -------------------------------------------------------------------------------------- |
7211e41f4b71Sopenharmony_ci| code     | number                               | Yes  | Message code (1-16777215) called by the request, which is determined by the communication parties. If the method is generated by an IDL tool, the message code is automatically generated by the IDL tool.|
7212e41f4b71Sopenharmony_ci| data     | [MessageSequence](#messagesequence9) | Yes  | **MessageSequence** object holding the data to send.                                           |
7213e41f4b71Sopenharmony_ci| reply    | [MessageSequence](#messagesequence9) | Yes  | **MessageSequence** object that receives the response.                                                   |
7214e41f4b71Sopenharmony_ci| options  | [MessageOption](#messageoption)      | Yes  | Request sending mode, which can be synchronous (default) or asynchronous.                                                  |
7215e41f4b71Sopenharmony_ci| callback | AsyncCallback&lt;[RequestResult](#requestresult9)&gt;   | Yes  | Callback for receiving the sending result.                                                                  |
7216e41f4b71Sopenharmony_ci
7217e41f4b71Sopenharmony_ci
7218e41f4b71Sopenharmony_ci**Error codes**
7219e41f4b71Sopenharmony_ci
7220e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
7221e41f4b71Sopenharmony_ci
7222e41f4b71Sopenharmony_ci| ID| Error Message|
7223e41f4b71Sopenharmony_ci| -------- | -------- |
7224e41f4b71Sopenharmony_ci| 401      | check param failed |
7225e41f4b71Sopenharmony_ci
7226e41f4b71Sopenharmony_ci**Example**
7227e41f4b71Sopenharmony_ci
7228e41f4b71Sopenharmony_ci  ```ts
7229e41f4b71Sopenharmony_ci  // If the FA model is used, import featureAbility from @kit.AbilityKit.
7230e41f4b71Sopenharmony_ci  // import { featureAbility } from '@kit.AbilityKit';
7231e41f4b71Sopenharmony_ci  import { Want, common } from '@kit.AbilityKit';
7232e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
7233e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
7234e41f4b71Sopenharmony_ci
7235e41f4b71Sopenharmony_ci  let proxy: rpc.IRemoteObject | undefined;
7236e41f4b71Sopenharmony_ci  let connect: common.ConnectOptions = {
7237e41f4b71Sopenharmony_ci    onConnect: (elementName, remoteProxy) => {
7238e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcClient: js onConnect called');
7239e41f4b71Sopenharmony_ci      proxy = remoteProxy;
7240e41f4b71Sopenharmony_ci    },
7241e41f4b71Sopenharmony_ci    onDisconnect: (elementName) => {
7242e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcClient: onDisconnect');
7243e41f4b71Sopenharmony_ci    },
7244e41f4b71Sopenharmony_ci    onFailed: () => {
7245e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcClient: onFailed');
7246e41f4b71Sopenharmony_ci    }
7247e41f4b71Sopenharmony_ci  };
7248e41f4b71Sopenharmony_ci  let want: Want = {
7249e41f4b71Sopenharmony_ci    bundleName: "com.ohos.server",
7250e41f4b71Sopenharmony_ci    abilityName: "com.ohos.server.EntryAbility",
7251e41f4b71Sopenharmony_ci  };
7252e41f4b71Sopenharmony_ci  function sendMessageRequestCallback(err: BusinessError, result: rpc.RequestResult) {
7253e41f4b71Sopenharmony_ci    if (result.errCode === 0) {
7254e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'sendMessageRequest got result');
7255e41f4b71Sopenharmony_ci      let num = result.reply.readInt();
7256e41f4b71Sopenharmony_ci      let msg = result.reply.readString();
7257e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RPCTest: reply num: ' + num);
7258e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RPCTest: reply msg: ' + msg);
7259e41f4b71Sopenharmony_ci    } else {
7260e41f4b71Sopenharmony_ci      hilog.error(0x0000, 'testTag', 'RPCTest: sendMessageRequest failed, errCode: ' + result.errCode);
7261e41f4b71Sopenharmony_ci    }
7262e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', 'RPCTest: sendMessageRequest ends, reclaim parcel');
7263e41f4b71Sopenharmony_ci    result.data.reclaim();
7264e41f4b71Sopenharmony_ci    result.reply.reclaim();
7265e41f4b71Sopenharmony_ci}
7266e41f4b71Sopenharmony_ci
7267e41f4b71Sopenharmony_ci  // Use this method to connect to the ability for the FA model.
7268e41f4b71Sopenharmony_ci  // FA.connectAbility(want,connect);
7269e41f4b71Sopenharmony_ci
7270e41f4b71Sopenharmony_ci  // Save the connection ID, which will be used for the subsequent service disconnection.
7271e41f4b71Sopenharmony_ci  let context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext; // UIAbilityContext
7272e41f4b71Sopenharmony_ci  // Save the connection ID, which will be used for the subsequent service disconnection.
7273e41f4b71Sopenharmony_ci  let connectionId = context.connectServiceExtensionAbility(want, connect);
7274e41f4b71Sopenharmony_ci  ```
7275e41f4b71Sopenharmony_ci
7276e41f4b71Sopenharmony_ci  The proxy object in the **onConnect** callback can be assigned a value only after the ability is connected asynchronously. Then, **sendMessageRequest()** of the proxy object is called to send a message.
7277e41f4b71Sopenharmony_ci
7278e41f4b71Sopenharmony_ci  ```ts
7279e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
7280e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
7281e41f4b71Sopenharmony_ci
7282e41f4b71Sopenharmony_ci  let option = new rpc.MessageOption();
7283e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
7284e41f4b71Sopenharmony_ci  let reply = rpc.MessageSequence.create();
7285e41f4b71Sopenharmony_ci  data.writeInt(1);
7286e41f4b71Sopenharmony_ci  data.writeString("hello");
7287e41f4b71Sopenharmony_ci  if (proxy != undefined) {
7288e41f4b71Sopenharmony_ci    try {
7289e41f4b71Sopenharmony_ci      proxy.sendMessageRequest(1, data, reply, option, sendMessageRequestCallback);
7290e41f4b71Sopenharmony_ci    } catch (error) {
7291e41f4b71Sopenharmony_ci      let e: BusinessError = error as BusinessError;
7292e41f4b71Sopenharmony_ci      hilog.error(0x0000, 'testTag', 'rpc sendMessageRequest fail, errorCode ' + e.code);
7293e41f4b71Sopenharmony_ci      hilog.error(0x0000, 'testTag', 'rpc sendMessageRequest fail, errorMessage ' + e.message);
7294e41f4b71Sopenharmony_ci    }
7295e41f4b71Sopenharmony_ci  }
7296e41f4b71Sopenharmony_ci  ```
7297e41f4b71Sopenharmony_ci
7298e41f4b71Sopenharmony_ci### sendRequest<sup>8+(deprecated)</sup>
7299e41f4b71Sopenharmony_ci
7300e41f4b71Sopenharmony_ci>**NOTE**<br>This API is no longer maintained since API version 9. Use [sendMessageRequest](#sendmessagerequest9-3) instead.
7301e41f4b71Sopenharmony_ci
7302e41f4b71Sopenharmony_cisendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption, callback: AsyncCallback&lt;SendRequestResult&gt;): void
7303e41f4b71Sopenharmony_ci
7304e41f4b71Sopenharmony_ciSends a **MessageParcel** message to the remote process in synchronous or asynchronous mode. If asynchronous mode is set in **options**, a callback will be called immediately, and the reply message is empty. The specific reply needs to be obtained from the callback on the service side. If synchronous mode is set in **options**, a callback will be invoked when the response to **sendRequest** is returned, and the reply message contains the returned information.
7305e41f4b71Sopenharmony_ci
7306e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
7307e41f4b71Sopenharmony_ci
7308e41f4b71Sopenharmony_ci**Parameters**
7309e41f4b71Sopenharmony_ci
7310e41f4b71Sopenharmony_ci| Name  | Type                                                        | Mandatory| Description                                                        |
7311e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
7312e41f4b71Sopenharmony_ci| code     | number                                                       | Yes  | Message code (1-16777215) called by the request, which is determined by the communication parties. If the method is generated by an IDL tool, the message code is automatically generated by the IDL tool.|
7313e41f4b71Sopenharmony_ci| data     | [MessageParcel](#messageparceldeprecated)                    | Yes  | **MessageParcel** object holding the data to send.                   |
7314e41f4b71Sopenharmony_ci| reply    | [MessageParcel](#messageparceldeprecated)                    | Yes  | **MessageParcel** object that receives the response.                           |
7315e41f4b71Sopenharmony_ci| options  | [MessageOption](#messageoption)                              | Yes  | Request sending mode, which can be synchronous (default) or asynchronous.                        |
7316e41f4b71Sopenharmony_ci| callback | AsyncCallback&lt;[SendRequestResult](#sendrequestresult8deprecated)&gt; | Yes  | Callback for receiving the sending result.                                        |
7317e41f4b71Sopenharmony_ci
7318e41f4b71Sopenharmony_ci**Example**
7319e41f4b71Sopenharmony_ci
7320e41f4b71Sopenharmony_ci  ```ts
7321e41f4b71Sopenharmony_ci  // If the FA model is used, import featureAbility from @kit.AbilityKit.
7322e41f4b71Sopenharmony_ci  // import { featureAbility } from '@kit.AbilityKit';
7323e41f4b71Sopenharmony_ci  import { Want, common } from '@kit.AbilityKit';
7324e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
7325e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
7326e41f4b71Sopenharmony_ci
7327e41f4b71Sopenharmony_ci  let proxy: rpc.IRemoteObject | undefined;
7328e41f4b71Sopenharmony_ci  let connect: common.ConnectOptions = {
7329e41f4b71Sopenharmony_ci    onConnect: (elementName, remoteProxy) => {
7330e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcClient: js onConnect called');
7331e41f4b71Sopenharmony_ci      proxy = remoteProxy;
7332e41f4b71Sopenharmony_ci    },
7333e41f4b71Sopenharmony_ci    onDisconnect: (elementName) => {
7334e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcClient: onDisconnect');
7335e41f4b71Sopenharmony_ci    },
7336e41f4b71Sopenharmony_ci    onFailed: () => {
7337e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcClient: onFailed');
7338e41f4b71Sopenharmony_ci    }
7339e41f4b71Sopenharmony_ci  };
7340e41f4b71Sopenharmony_ci  let want: Want = {
7341e41f4b71Sopenharmony_ci      bundleName: "com.ohos.server",
7342e41f4b71Sopenharmony_ci      abilityName: "com.ohos.server.EntryAbility",
7343e41f4b71Sopenharmony_ci  };
7344e41f4b71Sopenharmony_ci  function sendRequestCallback(err: BusinessError, result: rpc.SendRequestResult) {
7345e41f4b71Sopenharmony_ci    if (result.errCode === 0) {
7346e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'sendRequest got result');
7347e41f4b71Sopenharmony_ci      let num = result.reply.readInt();
7348e41f4b71Sopenharmony_ci      let msg = result.reply.readString();
7349e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RPCTest: reply num: ' + num);
7350e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RPCTest: reply msg: ' + msg);
7351e41f4b71Sopenharmony_ci    } else {
7352e41f4b71Sopenharmony_ci      hilog.error(0x0000, 'testTag', 'RPCTest: sendRequest failed, errCode: ' + result.errCode);
7353e41f4b71Sopenharmony_ci    }
7354e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', 'RPCTest: sendRequest ends, reclaim parcel');
7355e41f4b71Sopenharmony_ci    result.data.reclaim();
7356e41f4b71Sopenharmony_ci    result.reply.reclaim();
7357e41f4b71Sopenharmony_ci}
7358e41f4b71Sopenharmony_ci
7359e41f4b71Sopenharmony_ci  // Use this method to connect to the ability for the FA model.
7360e41f4b71Sopenharmony_ci  // FA.connectAbility(want,connect);
7361e41f4b71Sopenharmony_ci
7362e41f4b71Sopenharmony_ci  // Save the connection ID, which will be used for the subsequent service disconnection.
7363e41f4b71Sopenharmony_ci  let context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext; // UIAbilityContext
7364e41f4b71Sopenharmony_ci  // Save the connection ID, which will be used for the subsequent service disconnection.
7365e41f4b71Sopenharmony_ci  let connectionId = context.connectServiceExtensionAbility(want, connect);
7366e41f4b71Sopenharmony_ci  ```
7367e41f4b71Sopenharmony_ci
7368e41f4b71Sopenharmony_ci  The proxy object in the **onConnect** callback can be assigned a value only after the ability is connected asynchronously. Then, **sendMessageRequest()** of the proxy object is called to send a message.
7369e41f4b71Sopenharmony_ci
7370e41f4b71Sopenharmony_ci  ```ts
7371e41f4b71Sopenharmony_ci  let option = new rpc.MessageOption();
7372e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
7373e41f4b71Sopenharmony_ci  let reply = rpc.MessageParcel.create();
7374e41f4b71Sopenharmony_ci  data.writeInt(1);
7375e41f4b71Sopenharmony_ci  data.writeString("hello");
7376e41f4b71Sopenharmony_ci  if (proxy != undefined) {
7377e41f4b71Sopenharmony_ci    proxy.sendRequest(1, data, reply, option, sendRequestCallback);
7378e41f4b71Sopenharmony_ci  }
7379e41f4b71Sopenharmony_ci  ```
7380e41f4b71Sopenharmony_ci
7381e41f4b71Sopenharmony_ci### getLocalInterface<sup>9+</sup>
7382e41f4b71Sopenharmony_ci
7383e41f4b71Sopenharmony_cigetLocalInterface(interface: string): IRemoteBroker
7384e41f4b71Sopenharmony_ci
7385e41f4b71Sopenharmony_ciObtains the **LocalInterface** object of an interface token.
7386e41f4b71Sopenharmony_ci
7387e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
7388e41f4b71Sopenharmony_ci
7389e41f4b71Sopenharmony_ci**Parameters**
7390e41f4b71Sopenharmony_ci
7391e41f4b71Sopenharmony_ci| Name   | Type  | Mandatory| Description                  |
7392e41f4b71Sopenharmony_ci| --------- | ------ | ---- | ---------------------- |
7393e41f4b71Sopenharmony_ci| interface | string | Yes  | Interface descriptor.|
7394e41f4b71Sopenharmony_ci
7395e41f4b71Sopenharmony_ci**Return value**
7396e41f4b71Sopenharmony_ci
7397e41f4b71Sopenharmony_ci| Type                           | Description                                      |
7398e41f4b71Sopenharmony_ci| ------------------------------- | ------------------------------------------ |
7399e41f4b71Sopenharmony_ci| [IRemoteBroker](#iremotebroker) | Returns **Null** by default, which indicates a proxy interface.|
7400e41f4b71Sopenharmony_ci
7401e41f4b71Sopenharmony_ci**Error codes**
7402e41f4b71Sopenharmony_ci
7403e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
7404e41f4b71Sopenharmony_ci
7405e41f4b71Sopenharmony_ci| ID| Error Message|
7406e41f4b71Sopenharmony_ci| -------- | -------- |
7407e41f4b71Sopenharmony_ci| 401      | check param failed |
7408e41f4b71Sopenharmony_ci| 1900006  | only remote object permitted |
7409e41f4b71Sopenharmony_ci
7410e41f4b71Sopenharmony_ci**Example**
7411e41f4b71Sopenharmony_ci
7412e41f4b71Sopenharmony_ci  ```ts
7413e41f4b71Sopenharmony_ci  // If the FA model is used, import featureAbility from @kit.AbilityKit.
7414e41f4b71Sopenharmony_ci  // import { featureAbility } from '@kit.AbilityKit';
7415e41f4b71Sopenharmony_ci  import { Want, common } from '@kit.AbilityKit';
7416e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
7417e41f4b71Sopenharmony_ci
7418e41f4b71Sopenharmony_ci  let proxy: rpc.IRemoteObject | undefined;
7419e41f4b71Sopenharmony_ci  let connect: common.ConnectOptions = {
7420e41f4b71Sopenharmony_ci    onConnect: (elementName, remoteProxy) => {
7421e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcClient: js onConnect called');
7422e41f4b71Sopenharmony_ci      proxy = remoteProxy;
7423e41f4b71Sopenharmony_ci    },
7424e41f4b71Sopenharmony_ci    onDisconnect: (elementName) => {
7425e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcClient: onDisconnect');
7426e41f4b71Sopenharmony_ci    },
7427e41f4b71Sopenharmony_ci    onFailed: () => {
7428e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcClient: onFailed');
7429e41f4b71Sopenharmony_ci    }
7430e41f4b71Sopenharmony_ci  };
7431e41f4b71Sopenharmony_ci  let want: Want = {
7432e41f4b71Sopenharmony_ci    bundleName: "com.ohos.server",
7433e41f4b71Sopenharmony_ci    abilityName: "com.ohos.server.EntryAbility",
7434e41f4b71Sopenharmony_ci  };
7435e41f4b71Sopenharmony_ci
7436e41f4b71Sopenharmony_ci  // Use this method to connect to the ability for the FA model.
7437e41f4b71Sopenharmony_ci  // FA.connectAbility(want,connect);
7438e41f4b71Sopenharmony_ci
7439e41f4b71Sopenharmony_ci  // Save the connection ID, which will be used for the subsequent service disconnection.
7440e41f4b71Sopenharmony_ci  let context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext; // UIAbilityContext
7441e41f4b71Sopenharmony_ci  // Save the connection ID, which will be used for the subsequent service disconnection.
7442e41f4b71Sopenharmony_ci  let connectionId = context.connectServiceExtensionAbility(want, connect);
7443e41f4b71Sopenharmony_ci  ```
7444e41f4b71Sopenharmony_ci
7445e41f4b71Sopenharmony_ci  The proxy object in the **onConnect** callback can be assigned a value only after the ability is connected asynchronously. Then, **getLocalInterface()** of the proxy object is called to obtain the interface descriptor.
7446e41f4b71Sopenharmony_ci
7447e41f4b71Sopenharmony_ci  ```ts
7448e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
7449e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
7450e41f4b71Sopenharmony_ci
7451e41f4b71Sopenharmony_ci  if (proxy != undefined) {
7452e41f4b71Sopenharmony_ci    try {
7453e41f4b71Sopenharmony_ci    let broker: rpc.IRemoteBroker = proxy.getLocalInterface("testObject");
7454e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', 'RpcClient: getLocalInterface is ' + broker);
7455e41f4b71Sopenharmony_ci    } catch (error) {
7456e41f4b71Sopenharmony_ci      let e: BusinessError = error as BusinessError;
7457e41f4b71Sopenharmony_ci      hilog.error(0x0000, 'testTag', 'rpc get local interface fail, errorCode ' + e.code);
7458e41f4b71Sopenharmony_ci      hilog.error(0x0000, 'testTag', 'rpc get local interface fail, errorMessage ' + e.message);
7459e41f4b71Sopenharmony_ci    }
7460e41f4b71Sopenharmony_ci  }
7461e41f4b71Sopenharmony_ci  ```
7462e41f4b71Sopenharmony_ci
7463e41f4b71Sopenharmony_ci### queryLocalInterface<sup>(deprecated)</sup>
7464e41f4b71Sopenharmony_ci
7465e41f4b71Sopenharmony_ci>**NOTE**<br>This API is no longer maintained since API version 9. Use [getLocalInterface](#getlocalinterface9-1) instead.
7466e41f4b71Sopenharmony_ci
7467e41f4b71Sopenharmony_ciqueryLocalInterface(interface: string): IRemoteBroker
7468e41f4b71Sopenharmony_ci
7469e41f4b71Sopenharmony_ciObtains the **LocalInterface** object of an interface token.
7470e41f4b71Sopenharmony_ci
7471e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
7472e41f4b71Sopenharmony_ci
7473e41f4b71Sopenharmony_ci**Parameters**
7474e41f4b71Sopenharmony_ci
7475e41f4b71Sopenharmony_ci| Name   | Type  | Mandatory| Description                  |
7476e41f4b71Sopenharmony_ci| --------- | ------ | ---- | ---------------------- |
7477e41f4b71Sopenharmony_ci| interface | string | Yes  | Interface descriptor.|
7478e41f4b71Sopenharmony_ci
7479e41f4b71Sopenharmony_ci**Return value**
7480e41f4b71Sopenharmony_ci
7481e41f4b71Sopenharmony_ci| Type                           | Description                                      |
7482e41f4b71Sopenharmony_ci| ------------------------------- | ------------------------------------------ |
7483e41f4b71Sopenharmony_ci| [IRemoteBroker](#iremotebroker) | Returns **Null** by default, which indicates a proxy interface.|
7484e41f4b71Sopenharmony_ci
7485e41f4b71Sopenharmony_ci**Example**
7486e41f4b71Sopenharmony_ci
7487e41f4b71Sopenharmony_ci  ```ts
7488e41f4b71Sopenharmony_ci  // If the FA model is used, import featureAbility from @kit.AbilityKit.
7489e41f4b71Sopenharmony_ci  // import { featureAbility } from '@kit.AbilityKit';
7490e41f4b71Sopenharmony_ci  import { Want, common } from '@kit.AbilityKit';
7491e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
7492e41f4b71Sopenharmony_ci
7493e41f4b71Sopenharmony_ci  let proxy: rpc.IRemoteObject | undefined;
7494e41f4b71Sopenharmony_ci  let connect: common.ConnectOptions = {
7495e41f4b71Sopenharmony_ci    onConnect: (elementName, remoteProxy) => {
7496e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcClient: js onConnect called');
7497e41f4b71Sopenharmony_ci      proxy = remoteProxy;
7498e41f4b71Sopenharmony_ci    },
7499e41f4b71Sopenharmony_ci    onDisconnect: (elementName) => {
7500e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcClient: onDisconnect');
7501e41f4b71Sopenharmony_ci    },
7502e41f4b71Sopenharmony_ci    onFailed: () => {
7503e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcClient: onFailed');
7504e41f4b71Sopenharmony_ci    }
7505e41f4b71Sopenharmony_ci  };
7506e41f4b71Sopenharmony_ci  let want: Want = {
7507e41f4b71Sopenharmony_ci    bundleName: "com.ohos.server",
7508e41f4b71Sopenharmony_ci    abilityName: "com.ohos.server.EntryAbility",
7509e41f4b71Sopenharmony_ci  };
7510e41f4b71Sopenharmony_ci
7511e41f4b71Sopenharmony_ci  // Use this method to connect to the ability for the FA model.
7512e41f4b71Sopenharmony_ci  // FA.connectAbility(want,connect);
7513e41f4b71Sopenharmony_ci
7514e41f4b71Sopenharmony_ci  // Save the connection ID, which will be used for the subsequent service disconnection.
7515e41f4b71Sopenharmony_ci  let context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext; // UIAbilityContext
7516e41f4b71Sopenharmony_ci  // Save the connection ID, which will be used for the subsequent service disconnection.
7517e41f4b71Sopenharmony_ci  let connectionId = context.connectServiceExtensionAbility(want, connect);
7518e41f4b71Sopenharmony_ci  ```
7519e41f4b71Sopenharmony_ci
7520e41f4b71Sopenharmony_ci  The proxy object in the **onConnect** callback can be assigned a value only after the ability is connected asynchronously. Then, **queryLocalInterface()** of the proxy object is called to obtain the interface descriptor.
7521e41f4b71Sopenharmony_ci
7522e41f4b71Sopenharmony_ci  ```ts
7523e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
7524e41f4b71Sopenharmony_ci
7525e41f4b71Sopenharmony_ci  if (proxy != undefined) {
7526e41f4b71Sopenharmony_ci    let broker: rpc.IRemoteBroker = proxy.queryLocalInterface("testObject");
7527e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', 'RpcClient: queryLocalInterface is ' + broker);
7528e41f4b71Sopenharmony_ci  }
7529e41f4b71Sopenharmony_ci  ```
7530e41f4b71Sopenharmony_ci
7531e41f4b71Sopenharmony_ci### registerDeathRecipient<sup>9+</sup>
7532e41f4b71Sopenharmony_ci
7533e41f4b71Sopenharmony_ciregisterDeathRecipient(recipient: DeathRecipient, flags: number): void
7534e41f4b71Sopenharmony_ci
7535e41f4b71Sopenharmony_ciRegisters a callback for receiving death notifications of the remote object. The callback will be invoked when the remote object process matching the **RemoteProxy** object is killed.
7536e41f4b71Sopenharmony_ci
7537e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
7538e41f4b71Sopenharmony_ci
7539e41f4b71Sopenharmony_ci**Parameters**
7540e41f4b71Sopenharmony_ci
7541e41f4b71Sopenharmony_ci| Name   | Type                             | Mandatory| Description          |
7542e41f4b71Sopenharmony_ci| --------- | --------------------------------- | ---- | -------------- |
7543e41f4b71Sopenharmony_ci| recipient | [DeathRecipient](#deathrecipient) | Yes  | Callback to register.|
7544e41f4b71Sopenharmony_ci| flags     | number                            | Yes  | Flag of the death notification.|
7545e41f4b71Sopenharmony_ci
7546e41f4b71Sopenharmony_ci**Error codes**
7547e41f4b71Sopenharmony_ci
7548e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
7549e41f4b71Sopenharmony_ci
7550e41f4b71Sopenharmony_ci| ID| Error Message|
7551e41f4b71Sopenharmony_ci| -------- | -------- |
7552e41f4b71Sopenharmony_ci| 401      | check param failed |
7553e41f4b71Sopenharmony_ci| 1900008  | proxy or remote object is invalid |
7554e41f4b71Sopenharmony_ci
7555e41f4b71Sopenharmony_ci**Example**
7556e41f4b71Sopenharmony_ci
7557e41f4b71Sopenharmony_ci  ```ts
7558e41f4b71Sopenharmony_ci  // If the FA model is used, import featureAbility from @kit.AbilityKit.
7559e41f4b71Sopenharmony_ci  // import { featureAbility } from '@kit.AbilityKit';
7560e41f4b71Sopenharmony_ci  import { Want, common } from '@kit.AbilityKit';
7561e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
7562e41f4b71Sopenharmony_ci
7563e41f4b71Sopenharmony_ci  let proxy: rpc.IRemoteObject | undefined;
7564e41f4b71Sopenharmony_ci  let connect: common.ConnectOptions = {
7565e41f4b71Sopenharmony_ci    onConnect: (elementName, remoteProxy) => {
7566e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcClient: js onConnect called');
7567e41f4b71Sopenharmony_ci      proxy = remoteProxy;
7568e41f4b71Sopenharmony_ci    },
7569e41f4b71Sopenharmony_ci    onDisconnect: (elementName) => {
7570e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcClient: onDisconnect');
7571e41f4b71Sopenharmony_ci    },
7572e41f4b71Sopenharmony_ci    onFailed: () => {
7573e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcClient: onFailed');
7574e41f4b71Sopenharmony_ci    }
7575e41f4b71Sopenharmony_ci  };
7576e41f4b71Sopenharmony_ci  let want: Want = {
7577e41f4b71Sopenharmony_ci    bundleName: "com.ohos.server",
7578e41f4b71Sopenharmony_ci    abilityName: "com.ohos.server.EntryAbility",
7579e41f4b71Sopenharmony_ci  };
7580e41f4b71Sopenharmony_ci
7581e41f4b71Sopenharmony_ci  // Use this method to connect to the ability for the FA model.
7582e41f4b71Sopenharmony_ci  // FA.connectAbility(want,connect);
7583e41f4b71Sopenharmony_ci
7584e41f4b71Sopenharmony_ci  // Save the connection ID, which will be used for the subsequent service disconnection.
7585e41f4b71Sopenharmony_ci  let context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext; // UIAbilityContext
7586e41f4b71Sopenharmony_ci  // Save the connection ID, which will be used for the subsequent service disconnection.
7587e41f4b71Sopenharmony_ci  let connectionId = context.connectServiceExtensionAbility(want, connect);
7588e41f4b71Sopenharmony_ci  ```
7589e41f4b71Sopenharmony_ci
7590e41f4b71Sopenharmony_ciThe proxy object in the **onConnect** callback can be assigned a value only after the ability is connected asynchronously. Then, **registerDeathRecipient()** of the proxy object is called to register a callback for receiving the death notification of the remote object.
7591e41f4b71Sopenharmony_ci
7592e41f4b71Sopenharmony_ci  ```ts
7593e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
7594e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
7595e41f4b71Sopenharmony_ci
7596e41f4b71Sopenharmony_ci  class MyDeathRecipient implements rpc.DeathRecipient {
7597e41f4b71Sopenharmony_ci    onRemoteDied() {
7598e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'server died');
7599e41f4b71Sopenharmony_ci    }
7600e41f4b71Sopenharmony_ci  }
7601e41f4b71Sopenharmony_ci  let deathRecipient = new MyDeathRecipient();
7602e41f4b71Sopenharmony_ci  if (proxy != undefined) {
7603e41f4b71Sopenharmony_ci    try {
7604e41f4b71Sopenharmony_ci      proxy.registerDeathRecipient(deathRecipient, 0);
7605e41f4b71Sopenharmony_ci    } catch (error) {
7606e41f4b71Sopenharmony_ci      let e: BusinessError = error as BusinessError;
7607e41f4b71Sopenharmony_ci      hilog.error(0x0000, 'testTag', 'proxy register deathRecipient fail, errorCode ' + e.code);
7608e41f4b71Sopenharmony_ci      hilog.error(0x0000, 'testTag', 'proxy register deathRecipient fail, errorMessage ' + e.message);
7609e41f4b71Sopenharmony_ci    }
7610e41f4b71Sopenharmony_ci  }
7611e41f4b71Sopenharmony_ci  ```
7612e41f4b71Sopenharmony_ci
7613e41f4b71Sopenharmony_ci### addDeathRecipient<sup>(deprecated)</sup>
7614e41f4b71Sopenharmony_ci
7615e41f4b71Sopenharmony_ci>**NOTE**<br>This API is no longer maintained since API version 9. Use [registerDeathRecipient](#registerdeathrecipient9-1) instead.
7616e41f4b71Sopenharmony_ci
7617e41f4b71Sopenharmony_ciaddDeathRecipient(recipient: DeathRecipient, flags: number): boolean
7618e41f4b71Sopenharmony_ci
7619e41f4b71Sopenharmony_ciAdds a callback for receiving the death notifications of the remote object, including the death notifications of the remote proxy.
7620e41f4b71Sopenharmony_ci
7621e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
7622e41f4b71Sopenharmony_ci
7623e41f4b71Sopenharmony_ci**Parameters**
7624e41f4b71Sopenharmony_ci
7625e41f4b71Sopenharmony_ci| Name   | Type                             | Mandatory| Description                             |
7626e41f4b71Sopenharmony_ci| --------- | --------------------------------- | ---- | --------------------------------- |
7627e41f4b71Sopenharmony_ci| recipient | [DeathRecipient](#deathrecipient) | Yes  | Callback to add.         |
7628e41f4b71Sopenharmony_ci| flags     | number                            | Yes  | Flag of the death notification. This parameter is reserved. It is set to **0**.|
7629e41f4b71Sopenharmony_ci
7630e41f4b71Sopenharmony_ci**Return value**
7631e41f4b71Sopenharmony_ci
7632e41f4b71Sopenharmony_ci| Type   | Description                                    |
7633e41f4b71Sopenharmony_ci| ------- | ---------------------------------------- |
7634e41f4b71Sopenharmony_ci| boolean | Returns **true** if the callback is added successfully; returns **false** otherwise.|
7635e41f4b71Sopenharmony_ci
7636e41f4b71Sopenharmony_ci**Example**
7637e41f4b71Sopenharmony_ci
7638e41f4b71Sopenharmony_ci  ```ts
7639e41f4b71Sopenharmony_ci  // If the FA model is used, import featureAbility from @kit.AbilityKit.
7640e41f4b71Sopenharmony_ci  // import { featureAbility } from '@kit.AbilityKit';
7641e41f4b71Sopenharmony_ci  import { Want, common } from '@kit.AbilityKit';
7642e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
7643e41f4b71Sopenharmony_ci
7644e41f4b71Sopenharmony_ci  let proxy: rpc.IRemoteObject | undefined;
7645e41f4b71Sopenharmony_ci  let connect: common.ConnectOptions = {
7646e41f4b71Sopenharmony_ci    onConnect: (elementName, remoteProxy) => {
7647e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcClient: js onConnect called');
7648e41f4b71Sopenharmony_ci      proxy = remoteProxy;
7649e41f4b71Sopenharmony_ci    },
7650e41f4b71Sopenharmony_ci    onDisconnect: (elementName) => {
7651e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcClient: onDisconnect');
7652e41f4b71Sopenharmony_ci    },
7653e41f4b71Sopenharmony_ci    onFailed: () => {
7654e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcClient: onFailed');
7655e41f4b71Sopenharmony_ci    }
7656e41f4b71Sopenharmony_ci  };
7657e41f4b71Sopenharmony_ci  let want: Want = {
7658e41f4b71Sopenharmony_ci    bundleName: "com.ohos.server",
7659e41f4b71Sopenharmony_ci    abilityName: "com.ohos.server.EntryAbility",
7660e41f4b71Sopenharmony_ci  };
7661e41f4b71Sopenharmony_ci
7662e41f4b71Sopenharmony_ci  // Use this method to connect to the ability for the FA model.
7663e41f4b71Sopenharmony_ci  // FA.connectAbility(want,connect);
7664e41f4b71Sopenharmony_ci
7665e41f4b71Sopenharmony_ci  // Save the connection ID, which will be used for the subsequent service disconnection.
7666e41f4b71Sopenharmony_ci  let context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext; // UIAbilityContext
7667e41f4b71Sopenharmony_ci  // Save the connection ID, which will be used for the subsequent service disconnection.
7668e41f4b71Sopenharmony_ci  let connectionId = context.connectServiceExtensionAbility(want, connect);
7669e41f4b71Sopenharmony_ci  ```
7670e41f4b71Sopenharmony_ci
7671e41f4b71Sopenharmony_ciThe proxy object in the **onConnect** callback can be assigned a value only after the ability is connected asynchronously. Then, **addDeathRecipient()** of the proxy object is called to add a callback for receiving the death notification of the remove object.
7672e41f4b71Sopenharmony_ci
7673e41f4b71Sopenharmony_ci  ```ts
7674e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
7675e41f4b71Sopenharmony_ci
7676e41f4b71Sopenharmony_ci  class MyDeathRecipient implements rpc.DeathRecipient {
7677e41f4b71Sopenharmony_ci    onRemoteDied() {
7678e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'server died');
7679e41f4b71Sopenharmony_ci    }
7680e41f4b71Sopenharmony_ci  }
7681e41f4b71Sopenharmony_ci  let deathRecipient = new MyDeathRecipient();
7682e41f4b71Sopenharmony_ci  if (proxy != undefined) {
7683e41f4b71Sopenharmony_ci    proxy.addDeathRecipient(deathRecipient, 0);
7684e41f4b71Sopenharmony_ci  }
7685e41f4b71Sopenharmony_ci  ```
7686e41f4b71Sopenharmony_ci
7687e41f4b71Sopenharmony_ci### unregisterDeathRecipient<sup>9+</sup>
7688e41f4b71Sopenharmony_ci
7689e41f4b71Sopenharmony_ciunregisterDeathRecipient(recipient: DeathRecipient, flags: number): void
7690e41f4b71Sopenharmony_ci
7691e41f4b71Sopenharmony_ciUnregisters the callback used to receive death notifications of the remote object.
7692e41f4b71Sopenharmony_ci
7693e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
7694e41f4b71Sopenharmony_ci
7695e41f4b71Sopenharmony_ci**Parameters**
7696e41f4b71Sopenharmony_ci
7697e41f4b71Sopenharmony_ci| Name   | Type                             | Mandatory| Description          |
7698e41f4b71Sopenharmony_ci| --------- | --------------------------------- | ---- | -------------- |
7699e41f4b71Sopenharmony_ci| recipient | [DeathRecipient](#deathrecipient) | Yes  | Callback to unregister.|
7700e41f4b71Sopenharmony_ci| flags     | number                            | Yes  | Flag of the death notification.|
7701e41f4b71Sopenharmony_ci
7702e41f4b71Sopenharmony_ci**Error codes**
7703e41f4b71Sopenharmony_ci
7704e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
7705e41f4b71Sopenharmony_ci
7706e41f4b71Sopenharmony_ci| ID| Error Message|
7707e41f4b71Sopenharmony_ci| -------- | -------- |
7708e41f4b71Sopenharmony_ci| 401      | check param failed |
7709e41f4b71Sopenharmony_ci| 1900008  | proxy or remote object is invalid |
7710e41f4b71Sopenharmony_ci
7711e41f4b71Sopenharmony_ci**Example**
7712e41f4b71Sopenharmony_ci
7713e41f4b71Sopenharmony_ci  ```ts
7714e41f4b71Sopenharmony_ci  // If the FA model is used, import featureAbility from @kit.AbilityKit.
7715e41f4b71Sopenharmony_ci  // import { featureAbility } from '@kit.AbilityKit';
7716e41f4b71Sopenharmony_ci  import { Want, common } from '@kit.AbilityKit';
7717e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
7718e41f4b71Sopenharmony_ci
7719e41f4b71Sopenharmony_ci  let proxy: rpc.IRemoteObject | undefined;
7720e41f4b71Sopenharmony_ci  let connect: common.ConnectOptions = {
7721e41f4b71Sopenharmony_ci    onConnect: (elementName, remoteProxy) => {
7722e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcClient: js onConnect called');
7723e41f4b71Sopenharmony_ci      proxy = remoteProxy;
7724e41f4b71Sopenharmony_ci    },
7725e41f4b71Sopenharmony_ci    onDisconnect: (elementName) => {
7726e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcClient: onDisconnect');
7727e41f4b71Sopenharmony_ci    },
7728e41f4b71Sopenharmony_ci    onFailed: () => {
7729e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcClient: onFailed');
7730e41f4b71Sopenharmony_ci    }
7731e41f4b71Sopenharmony_ci  };
7732e41f4b71Sopenharmony_ci  let want: Want = {
7733e41f4b71Sopenharmony_ci    bundleName: "com.ohos.server",
7734e41f4b71Sopenharmony_ci    abilityName: "com.ohos.server.EntryAbility",
7735e41f4b71Sopenharmony_ci  };
7736e41f4b71Sopenharmony_ci
7737e41f4b71Sopenharmony_ci  // Use this method to connect to the ability for the FA model.
7738e41f4b71Sopenharmony_ci  // FA.connectAbility(want,connect);
7739e41f4b71Sopenharmony_ci
7740e41f4b71Sopenharmony_ci  // Save the connection ID, which will be used for the subsequent service disconnection.
7741e41f4b71Sopenharmony_ci  let context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext; // UIAbilityContext
7742e41f4b71Sopenharmony_ci  // Save the connection ID, which will be used for the subsequent service disconnection.
7743e41f4b71Sopenharmony_ci  let connectionId = context.connectServiceExtensionAbility(want, connect);
7744e41f4b71Sopenharmony_ci  ```
7745e41f4b71Sopenharmony_ci
7746e41f4b71Sopenharmony_ciThe proxy object in the **onConnect** callback can be assigned a value only after the ability is connected asynchronously. Then, **unregisterDeathRecipient()** of the proxy object is called to unregister the callback for receiving the death notification of the remote object.
7747e41f4b71Sopenharmony_ci
7748e41f4b71Sopenharmony_ci  ```ts
7749e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
7750e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
7751e41f4b71Sopenharmony_ci
7752e41f4b71Sopenharmony_ci  class MyDeathRecipient implements rpc.DeathRecipient {
7753e41f4b71Sopenharmony_ci    onRemoteDied() {
7754e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'server died');
7755e41f4b71Sopenharmony_ci    }
7756e41f4b71Sopenharmony_ci  }
7757e41f4b71Sopenharmony_ci  let deathRecipient = new MyDeathRecipient();
7758e41f4b71Sopenharmony_ci  if (proxy != undefined) {
7759e41f4b71Sopenharmony_ci    try {
7760e41f4b71Sopenharmony_ci      proxy.registerDeathRecipient(deathRecipient, 0);
7761e41f4b71Sopenharmony_ci      proxy.unregisterDeathRecipient(deathRecipient, 0);
7762e41f4b71Sopenharmony_ci    } catch (error) {
7763e41f4b71Sopenharmony_ci      let e: BusinessError = error as BusinessError;
7764e41f4b71Sopenharmony_ci      hilog.error(0x0000, 'testTag', 'proxy unregister deathRecipient fail, errorCode ' + e.code);
7765e41f4b71Sopenharmony_ci      hilog.error(0x0000, 'testTag', 'proxy unregister deathRecipient fail, errorMessage ' + e.message);
7766e41f4b71Sopenharmony_ci    }
7767e41f4b71Sopenharmony_ci  }
7768e41f4b71Sopenharmony_ci  ```
7769e41f4b71Sopenharmony_ci
7770e41f4b71Sopenharmony_ci### removeDeathRecipient<sup>(deprecated)</sup>
7771e41f4b71Sopenharmony_ci
7772e41f4b71Sopenharmony_ci>**NOTE**<br>This API is no longer maintained since API version 9. Use [unregisterDeathRecipient](#unregisterdeathrecipient9-1) instead.
7773e41f4b71Sopenharmony_ci
7774e41f4b71Sopenharmony_ciremoveDeathRecipient(recipient: DeathRecipient, flags: number): boolean
7775e41f4b71Sopenharmony_ci
7776e41f4b71Sopenharmony_ciRemoves the callback used to receive death notifications of the remote object.
7777e41f4b71Sopenharmony_ci
7778e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
7779e41f4b71Sopenharmony_ci
7780e41f4b71Sopenharmony_ci**Parameters**
7781e41f4b71Sopenharmony_ci
7782e41f4b71Sopenharmony_ci| Name   | Type                             | Mandatory| Description                             |
7783e41f4b71Sopenharmony_ci| --------- | --------------------------------- | ---- | --------------------------------- |
7784e41f4b71Sopenharmony_ci| recipient | [DeathRecipient](#deathrecipient) | Yes  | Callback to remove.               |
7785e41f4b71Sopenharmony_ci| flags     | number                            | Yes  | Flag of the death notification. This parameter is reserved. It is set to **0**.|
7786e41f4b71Sopenharmony_ci
7787e41f4b71Sopenharmony_ci**Return value**
7788e41f4b71Sopenharmony_ci
7789e41f4b71Sopenharmony_ci| Type   | Description                                    |
7790e41f4b71Sopenharmony_ci| ------- | ---------------------------------------- |
7791e41f4b71Sopenharmony_ci| boolean | Returns **true** if the callback is removed; returns **false** otherwise.|
7792e41f4b71Sopenharmony_ci
7793e41f4b71Sopenharmony_ci**Example**
7794e41f4b71Sopenharmony_ci
7795e41f4b71Sopenharmony_ci  ```ts
7796e41f4b71Sopenharmony_ci  // If the FA model is used, import featureAbility from @kit.AbilityKit.
7797e41f4b71Sopenharmony_ci  // import { featureAbility } from '@kit.AbilityKit';
7798e41f4b71Sopenharmony_ci  import { Want, common } from '@kit.AbilityKit';
7799e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
7800e41f4b71Sopenharmony_ci
7801e41f4b71Sopenharmony_ci  let proxy: rpc.IRemoteObject | undefined;
7802e41f4b71Sopenharmony_ci  let connect: common.ConnectOptions = {
7803e41f4b71Sopenharmony_ci    onConnect: (elementName, remoteProxy) => {
7804e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcClient: js onConnect called');
7805e41f4b71Sopenharmony_ci      proxy = remoteProxy;
7806e41f4b71Sopenharmony_ci    },
7807e41f4b71Sopenharmony_ci    onDisconnect: (elementName) => {
7808e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcClient: onDisconnect');
7809e41f4b71Sopenharmony_ci    },
7810e41f4b71Sopenharmony_ci    onFailed: () => {
7811e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcClient: onFailed');
7812e41f4b71Sopenharmony_ci    }
7813e41f4b71Sopenharmony_ci  };
7814e41f4b71Sopenharmony_ci  let want: Want = {
7815e41f4b71Sopenharmony_ci    bundleName: "com.ohos.server",
7816e41f4b71Sopenharmony_ci    abilityName: "com.ohos.server.EntryAbility",
7817e41f4b71Sopenharmony_ci  };
7818e41f4b71Sopenharmony_ci
7819e41f4b71Sopenharmony_ci  // Use this method to connect to the ability for the FA model.
7820e41f4b71Sopenharmony_ci  // FA.connectAbility(want,connect);
7821e41f4b71Sopenharmony_ci
7822e41f4b71Sopenharmony_ci  // Save the connection ID, which will be used for the subsequent service disconnection.
7823e41f4b71Sopenharmony_ci  let context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext; // UIAbilityContext
7824e41f4b71Sopenharmony_ci  // Save the connection ID, which will be used for the subsequent service disconnection.
7825e41f4b71Sopenharmony_ci  let connectionId = context.connectServiceExtensionAbility(want, connect);
7826e41f4b71Sopenharmony_ci  ```
7827e41f4b71Sopenharmony_ci
7828e41f4b71Sopenharmony_ci  The proxy object in the **onConnect** callback can be assigned a value only after the ability is connected asynchronously. Then, **removeDeathRecipient()** of the proxy object is called to remove the callback used to receive the death notification of the remote object.
7829e41f4b71Sopenharmony_ci
7830e41f4b71Sopenharmony_ci  ```ts
7831e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
7832e41f4b71Sopenharmony_ci
7833e41f4b71Sopenharmony_ci  class MyDeathRecipient implements rpc.DeathRecipient {
7834e41f4b71Sopenharmony_ci    onRemoteDied() {
7835e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'server died');
7836e41f4b71Sopenharmony_ci    }
7837e41f4b71Sopenharmony_ci  }
7838e41f4b71Sopenharmony_ci  let deathRecipient = new MyDeathRecipient();
7839e41f4b71Sopenharmony_ci  if (proxy != undefined) {
7840e41f4b71Sopenharmony_ci    proxy.addDeathRecipient(deathRecipient, 0);
7841e41f4b71Sopenharmony_ci    proxy.removeDeathRecipient(deathRecipient, 0);
7842e41f4b71Sopenharmony_ci  }
7843e41f4b71Sopenharmony_ci  ```
7844e41f4b71Sopenharmony_ci
7845e41f4b71Sopenharmony_ci### getDescriptor<sup>9+</sup>
7846e41f4b71Sopenharmony_ci
7847e41f4b71Sopenharmony_cigetDescriptor(): string
7848e41f4b71Sopenharmony_ci
7849e41f4b71Sopenharmony_ciObtains the interface descriptor (which is a string) of this object.
7850e41f4b71Sopenharmony_ci
7851e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
7852e41f4b71Sopenharmony_ci
7853e41f4b71Sopenharmony_ci**Return value**
7854e41f4b71Sopenharmony_ci
7855e41f4b71Sopenharmony_ci| Type  | Description            |
7856e41f4b71Sopenharmony_ci| ------ | ---------------- |
7857e41f4b71Sopenharmony_ci| string | Interface descriptor obtained.|
7858e41f4b71Sopenharmony_ci
7859e41f4b71Sopenharmony_ci**Error codes**
7860e41f4b71Sopenharmony_ci
7861e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
7862e41f4b71Sopenharmony_ci
7863e41f4b71Sopenharmony_ci| ID| Error Message|
7864e41f4b71Sopenharmony_ci| -------- | -------- |
7865e41f4b71Sopenharmony_ci| 1900008  | proxy or remote object is invalid |
7866e41f4b71Sopenharmony_ci| 1900007  | communication failed              |
7867e41f4b71Sopenharmony_ci
7868e41f4b71Sopenharmony_ci**Example**
7869e41f4b71Sopenharmony_ci
7870e41f4b71Sopenharmony_ci  ```ts
7871e41f4b71Sopenharmony_ci  // If the FA model is used, import featureAbility from @kit.AbilityKit.
7872e41f4b71Sopenharmony_ci  // import { featureAbility } from '@kit.AbilityKit';
7873e41f4b71Sopenharmony_ci  import { Want, common } from '@kit.AbilityKit';
7874e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
7875e41f4b71Sopenharmony_ci
7876e41f4b71Sopenharmony_ci  let proxy: rpc.IRemoteObject | undefined;
7877e41f4b71Sopenharmony_ci  let connect: common.ConnectOptions = {
7878e41f4b71Sopenharmony_ci    onConnect: (elementName, remoteProxy) => {
7879e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcClient: js onConnect called');
7880e41f4b71Sopenharmony_ci      proxy = remoteProxy;
7881e41f4b71Sopenharmony_ci    },
7882e41f4b71Sopenharmony_ci    onDisconnect: (elementName) => {
7883e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcClient: onDisconnect');
7884e41f4b71Sopenharmony_ci    },
7885e41f4b71Sopenharmony_ci    onFailed: () => {
7886e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcClient: onFailed');
7887e41f4b71Sopenharmony_ci    }
7888e41f4b71Sopenharmony_ci  };
7889e41f4b71Sopenharmony_ci  let want: Want = {
7890e41f4b71Sopenharmony_ci    bundleName: "com.ohos.server",
7891e41f4b71Sopenharmony_ci    abilityName: "com.ohos.server.EntryAbility",
7892e41f4b71Sopenharmony_ci  };
7893e41f4b71Sopenharmony_ci
7894e41f4b71Sopenharmony_ci  // Use this method to connect to the ability for the FA model.
7895e41f4b71Sopenharmony_ci  // FA.connectAbility(want,connect);
7896e41f4b71Sopenharmony_ci
7897e41f4b71Sopenharmony_ci  // Save the connection ID, which will be used for the subsequent service disconnection.
7898e41f4b71Sopenharmony_ci  let context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext; // UIAbilityContext
7899e41f4b71Sopenharmony_ci  // Save the connection ID, which will be used for the subsequent service disconnection.
7900e41f4b71Sopenharmony_ci  let connectionId = context.connectServiceExtensionAbility(want, connect);
7901e41f4b71Sopenharmony_ci  ```
7902e41f4b71Sopenharmony_ci  The proxy object in the **onConnect** callback can be assigned a value only after the ability is connected asynchronously. Then, **getDescriptor()** of the proxy object is called to obtain the interface descriptor of the object.
7903e41f4b71Sopenharmony_ci
7904e41f4b71Sopenharmony_ci  ```ts
7905e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
7906e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
7907e41f4b71Sopenharmony_ci
7908e41f4b71Sopenharmony_ci  if (proxy != undefined) {
7909e41f4b71Sopenharmony_ci    try {
7910e41f4b71Sopenharmony_ci      let descriptor: string = proxy.getDescriptor();
7911e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcClient: descriptor is ' + descriptor);
7912e41f4b71Sopenharmony_ci    } catch (error) {
7913e41f4b71Sopenharmony_ci      let e: BusinessError = error as BusinessError;
7914e41f4b71Sopenharmony_ci      hilog.error(0x0000, 'testTag', 'rpc get interface descriptor fail, errorCode ' + e.code);
7915e41f4b71Sopenharmony_ci      hilog.error(0x0000, 'testTag', 'rpc get interface descriptor fail, errorMessage ' + e.message);
7916e41f4b71Sopenharmony_ci    }
7917e41f4b71Sopenharmony_ci  }
7918e41f4b71Sopenharmony_ci  ```
7919e41f4b71Sopenharmony_ci
7920e41f4b71Sopenharmony_ci### getInterfaceDescriptor<sup>(deprecated)</sup>
7921e41f4b71Sopenharmony_ci
7922e41f4b71Sopenharmony_ci>**NOTE**<br>This API is no longer maintained since API version 9. Use [getDescriptor](#getdescriptor9-1) instead.
7923e41f4b71Sopenharmony_ci
7924e41f4b71Sopenharmony_cigetInterfaceDescriptor(): string
7925e41f4b71Sopenharmony_ci
7926e41f4b71Sopenharmony_ciObtains the interface descriptor of this proxy object.
7927e41f4b71Sopenharmony_ci
7928e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
7929e41f4b71Sopenharmony_ci
7930e41f4b71Sopenharmony_ci**Return value**
7931e41f4b71Sopenharmony_ci
7932e41f4b71Sopenharmony_ci| Type  | Description              |
7933e41f4b71Sopenharmony_ci| ------ | ------------------ |
7934e41f4b71Sopenharmony_ci| string | Interface descriptor obtained.|
7935e41f4b71Sopenharmony_ci
7936e41f4b71Sopenharmony_ci**Example**
7937e41f4b71Sopenharmony_ci
7938e41f4b71Sopenharmony_ci  ```ts
7939e41f4b71Sopenharmony_ci  // If the FA model is used, import featureAbility from @kit.AbilityKit.
7940e41f4b71Sopenharmony_ci  // import { featureAbility } from '@kit.AbilityKit';
7941e41f4b71Sopenharmony_ci  import { Want, common } from '@kit.AbilityKit';
7942e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
7943e41f4b71Sopenharmony_ci
7944e41f4b71Sopenharmony_ci  let proxy: rpc.IRemoteObject | undefined;
7945e41f4b71Sopenharmony_ci  let connect: common.ConnectOptions = {
7946e41f4b71Sopenharmony_ci    onConnect: (elementName, remoteProxy) => {
7947e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcClient: js onConnect called');
7948e41f4b71Sopenharmony_ci      proxy = remoteProxy;
7949e41f4b71Sopenharmony_ci    },
7950e41f4b71Sopenharmony_ci    onDisconnect: (elementName) => {
7951e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcClient: onDisconnect');
7952e41f4b71Sopenharmony_ci    },
7953e41f4b71Sopenharmony_ci    onFailed: () => {
7954e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcClient: onFailed');
7955e41f4b71Sopenharmony_ci    }
7956e41f4b71Sopenharmony_ci  };
7957e41f4b71Sopenharmony_ci  let want: Want = {
7958e41f4b71Sopenharmony_ci    bundleName: "com.ohos.server",
7959e41f4b71Sopenharmony_ci    abilityName: "com.ohos.server.EntryAbility",
7960e41f4b71Sopenharmony_ci  };
7961e41f4b71Sopenharmony_ci
7962e41f4b71Sopenharmony_ci  // Use this method to connect to the ability for the FA model.
7963e41f4b71Sopenharmony_ci  // FA.connectAbility(want,connect);
7964e41f4b71Sopenharmony_ci
7965e41f4b71Sopenharmony_ci  // Save the connection ID, which will be used for the subsequent service disconnection.
7966e41f4b71Sopenharmony_ci  let context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext; // UIAbilityContext
7967e41f4b71Sopenharmony_ci  // Save the connection ID, which will be used for the subsequent service disconnection.
7968e41f4b71Sopenharmony_ci  let connectionId = context.connectServiceExtensionAbility(want, connect);
7969e41f4b71Sopenharmony_ci  ```
7970e41f4b71Sopenharmony_ci
7971e41f4b71Sopenharmony_ci  The proxy object in the **onConnect** callback can be assigned a value only after the ability is connected asynchronously. Then, **getInterfaceDescriptor()** of the proxy object is called to obtain the interface descriptor of the current proxy object.
7972e41f4b71Sopenharmony_ci
7973e41f4b71Sopenharmony_ci  ```ts
7974e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
7975e41f4b71Sopenharmony_ci
7976e41f4b71Sopenharmony_ci  if (proxy != undefined) {
7977e41f4b71Sopenharmony_ci    let descriptor: string = proxy.getInterfaceDescriptor();
7978e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', 'RpcClient: descriptor is ' + descriptor);
7979e41f4b71Sopenharmony_ci  }
7980e41f4b71Sopenharmony_ci  ```
7981e41f4b71Sopenharmony_ci
7982e41f4b71Sopenharmony_ci### isObjectDead
7983e41f4b71Sopenharmony_ci
7984e41f4b71Sopenharmony_ciisObjectDead(): boolean
7985e41f4b71Sopenharmony_ci
7986e41f4b71Sopenharmony_ciChecks whether the **RemoteObject** is dead.
7987e41f4b71Sopenharmony_ci
7988e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
7989e41f4b71Sopenharmony_ci
7990e41f4b71Sopenharmony_ci**Return value**
7991e41f4b71Sopenharmony_ci
7992e41f4b71Sopenharmony_ci| Type   | Description                                             |
7993e41f4b71Sopenharmony_ci| ------- | ------------------------------------------------- |
7994e41f4b71Sopenharmony_ci| boolean | Returns **true** if **RemoteObject** is dead; returns **false** otherwise.|
7995e41f4b71Sopenharmony_ci
7996e41f4b71Sopenharmony_ci**Example**
7997e41f4b71Sopenharmony_ci
7998e41f4b71Sopenharmony_ci  ```ts
7999e41f4b71Sopenharmony_ci  // If the FA model is used, import featureAbility from @kit.AbilityKit.
8000e41f4b71Sopenharmony_ci  // import { featureAbility } from '@kit.AbilityKit';
8001e41f4b71Sopenharmony_ci  import { Want, common } from '@kit.AbilityKit';
8002e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
8003e41f4b71Sopenharmony_ci
8004e41f4b71Sopenharmony_ci  let proxy: rpc.IRemoteObject | undefined;
8005e41f4b71Sopenharmony_ci  let connect: common.ConnectOptions = {
8006e41f4b71Sopenharmony_ci    onConnect: (elementName, remoteProxy) => {
8007e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcClient: js onConnect called');
8008e41f4b71Sopenharmony_ci      proxy = remoteProxy;
8009e41f4b71Sopenharmony_ci    },
8010e41f4b71Sopenharmony_ci    onDisconnect: (elementName) => {
8011e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcClient: onDisconnect');
8012e41f4b71Sopenharmony_ci    },
8013e41f4b71Sopenharmony_ci    onFailed: () => {
8014e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcClient: onFailed');
8015e41f4b71Sopenharmony_ci    }
8016e41f4b71Sopenharmony_ci  };
8017e41f4b71Sopenharmony_ci  let want: Want = {
8018e41f4b71Sopenharmony_ci    bundleName: "com.ohos.server",
8019e41f4b71Sopenharmony_ci    abilityName: "com.ohos.server.EntryAbility",
8020e41f4b71Sopenharmony_ci  };
8021e41f4b71Sopenharmony_ci
8022e41f4b71Sopenharmony_ci  // Use this method to connect to the ability for the FA model.
8023e41f4b71Sopenharmony_ci  // FA.connectAbility(want,connect);
8024e41f4b71Sopenharmony_ci
8025e41f4b71Sopenharmony_ci  // Save the connection ID, which will be used for the subsequent service disconnection.
8026e41f4b71Sopenharmony_ci  let context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext; // UIAbilityContext
8027e41f4b71Sopenharmony_ci  // Save the connection ID, which will be used for the subsequent service disconnection.
8028e41f4b71Sopenharmony_ci  let connectionId = context.connectServiceExtensionAbility(want, connect);
8029e41f4b71Sopenharmony_ci  ```
8030e41f4b71Sopenharmony_ci
8031e41f4b71Sopenharmony_ci  The proxy object in the **onConnect** callback can be assigned a value only after the ability is connected asynchronously. Then, **isObjectDead()** of the proxy object is called to check whether this object is dead.
8032e41f4b71Sopenharmony_ci
8033e41f4b71Sopenharmony_ci  ```ts
8034e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
8035e41f4b71Sopenharmony_ci
8036e41f4b71Sopenharmony_ci  if (proxy != undefined) {
8037e41f4b71Sopenharmony_ci    let isDead: boolean = proxy.isObjectDead();
8038e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', 'RpcClient: isObjectDead is ' + isDead);
8039e41f4b71Sopenharmony_ci  }
8040e41f4b71Sopenharmony_ci  ```
8041e41f4b71Sopenharmony_ci
8042e41f4b71Sopenharmony_ci## MessageOption
8043e41f4b71Sopenharmony_ci
8044e41f4b71Sopenharmony_ciDefines the options used to construct the **MessageOption** object.
8045e41f4b71Sopenharmony_ci
8046e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
8047e41f4b71Sopenharmony_ci
8048e41f4b71Sopenharmony_ci| Name         | Value       | Description                                                       |
8049e41f4b71Sopenharmony_ci| ------------- | --------- | ----------------------------------------------------------- |
8050e41f4b71Sopenharmony_ci| TF_SYNC       | 0 (0x00)  | Synchronous call.                                             |
8051e41f4b71Sopenharmony_ci| TF_ASYNC      | 1 (0x01)  | Asynchronous call.                                             |
8052e41f4b71Sopenharmony_ci| TF_ACCEPT_FDS | 16 (0x10) | Indication to **sendMessageRequest<sup>9+</sup>** for returning the file descriptor.|
8053e41f4b71Sopenharmony_ci| TF_WAIT_TIME  | 8 (0x8)   | RPC wait time, in seconds. This parameter cannot be used in IPC.                                    |
8054e41f4b71Sopenharmony_ci
8055e41f4b71Sopenharmony_ci### constructor<sup>9+</sup>
8056e41f4b71Sopenharmony_ci
8057e41f4b71Sopenharmony_ciconstructor(async?: boolean)
8058e41f4b71Sopenharmony_ci
8059e41f4b71Sopenharmony_ciA constructor used to create a **MessageOption** object.
8060e41f4b71Sopenharmony_ci
8061e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
8062e41f4b71Sopenharmony_ci
8063e41f4b71Sopenharmony_ci**Parameters**
8064e41f4b71Sopenharmony_ci
8065e41f4b71Sopenharmony_ci| Name| Type   | Mandatory| Description                                                        |
8066e41f4b71Sopenharmony_ci| ------ | ------- | ---- | ------------------------------------------------------------ |
8067e41f4b71Sopenharmony_ci| async  | boolean | No  | Whether to execute the call asynchronously. The value **true** means to execute the call asynchronously; the value **false** means to execute the call synchronously. By default, calls are made synchronously.|
8068e41f4b71Sopenharmony_ci
8069e41f4b71Sopenharmony_ci**Example**
8070e41f4b71Sopenharmony_ci
8071e41f4b71Sopenharmony_ci  ```ts
8072e41f4b71Sopenharmony_ci  class TestRemoteObject extends rpc.MessageOption {
8073e41f4b71Sopenharmony_ci    constructor(async: boolean) {
8074e41f4b71Sopenharmony_ci      super(async);
8075e41f4b71Sopenharmony_ci    }
8076e41f4b71Sopenharmony_ci  }
8077e41f4b71Sopenharmony_ci  ```
8078e41f4b71Sopenharmony_ci
8079e41f4b71Sopenharmony_ci### constructor
8080e41f4b71Sopenharmony_ci
8081e41f4b71Sopenharmony_ciconstructor(syncFlags?: number, waitTime?: number)
8082e41f4b71Sopenharmony_ci
8083e41f4b71Sopenharmony_ciA constructor used to create a **MessageOption** object.
8084e41f4b71Sopenharmony_ci
8085e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
8086e41f4b71Sopenharmony_ci
8087e41f4b71Sopenharmony_ci**Parameters**
8088e41f4b71Sopenharmony_ci
8089e41f4b71Sopenharmony_ci| Name   | Type  | Mandatory| Description                                         |
8090e41f4b71Sopenharmony_ci| --------- | ------ | ---- | --------------------------------------------- |
8091e41f4b71Sopenharmony_ci| syncFlags | number | No  | Call flag, which can be synchronous or asynchronous. The default value is **synchronous**.       |
8092e41f4b71Sopenharmony_ci| waitTime  | number | No  | Maximum wait time for an RPC call. The default value is **TF_WAIT_TIME**.|
8093e41f4b71Sopenharmony_ci
8094e41f4b71Sopenharmony_ci**Example**
8095e41f4b71Sopenharmony_ci
8096e41f4b71Sopenharmony_ci  ```ts
8097e41f4b71Sopenharmony_ci  class TestRemoteObject extends rpc.MessageOption {
8098e41f4b71Sopenharmony_ci    constructor(syncFlags?: number,waitTime?: number) {
8099e41f4b71Sopenharmony_ci      super(syncFlags,waitTime);
8100e41f4b71Sopenharmony_ci    }
8101e41f4b71Sopenharmony_ci  }
8102e41f4b71Sopenharmony_ci  ```
8103e41f4b71Sopenharmony_ci### isAsync<sup>9+</sup>
8104e41f4b71Sopenharmony_ci
8105e41f4b71Sopenharmony_ciisAsync(): boolean
8106e41f4b71Sopenharmony_ci
8107e41f4b71Sopenharmony_ciChecks whether **SendMessageRequest** is called synchronously or asynchronously.
8108e41f4b71Sopenharmony_ci
8109e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
8110e41f4b71Sopenharmony_ci
8111e41f4b71Sopenharmony_ci**Return value**
8112e41f4b71Sopenharmony_ci
8113e41f4b71Sopenharmony_ci| Type   | Description                                    |
8114e41f4b71Sopenharmony_ci| ------- | ---------------------------------------- |
8115e41f4b71Sopenharmony_ci| boolean | Returns **true** if **SendMessageRequest** is called asynchronously; returns **false** if it is called synchronously.|
8116e41f4b71Sopenharmony_ci
8117e41f4b71Sopenharmony_ci**Example**
8118e41f4b71Sopenharmony_ci
8119e41f4b71Sopenharmony_ci  ```ts
8120e41f4b71Sopenharmony_ci  let option = new rpc.MessageOption();
8121e41f4b71Sopenharmony_ci  option.isAsync();
8122e41f4b71Sopenharmony_ci  ```
8123e41f4b71Sopenharmony_ci
8124e41f4b71Sopenharmony_ci### setAsync<sup>9+</sup>
8125e41f4b71Sopenharmony_ci
8126e41f4b71Sopenharmony_cisetAsync(async: boolean): void
8127e41f4b71Sopenharmony_ci
8128e41f4b71Sopenharmony_ciSets the calling flag in **SendMessageRequest**.
8129e41f4b71Sopenharmony_ci
8130e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
8131e41f4b71Sopenharmony_ci
8132e41f4b71Sopenharmony_ci**Parameters**
8133e41f4b71Sopenharmony_ci
8134e41f4b71Sopenharmony_ci| Name| Type   | Mandatory| Description                                             |
8135e41f4b71Sopenharmony_ci| ------ | ------- | ---- | ------------------------------------------------- |
8136e41f4b71Sopenharmony_ci| async  | boolean | Yes  | Whether to execute the call asynchronously. The value **true** means to execute the call asynchronously; the value **false** means to execute the call synchronously.|
8137e41f4b71Sopenharmony_ci
8138e41f4b71Sopenharmony_ci**Example**
8139e41f4b71Sopenharmony_ci
8140e41f4b71Sopenharmony_ci  ```ts
8141e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
8142e41f4b71Sopenharmony_ci
8143e41f4b71Sopenharmony_ci  let option = new rpc.MessageOption();
8144e41f4b71Sopenharmony_ci  option.setAsync(true);
8145e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'Set asynchronization flag');
8146e41f4b71Sopenharmony_ci  ```
8147e41f4b71Sopenharmony_ci
8148e41f4b71Sopenharmony_ci### getFlags
8149e41f4b71Sopenharmony_ci
8150e41f4b71Sopenharmony_cigetFlags(): number
8151e41f4b71Sopenharmony_ci
8152e41f4b71Sopenharmony_ciObtains the call flag, which can be synchronous or asynchronous.
8153e41f4b71Sopenharmony_ci
8154e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
8155e41f4b71Sopenharmony_ci
8156e41f4b71Sopenharmony_ci**Return value**
8157e41f4b71Sopenharmony_ci
8158e41f4b71Sopenharmony_ci| Type  | Description                                |
8159e41f4b71Sopenharmony_ci| ------ | ------------------------------------ |
8160e41f4b71Sopenharmony_ci| number | Call mode obtained.|
8161e41f4b71Sopenharmony_ci
8162e41f4b71Sopenharmony_ci**Example**
8163e41f4b71Sopenharmony_ci
8164e41f4b71Sopenharmony_ci  ```ts
8165e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
8166e41f4b71Sopenharmony_ci
8167e41f4b71Sopenharmony_ci  try {
8168e41f4b71Sopenharmony_ci    let option = new rpc.MessageOption();
8169e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', 'create object successfully');
8170e41f4b71Sopenharmony_ci    let flog = option.getFlags();
8171e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', 'run getFlags success, flog is ' + flog);
8172e41f4b71Sopenharmony_ci    option.setFlags(1)
8173e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', 'run setFlags success');
8174e41f4b71Sopenharmony_ci    let flog2 = option.getFlags();
8175e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', 'run getFlags success, flog2 is ' + flog2);
8176e41f4b71Sopenharmony_ci  } catch (error) {
8177e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'error ' + error);
8178e41f4b71Sopenharmony_ci  }
8179e41f4b71Sopenharmony_ci  ```
8180e41f4b71Sopenharmony_ci
8181e41f4b71Sopenharmony_ci### setFlags
8182e41f4b71Sopenharmony_ci
8183e41f4b71Sopenharmony_cisetFlags(flags: number): void
8184e41f4b71Sopenharmony_ci
8185e41f4b71Sopenharmony_ciSets the call flag, which can be synchronous or asynchronous.
8186e41f4b71Sopenharmony_ci
8187e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
8188e41f4b71Sopenharmony_ci
8189e41f4b71Sopenharmony_ci**Parameters**
8190e41f4b71Sopenharmony_ci
8191e41f4b71Sopenharmony_ci| Name| Type  | Mandatory| Description                    |
8192e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------ |
8193e41f4b71Sopenharmony_ci| flags  | number | Yes  | Call flag to set.|
8194e41f4b71Sopenharmony_ci
8195e41f4b71Sopenharmony_ci**Example**
8196e41f4b71Sopenharmony_ci
8197e41f4b71Sopenharmony_ci  ```ts
8198e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
8199e41f4b71Sopenharmony_ci
8200e41f4b71Sopenharmony_ci  try {
8201e41f4b71Sopenharmony_ci    let option = new rpc.MessageOption();
8202e41f4b71Sopenharmony_ci    option.setFlags(1)
8203e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', 'run setFlags success');
8204e41f4b71Sopenharmony_ci    let flog = option.getFlags();
8205e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', 'run getFlags success, flog is ' + flog);
8206e41f4b71Sopenharmony_ci  } catch (error) {
8207e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'error ' + error);
8208e41f4b71Sopenharmony_ci  }
8209e41f4b71Sopenharmony_ci  ```
8210e41f4b71Sopenharmony_ci
8211e41f4b71Sopenharmony_ci### getWaitTime
8212e41f4b71Sopenharmony_ci
8213e41f4b71Sopenharmony_cigetWaitTime(): number
8214e41f4b71Sopenharmony_ci
8215e41f4b71Sopenharmony_ciObtains the maximum wait time for this RPC call.
8216e41f4b71Sopenharmony_ci
8217e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
8218e41f4b71Sopenharmony_ci
8219e41f4b71Sopenharmony_ci**Return value**
8220e41f4b71Sopenharmony_ci
8221e41f4b71Sopenharmony_ci| Type  | Description             |
8222e41f4b71Sopenharmony_ci| ------ | ----------------- |
8223e41f4b71Sopenharmony_ci| number | Maximum wait time obtained.|
8224e41f4b71Sopenharmony_ci
8225e41f4b71Sopenharmony_ci**Example**
8226e41f4b71Sopenharmony_ci
8227e41f4b71Sopenharmony_ci  ```ts
8228e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
8229e41f4b71Sopenharmony_ci
8230e41f4b71Sopenharmony_ci  try {
8231e41f4b71Sopenharmony_ci    let option = new rpc.MessageOption();
8232e41f4b71Sopenharmony_ci    let time = option.getWaitTime();
8233e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', 'run getWaitTime success, time is ' + time);
8234e41f4b71Sopenharmony_ci    option.setWaitTime(16);
8235e41f4b71Sopenharmony_ci    let time2 = option.getWaitTime();
8236e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', 'run getWaitTime success, time is ' + time2);
8237e41f4b71Sopenharmony_ci  } catch (error) {
8238e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'error ' + error);
8239e41f4b71Sopenharmony_ci  }
8240e41f4b71Sopenharmony_ci  ```
8241e41f4b71Sopenharmony_ci
8242e41f4b71Sopenharmony_ci### setWaitTime
8243e41f4b71Sopenharmony_ci
8244e41f4b71Sopenharmony_cisetWaitTime(waitTime: number): void
8245e41f4b71Sopenharmony_ci
8246e41f4b71Sopenharmony_ciSets the maximum wait time for this RPC call.
8247e41f4b71Sopenharmony_ci
8248e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
8249e41f4b71Sopenharmony_ci
8250e41f4b71Sopenharmony_ci**Parameters**
8251e41f4b71Sopenharmony_ci
8252e41f4b71Sopenharmony_ci| Name  | Type  | Mandatory| Description                 |
8253e41f4b71Sopenharmony_ci| -------- | ------ | ---- | --------------------- |
8254e41f4b71Sopenharmony_ci| waitTime | number | Yes  | Maximum wait time to set. The upper limit is 3000 seconds.|
8255e41f4b71Sopenharmony_ci
8256e41f4b71Sopenharmony_ci**Example**
8257e41f4b71Sopenharmony_ci
8258e41f4b71Sopenharmony_ci  ```ts
8259e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
8260e41f4b71Sopenharmony_ci
8261e41f4b71Sopenharmony_ci  try {
8262e41f4b71Sopenharmony_ci    let option = new rpc.MessageOption();
8263e41f4b71Sopenharmony_ci    option.setWaitTime(16);
8264e41f4b71Sopenharmony_ci    let time = option.getWaitTime();
8265e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', 'run getWaitTime success, time is ' + time);
8266e41f4b71Sopenharmony_ci  } catch (error) {
8267e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'error ' + error);
8268e41f4b71Sopenharmony_ci  }
8269e41f4b71Sopenharmony_ci  ```
8270e41f4b71Sopenharmony_ci
8271e41f4b71Sopenharmony_ci## IPCSkeleton
8272e41f4b71Sopenharmony_ci
8273e41f4b71Sopenharmony_ciObtains IPC context information, including the UID and PID, local and remote device IDs, and whether the method is invoked on the same device.
8274e41f4b71Sopenharmony_ci
8275e41f4b71Sopenharmony_ci### getContextObject
8276e41f4b71Sopenharmony_ci
8277e41f4b71Sopenharmony_cistatic getContextObject(): IRemoteObject
8278e41f4b71Sopenharmony_ci
8279e41f4b71Sopenharmony_ciObtains the system capability manager. This API is a static method.
8280e41f4b71Sopenharmony_ci
8281e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
8282e41f4b71Sopenharmony_ci
8283e41f4b71Sopenharmony_ci**Return value**
8284e41f4b71Sopenharmony_ci
8285e41f4b71Sopenharmony_ci| Type                           | Description                |
8286e41f4b71Sopenharmony_ci| ------------------------------- | -------------------- |
8287e41f4b71Sopenharmony_ci| [IRemoteObject](#iremoteobject) | System capability manager obtained.|
8288e41f4b71Sopenharmony_ci
8289e41f4b71Sopenharmony_ci**Example**
8290e41f4b71Sopenharmony_ci
8291e41f4b71Sopenharmony_ci  ```ts
8292e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
8293e41f4b71Sopenharmony_ci
8294e41f4b71Sopenharmony_ci  let samgr = rpc.IPCSkeleton.getContextObject();
8295e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcServer: getContextObject result: ' + samgr);
8296e41f4b71Sopenharmony_ci  ```
8297e41f4b71Sopenharmony_ci
8298e41f4b71Sopenharmony_ci### getCallingPid
8299e41f4b71Sopenharmony_ci
8300e41f4b71Sopenharmony_cistatic getCallingPid(): number
8301e41f4b71Sopenharmony_ci
8302e41f4b71Sopenharmony_ciObtains the PID of the caller. This API is a static method, which is invoked by the **RemoteObject** object in the **onRemoteRequest** method. If this method is not invoked in the IPC context (**onRemoteRequest**), the PID of the process will be returned.
8303e41f4b71Sopenharmony_ci
8304e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
8305e41f4b71Sopenharmony_ci
8306e41f4b71Sopenharmony_ci**Return value**
8307e41f4b71Sopenharmony_ci
8308e41f4b71Sopenharmony_ci| Type  | Description             |
8309e41f4b71Sopenharmony_ci| ------ | ----------------- |
8310e41f4b71Sopenharmony_ci| number | PID of the caller.|
8311e41f4b71Sopenharmony_ci
8312e41f4b71Sopenharmony_ci**Example**
8313e41f4b71Sopenharmony_ci
8314e41f4b71Sopenharmony_ci  ```ts
8315e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
8316e41f4b71Sopenharmony_ci
8317e41f4b71Sopenharmony_ci  class Stub extends rpc.RemoteObject {
8318e41f4b71Sopenharmony_ci    onRemoteMessageRequest(code: number, data: rpc.MessageSequence, reply: rpc.MessageSequence, option: rpc.MessageOption): boolean | Promise<boolean> {
8319e41f4b71Sopenharmony_ci      let callerPid = rpc.IPCSkeleton.getCallingPid();
8320e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcServer: getCallingPid result: ' + callerPid);
8321e41f4b71Sopenharmony_ci      return true;
8322e41f4b71Sopenharmony_ci    }
8323e41f4b71Sopenharmony_ci }
8324e41f4b71Sopenharmony_ci  ```
8325e41f4b71Sopenharmony_ci
8326e41f4b71Sopenharmony_ci### getCallingUid
8327e41f4b71Sopenharmony_ci
8328e41f4b71Sopenharmony_cistatic getCallingUid(): number
8329e41f4b71Sopenharmony_ci
8330e41f4b71Sopenharmony_ciObtains the UID of the caller. This API is a static method, which is invoked by the **RemoteObject** object in the **onRemoteRequest** method. If this method is not invoked in the IPC context (**onRemoteRequest**), the UID of the process will be returned.
8331e41f4b71Sopenharmony_ci
8332e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
8333e41f4b71Sopenharmony_ci
8334e41f4b71Sopenharmony_ci**Return value**
8335e41f4b71Sopenharmony_ci
8336e41f4b71Sopenharmony_ci| Type  | Description             |
8337e41f4b71Sopenharmony_ci| ------ | ----------------- |
8338e41f4b71Sopenharmony_ci| number | UID of the caller.|
8339e41f4b71Sopenharmony_ci
8340e41f4b71Sopenharmony_ci**Example**
8341e41f4b71Sopenharmony_ci
8342e41f4b71Sopenharmony_ci  ```ts
8343e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
8344e41f4b71Sopenharmony_ci
8345e41f4b71Sopenharmony_ci  class Stub extends rpc.RemoteObject {
8346e41f4b71Sopenharmony_ci    onRemoteMessageRequest(code: number, data: rpc.MessageSequence, reply: rpc.MessageSequence, option: rpc.MessageOption): boolean | Promise<boolean> {
8347e41f4b71Sopenharmony_ci      let callerUid = rpc.IPCSkeleton.getCallingUid();
8348e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcServer: getCallingUid result: ' + callerUid);
8349e41f4b71Sopenharmony_ci      return true;
8350e41f4b71Sopenharmony_ci    }
8351e41f4b71Sopenharmony_ci  }
8352e41f4b71Sopenharmony_ci  ```
8353e41f4b71Sopenharmony_ci
8354e41f4b71Sopenharmony_ci### getCallingTokenId<sup>8+</sup>
8355e41f4b71Sopenharmony_ci
8356e41f4b71Sopenharmony_cistatic getCallingTokenId(): number
8357e41f4b71Sopenharmony_ci
8358e41f4b71Sopenharmony_ciObtains the caller's token ID, which is used to verify the caller identity.
8359e41f4b71Sopenharmony_ci
8360e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
8361e41f4b71Sopenharmony_ci
8362e41f4b71Sopenharmony_ci**Return value**
8363e41f4b71Sopenharmony_ci
8364e41f4b71Sopenharmony_ci| Type  | Description                 |
8365e41f4b71Sopenharmony_ci| ------ | --------------------- |
8366e41f4b71Sopenharmony_ci| number | Token ID of the caller obtained.|
8367e41f4b71Sopenharmony_ci
8368e41f4b71Sopenharmony_ci**Example**
8369e41f4b71Sopenharmony_ci
8370e41f4b71Sopenharmony_ci  ```ts
8371e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
8372e41f4b71Sopenharmony_ci
8373e41f4b71Sopenharmony_ci  class Stub extends rpc.RemoteObject {
8374e41f4b71Sopenharmony_ci    onRemoteMessageRequest(code: number, data: rpc.MessageSequence, reply: rpc.MessageSequence, option: rpc.MessageOption): boolean | Promise<boolean> {
8375e41f4b71Sopenharmony_ci      let callerTokenId = rpc.IPCSkeleton.getCallingTokenId();
8376e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcServer: getCallingTokenId result: ' + callerTokenId);
8377e41f4b71Sopenharmony_ci      return true;
8378e41f4b71Sopenharmony_ci    }
8379e41f4b71Sopenharmony_ci  }
8380e41f4b71Sopenharmony_ci  ```
8381e41f4b71Sopenharmony_ci
8382e41f4b71Sopenharmony_ci### getCallingDeviceID
8383e41f4b71Sopenharmony_ci
8384e41f4b71Sopenharmony_cistatic getCallingDeviceID(): string
8385e41f4b71Sopenharmony_ci
8386e41f4b71Sopenharmony_ciObtains the ID of the device hosting the caller's process. This API is a static method.
8387e41f4b71Sopenharmony_ci
8388e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
8389e41f4b71Sopenharmony_ci
8390e41f4b71Sopenharmony_ci**Return value**
8391e41f4b71Sopenharmony_ci
8392e41f4b71Sopenharmony_ci| Type  | Description                        |
8393e41f4b71Sopenharmony_ci| ------ | ---------------------------- |
8394e41f4b71Sopenharmony_ci| string | Device ID obtained.|
8395e41f4b71Sopenharmony_ci
8396e41f4b71Sopenharmony_ci**Example**
8397e41f4b71Sopenharmony_ci
8398e41f4b71Sopenharmony_ci  ```ts
8399e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
8400e41f4b71Sopenharmony_ci
8401e41f4b71Sopenharmony_ci  class Stub extends rpc.RemoteObject {
8402e41f4b71Sopenharmony_ci    onRemoteMessageRequest(code: number, data: rpc.MessageSequence, reply: rpc.MessageSequence, option: rpc.MessageOption): boolean | Promise<boolean> {
8403e41f4b71Sopenharmony_ci      let callerDeviceID = rpc.IPCSkeleton.getCallingDeviceID();
8404e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcServer: callerDeviceID is ' + callerDeviceID);
8405e41f4b71Sopenharmony_ci      return true;
8406e41f4b71Sopenharmony_ci    }
8407e41f4b71Sopenharmony_ci  }
8408e41f4b71Sopenharmony_ci  ```
8409e41f4b71Sopenharmony_ci
8410e41f4b71Sopenharmony_ci### getLocalDeviceID
8411e41f4b71Sopenharmony_ci
8412e41f4b71Sopenharmony_cistatic getLocalDeviceID(): string
8413e41f4b71Sopenharmony_ci
8414e41f4b71Sopenharmony_ciObtains the local device ID. This API is a static method.
8415e41f4b71Sopenharmony_ci
8416e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
8417e41f4b71Sopenharmony_ci
8418e41f4b71Sopenharmony_ci**Return value**
8419e41f4b71Sopenharmony_ci
8420e41f4b71Sopenharmony_ci| Type  | Description              |
8421e41f4b71Sopenharmony_ci| ------ | ------------------ |
8422e41f4b71Sopenharmony_ci| string | Local device ID obtained.|
8423e41f4b71Sopenharmony_ci
8424e41f4b71Sopenharmony_ci**Example**
8425e41f4b71Sopenharmony_ci
8426e41f4b71Sopenharmony_ci  ```ts
8427e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
8428e41f4b71Sopenharmony_ci
8429e41f4b71Sopenharmony_ci  class Stub extends rpc.RemoteObject {
8430e41f4b71Sopenharmony_ci    onRemoteMessageRequest(code: number, data: rpc.MessageSequence, reply: rpc.MessageSequence, option: rpc.MessageOption): boolean | Promise<boolean> {
8431e41f4b71Sopenharmony_ci      let localDeviceID = rpc.IPCSkeleton.getLocalDeviceID();
8432e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcServer: localDeviceID is ' + localDeviceID);
8433e41f4b71Sopenharmony_ci      return true;
8434e41f4b71Sopenharmony_ci    }
8435e41f4b71Sopenharmony_ci  }
8436e41f4b71Sopenharmony_ci  ```
8437e41f4b71Sopenharmony_ci
8438e41f4b71Sopenharmony_ci### isLocalCalling
8439e41f4b71Sopenharmony_ci
8440e41f4b71Sopenharmony_cistatic isLocalCalling(): boolean
8441e41f4b71Sopenharmony_ci
8442e41f4b71Sopenharmony_ciChecks whether the remote process is a process of the local device. This API is a static method.
8443e41f4b71Sopenharmony_ci
8444e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
8445e41f4b71Sopenharmony_ci
8446e41f4b71Sopenharmony_ci**Return value**
8447e41f4b71Sopenharmony_ci
8448e41f4b71Sopenharmony_ci| Type   | Description                                              |
8449e41f4b71Sopenharmony_ci| ------- | -------------------------------------------------- |
8450e41f4b71Sopenharmony_ci| boolean | Returns **true** if the local and remote processes are on the same device; returns **false** otherwise.|
8451e41f4b71Sopenharmony_ci
8452e41f4b71Sopenharmony_ci**Example**
8453e41f4b71Sopenharmony_ci
8454e41f4b71Sopenharmony_ci  ```ts
8455e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
8456e41f4b71Sopenharmony_ci
8457e41f4b71Sopenharmony_ci  class Stub extends rpc.RemoteObject {
8458e41f4b71Sopenharmony_ci    onRemoteMessageRequest(code: number, data: rpc.MessageSequence, reply: rpc.MessageSequence, option: rpc.MessageOption): boolean | Promise<boolean> {
8459e41f4b71Sopenharmony_ci      let isLocalCalling = rpc.IPCSkeleton.isLocalCalling();
8460e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcServer: isLocalCalling is ' + isLocalCalling);
8461e41f4b71Sopenharmony_ci      return true;
8462e41f4b71Sopenharmony_ci    }
8463e41f4b71Sopenharmony_ci  }
8464e41f4b71Sopenharmony_ci  ```
8465e41f4b71Sopenharmony_ci
8466e41f4b71Sopenharmony_ci### flushCmdBuffer<sup>9+</sup>
8467e41f4b71Sopenharmony_ci
8468e41f4b71Sopenharmony_cistatic flushCmdBuffer(object: IRemoteObject): void
8469e41f4b71Sopenharmony_ci
8470e41f4b71Sopenharmony_ciFlushes all suspended commands from the specified **RemoteProxy** to the corresponding **RemoteObject**. This API is a static method. You are advised to call this API before performing any sensitive operation.
8471e41f4b71Sopenharmony_ci
8472e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
8473e41f4b71Sopenharmony_ci
8474e41f4b71Sopenharmony_ci**Parameters**
8475e41f4b71Sopenharmony_ci
8476e41f4b71Sopenharmony_ci| Name| Type                           | Mandatory| Description               |
8477e41f4b71Sopenharmony_ci| ------ | ------------------------------- | ---- | ------------------- |
8478e41f4b71Sopenharmony_ci| object | [IRemoteObject](#iremoteobject) | Yes  | **RemoteProxy** specified. |
8479e41f4b71Sopenharmony_ci
8480e41f4b71Sopenharmony_ci**Error codes**
8481e41f4b71Sopenharmony_ci
8482e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
8483e41f4b71Sopenharmony_ci
8484e41f4b71Sopenharmony_ci| ID| Error Message|
8485e41f4b71Sopenharmony_ci| -------- | -------- |
8486e41f4b71Sopenharmony_ci| 401      | check param failed |
8487e41f4b71Sopenharmony_ci
8488e41f4b71Sopenharmony_ci**Example**
8489e41f4b71Sopenharmony_ci
8490e41f4b71Sopenharmony_ci  ```ts
8491e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
8492e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
8493e41f4b71Sopenharmony_ci
8494e41f4b71Sopenharmony_ci  class TestRemoteObject extends rpc.RemoteObject {
8495e41f4b71Sopenharmony_ci    constructor(descriptor: string) {
8496e41f4b71Sopenharmony_ci      super(descriptor);
8497e41f4b71Sopenharmony_ci    }
8498e41f4b71Sopenharmony_ci  }
8499e41f4b71Sopenharmony_ci  let remoteObject = new TestRemoteObject("aaa");
8500e41f4b71Sopenharmony_ci  try {
8501e41f4b71Sopenharmony_ci    rpc.IPCSkeleton.flushCmdBuffer(remoteObject);
8502e41f4b71Sopenharmony_ci  } catch (error) {
8503e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
8504e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'proxy flushCmdBuffer fail, errorCode ' + e.code);
8505e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'proxy flushCmdBuffer fail, errorMessage ' + e.message);
8506e41f4b71Sopenharmony_ci  }
8507e41f4b71Sopenharmony_ci  ```
8508e41f4b71Sopenharmony_ci
8509e41f4b71Sopenharmony_ci### flushCommands<sup>(deprecated)</sup>
8510e41f4b71Sopenharmony_ci
8511e41f4b71Sopenharmony_ci>**NOTE**<br>This API is no longer maintained since API version 9. Use [flushCmdBuffer](#flushcmdbuffer9) instead.
8512e41f4b71Sopenharmony_ci
8513e41f4b71Sopenharmony_cistatic flushCommands(object: IRemoteObject): number
8514e41f4b71Sopenharmony_ci
8515e41f4b71Sopenharmony_ciFlushes all suspended commands from the specified **RemoteProxy** to the corresponding **RemoteObject**. This API is a static method. You are advised to call this API before performing any sensitive operation.
8516e41f4b71Sopenharmony_ci
8517e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
8518e41f4b71Sopenharmony_ci
8519e41f4b71Sopenharmony_ci**Parameters**
8520e41f4b71Sopenharmony_ci
8521e41f4b71Sopenharmony_ci| Name| Type                           | Mandatory| Description               |
8522e41f4b71Sopenharmony_ci| ------ | ------------------------------- | ---- | ------------------- |
8523e41f4b71Sopenharmony_ci| object | [IRemoteObject](#iremoteobject) | Yes  | **RemoteProxy** specified. |
8524e41f4b71Sopenharmony_ci
8525e41f4b71Sopenharmony_ci**Return value**
8526e41f4b71Sopenharmony_ci
8527e41f4b71Sopenharmony_ci| Type  | Description                                                                             |
8528e41f4b71Sopenharmony_ci| ------ | --------------------------------------------------------------------------------- |
8529e41f4b71Sopenharmony_ci| number | Returns **0** if the operation is successful; returns an error code if the input object is null or a **RemoteObject**, or if the operation fails.|
8530e41f4b71Sopenharmony_ci
8531e41f4b71Sopenharmony_ci**Example**
8532e41f4b71Sopenharmony_ci
8533e41f4b71Sopenharmony_ci  ```ts
8534e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
8535e41f4b71Sopenharmony_ci
8536e41f4b71Sopenharmony_ci  class MyDeathRecipient implements rpc.DeathRecipient {
8537e41f4b71Sopenharmony_ci    onRemoteDied() {
8538e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'server died');
8539e41f4b71Sopenharmony_ci    }
8540e41f4b71Sopenharmony_ci  }
8541e41f4b71Sopenharmony_ci  class TestRemoteObject extends rpc.RemoteObject {
8542e41f4b71Sopenharmony_ci    constructor(descriptor: string) {
8543e41f4b71Sopenharmony_ci      super(descriptor);
8544e41f4b71Sopenharmony_ci    }
8545e41f4b71Sopenharmony_ci    addDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
8546e41f4b71Sopenharmony_ci      return true;
8547e41f4b71Sopenharmony_ci    }
8548e41f4b71Sopenharmony_ci    removeDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
8549e41f4b71Sopenharmony_ci      return true;
8550e41f4b71Sopenharmony_ci    }
8551e41f4b71Sopenharmony_ci    isObjectDead(): boolean {
8552e41f4b71Sopenharmony_ci      return false;
8553e41f4b71Sopenharmony_ci    }
8554e41f4b71Sopenharmony_ci  }
8555e41f4b71Sopenharmony_ci  let remoteObject = new TestRemoteObject("aaa");
8556e41f4b71Sopenharmony_ci  let ret = rpc.IPCSkeleton.flushCommands(remoteObject);
8557e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcServer: flushCommands result: ' + ret);
8558e41f4b71Sopenharmony_ci  ```
8559e41f4b71Sopenharmony_ci
8560e41f4b71Sopenharmony_ci### resetCallingIdentity
8561e41f4b71Sopenharmony_ci
8562e41f4b71Sopenharmony_cistatic resetCallingIdentity(): string
8563e41f4b71Sopenharmony_ci
8564e41f4b71Sopenharmony_ciResets the UID and PID of the remote user to those of the local user. This API is a static method and is used in scenarios such as identity authentication.
8565e41f4b71Sopenharmony_ci
8566e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
8567e41f4b71Sopenharmony_ci
8568e41f4b71Sopenharmony_ci**Return value**
8569e41f4b71Sopenharmony_ci
8570e41f4b71Sopenharmony_ci| Type  | Description                                |
8571e41f4b71Sopenharmony_ci| ------ | ------------------------------------ |
8572e41f4b71Sopenharmony_ci| string | String containing the UID and PID of the remote user.|
8573e41f4b71Sopenharmony_ci
8574e41f4b71Sopenharmony_ci**Example**
8575e41f4b71Sopenharmony_ci
8576e41f4b71Sopenharmony_ci  ```ts
8577e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
8578e41f4b71Sopenharmony_ci
8579e41f4b71Sopenharmony_ci  class Stub extends rpc.RemoteObject {
8580e41f4b71Sopenharmony_ci    onRemoteMessageRequest(code: number, data: rpc.MessageSequence, reply: rpc.MessageSequence, option: rpc.MessageOption): boolean | Promise<boolean> {
8581e41f4b71Sopenharmony_ci      let callingIdentity = rpc.IPCSkeleton.resetCallingIdentity();
8582e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcServer: callingIdentity is ' + callingIdentity);
8583e41f4b71Sopenharmony_ci      return true;
8584e41f4b71Sopenharmony_ci    }
8585e41f4b71Sopenharmony_ci  }
8586e41f4b71Sopenharmony_ci  ```
8587e41f4b71Sopenharmony_ci
8588e41f4b71Sopenharmony_ci### restoreCallingIdentity<sup>9+</sup>
8589e41f4b71Sopenharmony_ci
8590e41f4b71Sopenharmony_cistatic restoreCallingIdentity(identity: string): void
8591e41f4b71Sopenharmony_ci
8592e41f4b71Sopenharmony_ciRestores the UID and PID of the remote user. This API is a static method. It is usually called after **resetCallingIdentity**, and the UID and PID of the remote user returned by **resetCallingIdentity** are required.
8593e41f4b71Sopenharmony_ci
8594e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
8595e41f4b71Sopenharmony_ci
8596e41f4b71Sopenharmony_ci**Parameters**
8597e41f4b71Sopenharmony_ci
8598e41f4b71Sopenharmony_ci| Name  | Type  | Mandatory| Description                                                              |
8599e41f4b71Sopenharmony_ci| -------- | ------ | ---- | ------------------------------------------------------------------ |
8600e41f4b71Sopenharmony_ci| identity | string | Yes  | String containing the remote user UID and PID, which are returned by **resetCallingIdentity**.|
8601e41f4b71Sopenharmony_ci
8602e41f4b71Sopenharmony_ci**Error codes**
8603e41f4b71Sopenharmony_ci
8604e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
8605e41f4b71Sopenharmony_ci
8606e41f4b71Sopenharmony_ci| ID| Error Message|
8607e41f4b71Sopenharmony_ci| -------- | -------- |
8608e41f4b71Sopenharmony_ci| 401      | check param failed |
8609e41f4b71Sopenharmony_ci
8610e41f4b71Sopenharmony_ci**Example**
8611e41f4b71Sopenharmony_ci
8612e41f4b71Sopenharmony_ci  ```ts
8613e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
8614e41f4b71Sopenharmony_ci
8615e41f4b71Sopenharmony_ci  class Stub extends rpc.RemoteObject {
8616e41f4b71Sopenharmony_ci    onRemoteMessageRequest(code: number, data: rpc.MessageSequence, reply: rpc.MessageSequence, option: rpc.MessageOption): boolean | Promise<boolean> {
8617e41f4b71Sopenharmony_ci      let callingIdentity = rpc.IPCSkeleton.resetCallingIdentity();
8618e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcServer: callingIdentity is ' + callingIdentity);
8619e41f4b71Sopenharmony_ci      rpc.IPCSkeleton.restoreCallingIdentity(callingIdentity);
8620e41f4b71Sopenharmony_ci      return true;
8621e41f4b71Sopenharmony_ci    }
8622e41f4b71Sopenharmony_ci  }
8623e41f4b71Sopenharmony_ci  ```
8624e41f4b71Sopenharmony_ci
8625e41f4b71Sopenharmony_ci### setCallingIdentity<sup>(deprecated)</sup>
8626e41f4b71Sopenharmony_ci
8627e41f4b71Sopenharmony_ci>**NOTE**<br>This API is no longer maintained since API version 9. Use [restoreCallingIdentity](#restorecallingidentity9) instead.
8628e41f4b71Sopenharmony_ci
8629e41f4b71Sopenharmony_cistatic setCallingIdentity(identity: string): boolean
8630e41f4b71Sopenharmony_ci
8631e41f4b71Sopenharmony_ciSets the UID and PID of the remote user. This API is a static method. It is usually called after **resetCallingIdentity**, and the UID and PID of the remote user returned by **resetCallingIdentity** are required.
8632e41f4b71Sopenharmony_ci
8633e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
8634e41f4b71Sopenharmony_ci
8635e41f4b71Sopenharmony_ci**Parameters**
8636e41f4b71Sopenharmony_ci
8637e41f4b71Sopenharmony_ci| Name  | Type  | Mandatory| Description                                                              |
8638e41f4b71Sopenharmony_ci| -------- | ------ | ---- | ------------------------------------------------------------------ |
8639e41f4b71Sopenharmony_ci| identity | string | Yes  | String containing the remote user's UID and PID, which are returned by **resetCallingIdentity**. |
8640e41f4b71Sopenharmony_ci
8641e41f4b71Sopenharmony_ci**Return value**
8642e41f4b71Sopenharmony_ci
8643e41f4b71Sopenharmony_ci| Type   | Description                            |
8644e41f4b71Sopenharmony_ci| ------- | ---------------------------------|
8645e41f4b71Sopenharmony_ci| boolean | Returns **true** if the operation is successful; returns **false** otherwise.|
8646e41f4b71Sopenharmony_ci
8647e41f4b71Sopenharmony_ci**Example**
8648e41f4b71Sopenharmony_ci
8649e41f4b71Sopenharmony_ci  ```ts
8650e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
8651e41f4b71Sopenharmony_ci
8652e41f4b71Sopenharmony_ci  class Stub extends rpc.RemoteObject {
8653e41f4b71Sopenharmony_ci    onRemoteMessageRequest(code: number, data: rpc.MessageSequence, reply: rpc.MessageSequence, option: rpc.MessageOption): boolean | Promise<boolean> {
8654e41f4b71Sopenharmony_ci      let callingIdentity = rpc.IPCSkeleton.resetCallingIdentity();
8655e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcServer: callingIdentity is ' + callingIdentity);
8656e41f4b71Sopenharmony_ci      let ret = rpc.IPCSkeleton.setCallingIdentity(callingIdentity);
8657e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RpcServer: setCallingIdentity is ' + ret);
8658e41f4b71Sopenharmony_ci      return true;
8659e41f4b71Sopenharmony_ci    }
8660e41f4b71Sopenharmony_ci  }
8661e41f4b71Sopenharmony_ci  ```
8662e41f4b71Sopenharmony_ci
8663e41f4b71Sopenharmony_ci## RemoteObject
8664e41f4b71Sopenharmony_ci
8665e41f4b71Sopenharmony_ciProvides methods to implement **RemoteObject**. The service provider must inherit from this class.
8666e41f4b71Sopenharmony_ci
8667e41f4b71Sopenharmony_ci### constructor
8668e41f4b71Sopenharmony_ci
8669e41f4b71Sopenharmony_ciconstructor(descriptor: string)
8670e41f4b71Sopenharmony_ci
8671e41f4b71Sopenharmony_ciA constructor used to create a **RemoteObject** object.
8672e41f4b71Sopenharmony_ci
8673e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
8674e41f4b71Sopenharmony_ci
8675e41f4b71Sopenharmony_ci**Parameters**
8676e41f4b71Sopenharmony_ci
8677e41f4b71Sopenharmony_ci| Name    | Type  | Mandatory| Description        |
8678e41f4b71Sopenharmony_ci| ---------- | ------ | ---- | ------------ |
8679e41f4b71Sopenharmony_ci| descriptor | string | Yes  | Interface descriptor.|
8680e41f4b71Sopenharmony_ci
8681e41f4b71Sopenharmony_ci### sendRequest<sup>(deprecated)</sup>
8682e41f4b71Sopenharmony_ci
8683e41f4b71Sopenharmony_ci>**NOTE**<br>This API is no longer maintained since API version 8. Use [sendMessageRequest](#sendmessagerequest9-4) instead.
8684e41f4b71Sopenharmony_ci
8685e41f4b71Sopenharmony_cisendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption): boolean
8686e41f4b71Sopenharmony_ci
8687e41f4b71Sopenharmony_ciSends a **MessageParcel** message to the remote process in synchronous or asynchronous mode. If asynchronous mode is set in **options**, a promise will be fulfilled immediately and the reply message is empty. The specific reply needs to be obtained from the callback on the service side. If synchronous mode is set in **options**, a promise will be fulfilled when the response to **sendRequest** is returned, and the reply message contains the returned information.
8688e41f4b71Sopenharmony_ci
8689e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
8690e41f4b71Sopenharmony_ci
8691e41f4b71Sopenharmony_ci**Parameters**
8692e41f4b71Sopenharmony_ci
8693e41f4b71Sopenharmony_ci| Name | Type                                     | Mandatory| Description                                                                                  |
8694e41f4b71Sopenharmony_ci| ------- | ----------------------------------------- | ---- | -------------------------------------------------------------------------------------- |
8695e41f4b71Sopenharmony_ci| code    | number                                    | Yes  | Message code (1-16777215) called by the request, which is determined by the communication parties. If the method is generated by an IDL tool, the message code is automatically generated by the IDL tool.|
8696e41f4b71Sopenharmony_ci| data    | [MessageParcel](#messageparceldeprecated) | Yes  | **MessageParcel** object holding the data to send.                                             |
8697e41f4b71Sopenharmony_ci| reply   | [MessageParcel](#messageparceldeprecated) | Yes  | **MessageParcel** object that receives the response.                                                     |
8698e41f4b71Sopenharmony_ci| options | [MessageOption](#messageoption)           | Yes  | Request sending mode, which can be synchronous (default) or asynchronous.                                                  |
8699e41f4b71Sopenharmony_ci
8700e41f4b71Sopenharmony_ci**Return value**
8701e41f4b71Sopenharmony_ci
8702e41f4b71Sopenharmony_ci| Type   | Description                            |
8703e41f4b71Sopenharmony_ci| ------- | -------------------------------- |
8704e41f4b71Sopenharmony_ci| boolean | Returns **true** if the message is sent successfully; returns **false** otherwise.|
8705e41f4b71Sopenharmony_ci
8706e41f4b71Sopenharmony_ci**Example**
8707e41f4b71Sopenharmony_ci
8708e41f4b71Sopenharmony_ci  ```ts
8709e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
8710e41f4b71Sopenharmony_ci
8711e41f4b71Sopenharmony_ci  class MyDeathRecipient implements rpc.DeathRecipient {
8712e41f4b71Sopenharmony_ci    onRemoteDied() {
8713e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'server died');
8714e41f4b71Sopenharmony_ci    }
8715e41f4b71Sopenharmony_ci  }
8716e41f4b71Sopenharmony_ci  class TestRemoteObject extends rpc.RemoteObject {
8717e41f4b71Sopenharmony_ci    constructor(descriptor: string) {
8718e41f4b71Sopenharmony_ci      super(descriptor);
8719e41f4b71Sopenharmony_ci    }
8720e41f4b71Sopenharmony_ci    addDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
8721e41f4b71Sopenharmony_ci      return true;
8722e41f4b71Sopenharmony_ci    }
8723e41f4b71Sopenharmony_ci    removeDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
8724e41f4b71Sopenharmony_ci      return true;
8725e41f4b71Sopenharmony_ci    }
8726e41f4b71Sopenharmony_ci    isObjectDead(): boolean {
8727e41f4b71Sopenharmony_ci      return false;
8728e41f4b71Sopenharmony_ci    }
8729e41f4b71Sopenharmony_ci  }
8730e41f4b71Sopenharmony_ci  let testRemoteObject = new TestRemoteObject("testObject");
8731e41f4b71Sopenharmony_ci  let option = new rpc.MessageOption();
8732e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
8733e41f4b71Sopenharmony_ci  let reply = rpc.MessageParcel.create();
8734e41f4b71Sopenharmony_ci  data.writeInt(1);
8735e41f4b71Sopenharmony_ci  data.writeString("hello");
8736e41f4b71Sopenharmony_ci  let ret: boolean = testRemoteObject.sendRequest(1, data, reply, option);
8737e41f4b71Sopenharmony_ci  if (ret) {
8738e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', 'sendRequest got result');
8739e41f4b71Sopenharmony_ci    let msg = reply.readString();
8740e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', 'RPCTest: reply msg: ' + msg);
8741e41f4b71Sopenharmony_ci  } else {
8742e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'RPCTest: sendRequest failed');
8743e41f4b71Sopenharmony_ci  }
8744e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RPCTest: sendRequest ends, reclaim parcel');
8745e41f4b71Sopenharmony_ci  data.reclaim();
8746e41f4b71Sopenharmony_ci  reply.reclaim();
8747e41f4b71Sopenharmony_ci  ```
8748e41f4b71Sopenharmony_ci
8749e41f4b71Sopenharmony_ci### sendMessageRequest<sup>9+</sup>
8750e41f4b71Sopenharmony_ci
8751e41f4b71Sopenharmony_cisendMessageRequest(code: number, data: MessageSequence, reply: MessageSequence, options: MessageOption): Promise&lt;RequestResult&gt;
8752e41f4b71Sopenharmony_ci
8753e41f4b71Sopenharmony_ciSends a **MessageSequence** message to the remote process in synchronous or asynchronous mode. If asynchronous mode is set in **options**, a promise will be fulfilled immediately and the reply message is empty. The specific reply needs to be obtained from the callback on the service side. If synchronous mode is set in **options**, a promise will be fulfilled when the response to **sendMessageRequest** is returned, and the reply message contains the returned information.
8754e41f4b71Sopenharmony_ci
8755e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
8756e41f4b71Sopenharmony_ci
8757e41f4b71Sopenharmony_ci**Parameters**
8758e41f4b71Sopenharmony_ci
8759e41f4b71Sopenharmony_ci| Name | Type                                | Mandatory| Description                                                                                  |
8760e41f4b71Sopenharmony_ci| ------- | ------------------------------------ | ---- | -------------------------------------------------------------------------------------- |
8761e41f4b71Sopenharmony_ci| code    | number                               | Yes  | Message code (1-16777215) called by the request, which is determined by the communication parties. If the method is generated by an IDL tool, the message code is automatically generated by the IDL tool.|
8762e41f4b71Sopenharmony_ci| data    | [MessageSequence](#messagesequence9) | Yes  | **MessageSequence** object holding the data to send.                                           |
8763e41f4b71Sopenharmony_ci| reply   | [MessageSequence](#messagesequence9) | Yes  | **MessageSequence** object that receives the response.                                                   |
8764e41f4b71Sopenharmony_ci| options | [MessageOption](#messageoption)      | Yes  | Request sending mode, which can be synchronous (default) or asynchronous.                                                  |
8765e41f4b71Sopenharmony_ci
8766e41f4b71Sopenharmony_ci**Return value**
8767e41f4b71Sopenharmony_ci
8768e41f4b71Sopenharmony_ci| Type                                           | Description                                     |
8769e41f4b71Sopenharmony_ci| ----------------------------------------------- | ----------------------------------------- |
8770e41f4b71Sopenharmony_ci| Promise&lt;[RequestResult](#requestresult9)&gt; | Promise used to return a **RequestResult** instance.|
8771e41f4b71Sopenharmony_ci
8772e41f4b71Sopenharmony_ci
8773e41f4b71Sopenharmony_ci**Error codes**
8774e41f4b71Sopenharmony_ci
8775e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
8776e41f4b71Sopenharmony_ci
8777e41f4b71Sopenharmony_ci| ID| Error Message|
8778e41f4b71Sopenharmony_ci| -------- | -------- |
8779e41f4b71Sopenharmony_ci| 401      | check param failed |
8780e41f4b71Sopenharmony_ci
8781e41f4b71Sopenharmony_ci**Example**
8782e41f4b71Sopenharmony_ci
8783e41f4b71Sopenharmony_ci  ```ts
8784e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
8785e41f4b71Sopenharmony_ci
8786e41f4b71Sopenharmony_ci  class TestRemoteObject extends rpc.RemoteObject {
8787e41f4b71Sopenharmony_ci    constructor(descriptor: string) {
8788e41f4b71Sopenharmony_ci      super(descriptor);
8789e41f4b71Sopenharmony_ci    }
8790e41f4b71Sopenharmony_ci  }
8791e41f4b71Sopenharmony_ci  let testRemoteObject = new TestRemoteObject("testObject");
8792e41f4b71Sopenharmony_ci  let option = new rpc.MessageOption();
8793e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
8794e41f4b71Sopenharmony_ci  let reply = rpc.MessageSequence.create();
8795e41f4b71Sopenharmony_ci  data.writeInt(1);
8796e41f4b71Sopenharmony_ci  data.writeString("hello");
8797e41f4b71Sopenharmony_ci  testRemoteObject.sendMessageRequest(1, data, reply, option)
8798e41f4b71Sopenharmony_ci    .then((result: rpc.RequestResult) => {
8799e41f4b71Sopenharmony_ci      if (result.errCode === 0) {
8800e41f4b71Sopenharmony_ci        hilog.info(0x0000, 'testTag', 'sendMessageRequest got result');
8801e41f4b71Sopenharmony_ci        let num = result.reply.readInt();
8802e41f4b71Sopenharmony_ci        let msg = result.reply.readString();
8803e41f4b71Sopenharmony_ci        hilog.info(0x0000, 'testTag', 'RPCTest: reply num: ' + num);
8804e41f4b71Sopenharmony_ci        hilog.info(0x0000, 'testTag', 'RPCTest: reply msg: ' + msg);
8805e41f4b71Sopenharmony_ci      } else {
8806e41f4b71Sopenharmony_ci        hilog.error(0x0000, 'testTag', 'RPCTest: sendMessageRequest failed, errCode: ' + result.errCode);
8807e41f4b71Sopenharmony_ci      }
8808e41f4b71Sopenharmony_ci    }).catch((e: Error) => {
8809e41f4b71Sopenharmony_ci      hilog.error(0x0000, 'testTag', 'RPCTest: sendMessageRequest failed, message: ' + e.message);
8810e41f4b71Sopenharmony_ci    }).finally (() => {
8811e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RPCTest: sendMessageRequest ends, reclaim parcel');
8812e41f4b71Sopenharmony_ci      data.reclaim();
8813e41f4b71Sopenharmony_ci      reply.reclaim();
8814e41f4b71Sopenharmony_ci    });
8815e41f4b71Sopenharmony_ci  ```
8816e41f4b71Sopenharmony_ci
8817e41f4b71Sopenharmony_ci### sendRequest<sup>8+(deprecated)</sup>
8818e41f4b71Sopenharmony_ci
8819e41f4b71Sopenharmony_ci>**NOTE**<br>This API is no longer maintained since API version 9. Use [sendMessageRequest](#sendmessagerequest9-4) instead.
8820e41f4b71Sopenharmony_ci
8821e41f4b71Sopenharmony_cisendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption): Promise&lt;SendRequestResult&gt;
8822e41f4b71Sopenharmony_ci
8823e41f4b71Sopenharmony_ciSends a **MessageParcel** message to the remote process in synchronous or asynchronous mode. If asynchronous mode is set in **options**, a promise will be fulfilled immediately and the reply message is empty. The specific reply needs to be obtained from the callback on the service side. If synchronous mode is set in **options**, a promise will be fulfilled when the response to **sendRequest** is returned, and the reply message contains the returned information.
8824e41f4b71Sopenharmony_ci
8825e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
8826e41f4b71Sopenharmony_ci
8827e41f4b71Sopenharmony_ci**Parameters**
8828e41f4b71Sopenharmony_ci
8829e41f4b71Sopenharmony_ci| Name | Type                                     | Mandatory| Description                                                                                  |
8830e41f4b71Sopenharmony_ci| ------- | ----------------------------------------- | ---- | -------------------------------------------------------------------------------------- |
8831e41f4b71Sopenharmony_ci| code    | number                                    | Yes  | Message code (1-16777215) called by the request, which is determined by the communication parties. If the method is generated by an IDL tool, the message code is automatically generated by the IDL tool.|
8832e41f4b71Sopenharmony_ci| data    | [MessageParcel](#messageparceldeprecated) | Yes  | **MessageParcel** object holding the data to send.                                             |
8833e41f4b71Sopenharmony_ci| reply   | [MessageParcel](#messageparceldeprecated) | Yes  | **MessageParcel** object that receives the response.                                                     |
8834e41f4b71Sopenharmony_ci| options | [MessageOption](#messageoption)           | Yes  | Request sending mode, which can be synchronous (default) or asynchronous.                                                  |
8835e41f4b71Sopenharmony_ci
8836e41f4b71Sopenharmony_ci**Return value**
8837e41f4b71Sopenharmony_ci
8838e41f4b71Sopenharmony_ci| Type                                                        | Description                                         |
8839e41f4b71Sopenharmony_ci| ------------------------------------------------------------ | --------------------------------------------- |
8840e41f4b71Sopenharmony_ci| Promise&lt;[SendRequestResult](#sendrequestresult8deprecated)&gt; | Promise used to return a **sendRequestResult** instance.|
8841e41f4b71Sopenharmony_ci
8842e41f4b71Sopenharmony_ci**Example**
8843e41f4b71Sopenharmony_ci
8844e41f4b71Sopenharmony_ci  ```ts
8845e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
8846e41f4b71Sopenharmony_ci
8847e41f4b71Sopenharmony_ci  class MyDeathRecipient implements rpc.DeathRecipient {
8848e41f4b71Sopenharmony_ci    onRemoteDied() {
8849e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'server died');
8850e41f4b71Sopenharmony_ci    }
8851e41f4b71Sopenharmony_ci  }
8852e41f4b71Sopenharmony_ci  class TestRemoteObject extends rpc.RemoteObject {
8853e41f4b71Sopenharmony_ci    constructor(descriptor: string) {
8854e41f4b71Sopenharmony_ci      super(descriptor);
8855e41f4b71Sopenharmony_ci    }
8856e41f4b71Sopenharmony_ci    addDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
8857e41f4b71Sopenharmony_ci      return true;
8858e41f4b71Sopenharmony_ci    }
8859e41f4b71Sopenharmony_ci    removeDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
8860e41f4b71Sopenharmony_ci      return true;
8861e41f4b71Sopenharmony_ci    }
8862e41f4b71Sopenharmony_ci    isObjectDead(): boolean {
8863e41f4b71Sopenharmony_ci      return false;
8864e41f4b71Sopenharmony_ci    }
8865e41f4b71Sopenharmony_ci  }
8866e41f4b71Sopenharmony_ci  let testRemoteObject = new TestRemoteObject("testObject");
8867e41f4b71Sopenharmony_ci  let option = new rpc.MessageOption();
8868e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
8869e41f4b71Sopenharmony_ci  let reply = rpc.MessageParcel.create();
8870e41f4b71Sopenharmony_ci  data.writeInt(1);
8871e41f4b71Sopenharmony_ci  data.writeString("hello");
8872e41f4b71Sopenharmony_ci  let a = testRemoteObject.sendRequest(1, data, reply, option) as Object;
8873e41f4b71Sopenharmony_ci  let b = a as Promise<rpc.SendRequestResult>;
8874e41f4b71Sopenharmony_ci  b.then((result: rpc.SendRequestResult) => {
8875e41f4b71Sopenharmony_ci    if (result.errCode === 0) {
8876e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'sendRequest got result');
8877e41f4b71Sopenharmony_ci      let num = result.reply.readInt();
8878e41f4b71Sopenharmony_ci      let msg = result.reply.readString();
8879e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RPCTest: reply num: ' + num);
8880e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RPCTest: reply msg: ' + msg);
8881e41f4b71Sopenharmony_ci    } else {
8882e41f4b71Sopenharmony_ci      hilog.error(0x0000, 'testTag', 'RPCTest: sendRequest failed, errCode: ' + result.errCode);
8883e41f4b71Sopenharmony_ci    }
8884e41f4b71Sopenharmony_ci  }).catch((e: Error) => {
8885e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'RPCTest: sendRequest failed, message: ' + e.message);
8886e41f4b71Sopenharmony_ci  }).finally (() => {
8887e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', 'RPCTest: sendRequest ends, reclaim parcel');
8888e41f4b71Sopenharmony_ci    data.reclaim();
8889e41f4b71Sopenharmony_ci    reply.reclaim();
8890e41f4b71Sopenharmony_ci  });
8891e41f4b71Sopenharmony_ci  ```
8892e41f4b71Sopenharmony_ci
8893e41f4b71Sopenharmony_ci### sendMessageRequest<sup>9+</sup>
8894e41f4b71Sopenharmony_ci
8895e41f4b71Sopenharmony_cisendMessageRequest(code: number, data: MessageSequence, reply: MessageSequence, options: MessageOption, callback: AsyncCallback&lt;RequestResult&gt;): void
8896e41f4b71Sopenharmony_ci
8897e41f4b71Sopenharmony_ciSends a **MessageSequence** message to the remote process in synchronous or asynchronous mode. If asynchronous mode is set in **options**, a callback will be called immediately, and the reply message is empty. The specific reply needs to be obtained from the callback on the service side. If synchronous mode is set in **options**, a callback will be invoked when the response to **sendMessageRequest** is returned, and the reply message contains the returned information.
8898e41f4b71Sopenharmony_ci
8899e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
8900e41f4b71Sopenharmony_ci
8901e41f4b71Sopenharmony_ci**Parameters**
8902e41f4b71Sopenharmony_ci
8903e41f4b71Sopenharmony_ci| Name       | Type                                                 | Mandatory| Description                                                        |
8904e41f4b71Sopenharmony_ci| ------------- | ----------------------------------------------------- | ---- | ------------------------------------------------------------ |
8905e41f4b71Sopenharmony_ci| code          | number                                                | Yes  | Message code (1-16777215) called by the request, which is determined by the communication parties. If the method is generated by an IDL tool, the message code is automatically generated by the IDL tool.|
8906e41f4b71Sopenharmony_ci| data          | [MessageSequence](#messagesequence9)                  | Yes  | **MessageSequence** object holding the data to send.                 |
8907e41f4b71Sopenharmony_ci| reply         | [MessageSequence](#messagesequence9)                  | Yes  | **MessageSequence** object that receives the response.                         |
8908e41f4b71Sopenharmony_ci| options       | [MessageOption](#messageoption)                       | Yes  | Request sending mode, which can be synchronous (default) or asynchronous.                        |
8909e41f4b71Sopenharmony_ci| callback      | AsyncCallback&lt;[RequestResult](#requestresult9)&gt; | Yes  | Callback for receiving the sending result.                                        |
8910e41f4b71Sopenharmony_ci
8911e41f4b71Sopenharmony_ci
8912e41f4b71Sopenharmony_ci**Error codes**
8913e41f4b71Sopenharmony_ci
8914e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
8915e41f4b71Sopenharmony_ci
8916e41f4b71Sopenharmony_ci| ID| Error Message|
8917e41f4b71Sopenharmony_ci| -------- | -------- |
8918e41f4b71Sopenharmony_ci| 401      | check param failed |
8919e41f4b71Sopenharmony_ci
8920e41f4b71Sopenharmony_ci**Example**
8921e41f4b71Sopenharmony_ci
8922e41f4b71Sopenharmony_ci  ```ts
8923e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
8924e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
8925e41f4b71Sopenharmony_ci
8926e41f4b71Sopenharmony_ci  class TestRemoteObject extends rpc.RemoteObject {
8927e41f4b71Sopenharmony_ci    constructor(descriptor: string) {
8928e41f4b71Sopenharmony_ci      super(descriptor);
8929e41f4b71Sopenharmony_ci    }
8930e41f4b71Sopenharmony_ci  }
8931e41f4b71Sopenharmony_ci  function sendRequestCallback(err: BusinessError, result: rpc.RequestResult) {
8932e41f4b71Sopenharmony_ci    if (result.errCode === 0) {
8933e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'sendRequest got result');
8934e41f4b71Sopenharmony_ci      let num = result.reply.readInt();
8935e41f4b71Sopenharmony_ci      let msg = result.reply.readString();
8936e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RPCTest: reply num: ' + num);
8937e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RPCTest: reply msg: ' + msg);
8938e41f4b71Sopenharmony_ci    } else {
8939e41f4b71Sopenharmony_ci      hilog.error(0x0000, 'testTag', 'RPCTest: sendRequest failed, errCode: ' + result.errCode);
8940e41f4b71Sopenharmony_ci    }
8941e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', 'RPCTest: sendRequest ends, reclaim parcel');
8942e41f4b71Sopenharmony_ci    result.data.reclaim();
8943e41f4b71Sopenharmony_ci    result.reply.reclaim();
8944e41f4b71Sopenharmony_ci  }
8945e41f4b71Sopenharmony_ci  let testRemoteObject = new TestRemoteObject("testObject");
8946e41f4b71Sopenharmony_ci  let option = new rpc.MessageOption();
8947e41f4b71Sopenharmony_ci  let data = rpc.MessageSequence.create();
8948e41f4b71Sopenharmony_ci  let reply = rpc.MessageSequence.create();
8949e41f4b71Sopenharmony_ci  data.writeInt(1);
8950e41f4b71Sopenharmony_ci  data.writeString("hello");
8951e41f4b71Sopenharmony_ci  testRemoteObject.sendMessageRequest(1, data, reply, option, sendRequestCallback);
8952e41f4b71Sopenharmony_ci  ```
8953e41f4b71Sopenharmony_ci
8954e41f4b71Sopenharmony_ci### sendRequest<sup>8+(deprecated)</sup>
8955e41f4b71Sopenharmony_ci
8956e41f4b71Sopenharmony_ci>**NOTE**<br>This API is no longer maintained since API version 9. Use [sendMessageRequest](#sendmessagerequest9-5) instead.
8957e41f4b71Sopenharmony_ci
8958e41f4b71Sopenharmony_cisendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption, callback: AsyncCallback&lt;SendRequestResult&gt;): void
8959e41f4b71Sopenharmony_ci
8960e41f4b71Sopenharmony_ciSends a **MessageParcel** message to the remote process in synchronous or asynchronous mode. If asynchronous mode is set in **options**, a callback will be called immediately, and the reply message is empty. The specific reply needs to be obtained from the callback on the service side. If synchronous mode is set in **options**, a callback will be invoked when the response to **sendRequest** is returned, and the reply message contains the returned information.
8961e41f4b71Sopenharmony_ci
8962e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
8963e41f4b71Sopenharmony_ci
8964e41f4b71Sopenharmony_ci**Parameters**
8965e41f4b71Sopenharmony_ci
8966e41f4b71Sopenharmony_ci| Name       | Type                                                        | Mandatory| Description                                                        |
8967e41f4b71Sopenharmony_ci| ------------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
8968e41f4b71Sopenharmony_ci| code          | number                                                       | Yes  | Message code (1-16777215) called by the request, which is determined by the communication parties. If the method is generated by an IDL tool, the message code is automatically generated by the IDL tool.|
8969e41f4b71Sopenharmony_ci| data          | [MessageParcel](#messageparceldeprecated)                    | Yes  | **MessageParcel** object holding the data to send.                   |
8970e41f4b71Sopenharmony_ci| reply         | [MessageParcel](#messageparceldeprecated)                    | Yes  | **MessageParcel** object that receives the response.                           |
8971e41f4b71Sopenharmony_ci| options       | [MessageOption](#messageoption)                              | Yes  | Request sending mode, which can be synchronous (default) or asynchronous.                        |
8972e41f4b71Sopenharmony_ci| callback      | AsyncCallback&lt;[SendRequestResult](#sendrequestresult8deprecated)&gt; | Yes  | Callback for receiving the sending result.                                        |
8973e41f4b71Sopenharmony_ci
8974e41f4b71Sopenharmony_ci**Example**
8975e41f4b71Sopenharmony_ci
8976e41f4b71Sopenharmony_ci  ```ts
8977e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
8978e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
8979e41f4b71Sopenharmony_ci
8980e41f4b71Sopenharmony_ci  class MyDeathRecipient implements rpc.DeathRecipient {
8981e41f4b71Sopenharmony_ci    onRemoteDied() {
8982e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'server died');
8983e41f4b71Sopenharmony_ci    }
8984e41f4b71Sopenharmony_ci  }
8985e41f4b71Sopenharmony_ci  class TestRemoteObject extends rpc.RemoteObject {
8986e41f4b71Sopenharmony_ci    constructor(descriptor: string) {
8987e41f4b71Sopenharmony_ci      super(descriptor);
8988e41f4b71Sopenharmony_ci    }
8989e41f4b71Sopenharmony_ci    addDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
8990e41f4b71Sopenharmony_ci      return true;
8991e41f4b71Sopenharmony_ci    }
8992e41f4b71Sopenharmony_ci    removeDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
8993e41f4b71Sopenharmony_ci      return true;
8994e41f4b71Sopenharmony_ci    }
8995e41f4b71Sopenharmony_ci    isObjectDead(): boolean {
8996e41f4b71Sopenharmony_ci      return false;
8997e41f4b71Sopenharmony_ci    }
8998e41f4b71Sopenharmony_ci  }
8999e41f4b71Sopenharmony_ci  function sendRequestCallback(err: BusinessError, result: rpc.SendRequestResult) {
9000e41f4b71Sopenharmony_ci    if (result.errCode === 0) {
9001e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'sendRequest got result');
9002e41f4b71Sopenharmony_ci      let num = result.reply.readInt();
9003e41f4b71Sopenharmony_ci      let msg = result.reply.readString();
9004e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RPCTest: reply num: ' + num);
9005e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'RPCTest: reply msg: ' + msg);
9006e41f4b71Sopenharmony_ci    } else {
9007e41f4b71Sopenharmony_ci      hilog.error(0x0000, 'testTag', 'RPCTest: sendRequest failed, errCode: ' + result.errCode);
9008e41f4b71Sopenharmony_ci    }
9009e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', 'RPCTest: sendRequest ends, reclaim parcel');
9010e41f4b71Sopenharmony_ci    result.data.reclaim();
9011e41f4b71Sopenharmony_ci    result.reply.reclaim();
9012e41f4b71Sopenharmony_ci  }
9013e41f4b71Sopenharmony_ci  let testRemoteObject = new TestRemoteObject("testObject");
9014e41f4b71Sopenharmony_ci  let option = new rpc.MessageOption();
9015e41f4b71Sopenharmony_ci  let data = rpc.MessageParcel.create();
9016e41f4b71Sopenharmony_ci  let reply = rpc.MessageParcel.create();
9017e41f4b71Sopenharmony_ci  data.writeInt(1);
9018e41f4b71Sopenharmony_ci  data.writeString("hello");
9019e41f4b71Sopenharmony_ci  testRemoteObject.sendRequest(1, data, reply, option, sendRequestCallback);
9020e41f4b71Sopenharmony_ci  ```
9021e41f4b71Sopenharmony_ci
9022e41f4b71Sopenharmony_ci### onRemoteMessageRequest<sup>9+</sup>
9023e41f4b71Sopenharmony_ci
9024e41f4b71Sopenharmony_cionRemoteMessageRequest(code: number, data: MessageSequence, reply: MessageSequence, options: MessageOption): boolean | Promise\<boolean>
9025e41f4b71Sopenharmony_ci
9026e41f4b71Sopenharmony_ci> **NOTE**
9027e41f4b71Sopenharmony_ci>
9028e41f4b71Sopenharmony_ci>* You are advised to overload **onRemoteMessageRequest** preferentially, which implements synchronous and asynchronous message processing.
9029e41f4b71Sopenharmony_ci>* If both **onRemoteRequest()** and **onRemoteMessageRequest()** are overloaded, only the onRemoteMessageRequest() takes effect.
9030e41f4b71Sopenharmony_ci
9031e41f4b71Sopenharmony_ciCalled to return a response to **sendMessageRequest()**. The server processes the request synchronously or asynchronously and returns the result in this API.
9032e41f4b71Sopenharmony_ci
9033e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
9034e41f4b71Sopenharmony_ci
9035e41f4b71Sopenharmony_ci**Parameters**
9036e41f4b71Sopenharmony_ci
9037e41f4b71Sopenharmony_ci| Name| Type                                | Mandatory| Description                                     |
9038e41f4b71Sopenharmony_ci| ------ | ------------------------------------ | ---- | ----------------------------------------- |
9039e41f4b71Sopenharmony_ci| code   | number                               | Yes  | Service request code sent by the remote end.                   |
9040e41f4b71Sopenharmony_ci| data   | [MessageSequence](#messagesequence9) | Yes  | **MessageSequence** object that holds the parameters called by the client.|
9041e41f4b71Sopenharmony_ci| reply  | [MessageSequence](#messagesequence9) | Yes  | **MessageSequence** object to which the result is written.          |
9042e41f4b71Sopenharmony_ci| options | [MessageOption](#messageoption)      | Yes  | Whether the operation is synchronous or asynchronous.                 |
9043e41f4b71Sopenharmony_ci
9044e41f4b71Sopenharmony_ci**Return value**
9045e41f4b71Sopenharmony_ci
9046e41f4b71Sopenharmony_ci| Type             | Description                                                                                           |
9047e41f4b71Sopenharmony_ci| ----------------- | ----------------------------------------------------------------------------------------------- |
9048e41f4b71Sopenharmony_ci| boolean           | Returns a Boolean value if the request is processed synchronously in **onRemoteMessageRequest**. The value **true** means the operation is successful; the value **false** means the opposite.|
9049e41f4b71Sopenharmony_ci| Promise\<boolean> | Returns a promise object if the request is processed asynchronously in **onRemoteMessageRequest**.                                |
9050e41f4b71Sopenharmony_ci
9051e41f4b71Sopenharmony_ci**Example**: Overload **onRemoteMessageRequest** to process requests synchronously.
9052e41f4b71Sopenharmony_ci
9053e41f4b71Sopenharmony_ci  ```ts
9054e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
9055e41f4b71Sopenharmony_ci
9056e41f4b71Sopenharmony_ci  class TestRemoteObject extends rpc.RemoteObject {
9057e41f4b71Sopenharmony_ci    constructor(descriptor: string) {
9058e41f4b71Sopenharmony_ci      super(descriptor);
9059e41f4b71Sopenharmony_ci    }
9060e41f4b71Sopenharmony_ci
9061e41f4b71Sopenharmony_ci    onRemoteMessageRequest(code: number, data: rpc.MessageSequence, reply: rpc.MessageSequence, option: rpc.MessageOption): boolean | Promise<boolean> {
9062e41f4b71Sopenharmony_ci      if (code === 1) {
9063e41f4b71Sopenharmony_ci        hilog.info(0x0000, 'testTag', 'RpcServer: sync onRemoteMessageRequest is called');
9064e41f4b71Sopenharmony_ci        return true;
9065e41f4b71Sopenharmony_ci      } else {
9066e41f4b71Sopenharmony_ci        hilog.error(0x0000, 'testTag', 'RpcServer: unknown code: ' + code);
9067e41f4b71Sopenharmony_ci        return false;
9068e41f4b71Sopenharmony_ci      }
9069e41f4b71Sopenharmony_ci    }
9070e41f4b71Sopenharmony_ci  }
9071e41f4b71Sopenharmony_ci  ```
9072e41f4b71Sopenharmony_ci
9073e41f4b71Sopenharmony_ci  **Example**: Overload **onRemoteMessageRequest** to process requests asynchronously.
9074e41f4b71Sopenharmony_ci
9075e41f4b71Sopenharmony_ci  ```ts
9076e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
9077e41f4b71Sopenharmony_ci
9078e41f4b71Sopenharmony_ci  class TestRemoteObject extends rpc.RemoteObject {
9079e41f4b71Sopenharmony_ci    constructor(descriptor: string) {
9080e41f4b71Sopenharmony_ci      super(descriptor);
9081e41f4b71Sopenharmony_ci    }
9082e41f4b71Sopenharmony_ci
9083e41f4b71Sopenharmony_ci    async onRemoteMessageRequest(code: number, data: rpc.MessageSequence, reply: rpc.MessageSequence, option: rpc.MessageOption): Promise<boolean> {
9084e41f4b71Sopenharmony_ci      if (code === 1) {
9085e41f4b71Sopenharmony_ci        hilog.info(0x0000, 'testTag', 'RpcServer: async onRemoteMessageRequest is called');
9086e41f4b71Sopenharmony_ci      } else {
9087e41f4b71Sopenharmony_ci        hilog.error(0x0000, 'testTag', 'RpcServer: unknown code: ' + code);
9088e41f4b71Sopenharmony_ci        return false;
9089e41f4b71Sopenharmony_ci      }
9090e41f4b71Sopenharmony_ci      await new Promise((resolve: (data: rpc.RequestResult) => void) => {
9091e41f4b71Sopenharmony_ci        setTimeout(resolve, 100);
9092e41f4b71Sopenharmony_ci      })
9093e41f4b71Sopenharmony_ci      return true;
9094e41f4b71Sopenharmony_ci    }
9095e41f4b71Sopenharmony_ci  }
9096e41f4b71Sopenharmony_ci  ```
9097e41f4b71Sopenharmony_ci
9098e41f4b71Sopenharmony_ci**Example**: Overload **onRemoteMessageRequest** and **onRemoteRequest** to process requests synchronously.
9099e41f4b71Sopenharmony_ci
9100e41f4b71Sopenharmony_ci  ```ts
9101e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
9102e41f4b71Sopenharmony_ci
9103e41f4b71Sopenharmony_ci  class TestRemoteObject extends rpc.RemoteObject {
9104e41f4b71Sopenharmony_ci    constructor(descriptor: string) {
9105e41f4b71Sopenharmony_ci      super(descriptor);
9106e41f4b71Sopenharmony_ci    }
9107e41f4b71Sopenharmony_ci
9108e41f4b71Sopenharmony_ci    onRemoteRequest(code: number, data: rpc.MessageParcel, reply: rpc.MessageParcel, option: rpc.MessageOption): boolean {
9109e41f4b71Sopenharmony_ci       if (code === 1) {
9110e41f4b71Sopenharmony_ci          hilog.info(0x0000, 'testTag', 'RpcServer: sync onRemoteMessageRequest is called');
9111e41f4b71Sopenharmony_ci          return true;
9112e41f4b71Sopenharmony_ci       } else {
9113e41f4b71Sopenharmony_ci          hilog.error(0x0000, 'testTag', 'RpcServer: unknown code: ' + code);
9114e41f4b71Sopenharmony_ci          return false;
9115e41f4b71Sopenharmony_ci       }
9116e41f4b71Sopenharmony_ci    }
9117e41f4b71Sopenharmony_ci      // Only onRemoteMessageRequest is executed.
9118e41f4b71Sopenharmony_ci    onRemoteMessageRequest(code: number, data: rpc.MessageSequence, reply: rpc.MessageSequence, option: rpc.MessageOption): boolean | Promise<boolean> {
9119e41f4b71Sopenharmony_ci      if (code === 1) {
9120e41f4b71Sopenharmony_ci        hilog.info(0x0000, 'testTag', 'RpcServer: async onRemoteMessageRequest is called');
9121e41f4b71Sopenharmony_ci      } else {
9122e41f4b71Sopenharmony_ci        hilog.error(0x0000, 'testTag', 'RpcServer: unknown code: ' + code);
9123e41f4b71Sopenharmony_ci        return false;
9124e41f4b71Sopenharmony_ci      }
9125e41f4b71Sopenharmony_ci      return true;
9126e41f4b71Sopenharmony_ci    }
9127e41f4b71Sopenharmony_ci  }
9128e41f4b71Sopenharmony_ci  ```
9129e41f4b71Sopenharmony_ci
9130e41f4b71Sopenharmony_ci  **Example**: Overload **onRemoteMessageRequest** and **onRemoteRequest** to process requests asynchronously.
9131e41f4b71Sopenharmony_ci
9132e41f4b71Sopenharmony_ci  ```ts
9133e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
9134e41f4b71Sopenharmony_ci  class TestRemoteObject extends rpc.RemoteObject {
9135e41f4b71Sopenharmony_ci    constructor(descriptor: string) {
9136e41f4b71Sopenharmony_ci      super(descriptor);
9137e41f4b71Sopenharmony_ci    }
9138e41f4b71Sopenharmony_ci
9139e41f4b71Sopenharmony_ci    onRemoteRequest(code: number, data: rpc.MessageParcel, reply: rpc.MessageParcel, option: rpc.MessageOption): boolean {
9140e41f4b71Sopenharmony_ci      if (code === 1) {
9141e41f4b71Sopenharmony_ci        hilog.info(0x0000, 'testTag', 'RpcServer: sync onRemoteRequest is called');
9142e41f4b71Sopenharmony_ci        return true;
9143e41f4b71Sopenharmony_ci      } else {
9144e41f4b71Sopenharmony_ci        hilog.error(0x0000, 'testTag', 'RpcServer: unknown code: ' + code);
9145e41f4b71Sopenharmony_ci        return false;
9146e41f4b71Sopenharmony_ci      }
9147e41f4b71Sopenharmony_ci    }
9148e41f4b71Sopenharmony_ci    // Only onRemoteMessageRequest is executed.
9149e41f4b71Sopenharmony_ci    async onRemoteMessageRequest(code: number, data: rpc.MessageSequence, reply: rpc.MessageSequence, option: rpc.MessageOption): Promise<boolean> {
9150e41f4b71Sopenharmony_ci      if (code === 1) {
9151e41f4b71Sopenharmony_ci        hilog.info(0x0000, 'testTag', 'RpcServer: async onRemoteMessageRequest is called');
9152e41f4b71Sopenharmony_ci      } else {
9153e41f4b71Sopenharmony_ci        hilog.error(0x0000, 'testTag', 'RpcServer: unknown code: ' + code);
9154e41f4b71Sopenharmony_ci        return false;
9155e41f4b71Sopenharmony_ci      }
9156e41f4b71Sopenharmony_ci      await new Promise((resolve: (data: rpc.RequestResult) => void) => {
9157e41f4b71Sopenharmony_ci        setTimeout(resolve, 100);
9158e41f4b71Sopenharmony_ci      })
9159e41f4b71Sopenharmony_ci      return true;
9160e41f4b71Sopenharmony_ci    }
9161e41f4b71Sopenharmony_ci  }
9162e41f4b71Sopenharmony_ci  ```
9163e41f4b71Sopenharmony_ci
9164e41f4b71Sopenharmony_ci### onRemoteRequest<sup>(deprecated)</sup>
9165e41f4b71Sopenharmony_ci
9166e41f4b71Sopenharmony_ci>**NOTE**<br>This API is no longer maintained since API version 9. Use [onRemoteMessageRequest](#onremotemessagerequest9) instead.
9167e41f4b71Sopenharmony_ci
9168e41f4b71Sopenharmony_cionRemoteRequest(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption): boolean
9169e41f4b71Sopenharmony_ci
9170e41f4b71Sopenharmony_ciCalled to return a response to **sendRequest()**. The server processes the request and returns a response in this function.
9171e41f4b71Sopenharmony_ci
9172e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
9173e41f4b71Sopenharmony_ci
9174e41f4b71Sopenharmony_ci**Parameters**
9175e41f4b71Sopenharmony_ci
9176e41f4b71Sopenharmony_ci| Name| Type                                     | Mandatory| Description                                   |
9177e41f4b71Sopenharmony_ci| ------ | ----------------------------------------- | ---- | --------------------------------------- |
9178e41f4b71Sopenharmony_ci| code   | number                                    | Yes  | Service request code sent by the remote end.                 |
9179e41f4b71Sopenharmony_ci| data   | [MessageParcel](#messageparceldeprecated) | Yes  | **MessageParcel** object that holds the parameters called by the client.|
9180e41f4b71Sopenharmony_ci| reply  | [MessageParcel](#messageparceldeprecated) | Yes  | **MessageParcel** object carrying the result.          |
9181e41f4b71Sopenharmony_ci| options | [MessageOption](#messageoption)           | Yes  | Whether the operation is synchronous or asynchronous.               |
9182e41f4b71Sopenharmony_ci
9183e41f4b71Sopenharmony_ci**Return value**
9184e41f4b71Sopenharmony_ci
9185e41f4b71Sopenharmony_ci| Type   | Description                            |
9186e41f4b71Sopenharmony_ci| ------- | -------------------------------- |
9187e41f4b71Sopenharmony_ci| boolean | Returns **true** if the operation is successful; returns **false** otherwise.|
9188e41f4b71Sopenharmony_ci
9189e41f4b71Sopenharmony_ci**Example**
9190e41f4b71Sopenharmony_ci
9191e41f4b71Sopenharmony_ci  ```ts
9192e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
9193e41f4b71Sopenharmony_ci
9194e41f4b71Sopenharmony_ci  class MyDeathRecipient implements rpc.DeathRecipient {
9195e41f4b71Sopenharmony_ci    onRemoteDied() {
9196e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'server died');
9197e41f4b71Sopenharmony_ci    }
9198e41f4b71Sopenharmony_ci  }
9199e41f4b71Sopenharmony_ci  class TestRemoteObject extends rpc.RemoteObject {
9200e41f4b71Sopenharmony_ci    constructor(descriptor: string) {
9201e41f4b71Sopenharmony_ci      super(descriptor);
9202e41f4b71Sopenharmony_ci    }
9203e41f4b71Sopenharmony_ci    addDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
9204e41f4b71Sopenharmony_ci      return true;
9205e41f4b71Sopenharmony_ci    }
9206e41f4b71Sopenharmony_ci    removeDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
9207e41f4b71Sopenharmony_ci      return true;
9208e41f4b71Sopenharmony_ci    }
9209e41f4b71Sopenharmony_ci    isObjectDead(): boolean {
9210e41f4b71Sopenharmony_ci      return false;
9211e41f4b71Sopenharmony_ci    }
9212e41f4b71Sopenharmony_ci    onRemoteRequest(code: number, data: rpc.MessageParcel, reply: rpc.MessageParcel, option: rpc.MessageOption): boolean {
9213e41f4b71Sopenharmony_ci      if (code === 1) {
9214e41f4b71Sopenharmony_ci        hilog.info(0x0000, 'testTag', 'RpcServer: onRemoteRequest called');
9215e41f4b71Sopenharmony_ci        return true;
9216e41f4b71Sopenharmony_ci      } else {
9217e41f4b71Sopenharmony_ci        hilog.error(0x0000, 'testTag', 'RpcServer: unknown code: ' + code);
9218e41f4b71Sopenharmony_ci        return false;
9219e41f4b71Sopenharmony_ci      }
9220e41f4b71Sopenharmony_ci    }
9221e41f4b71Sopenharmony_ci  }
9222e41f4b71Sopenharmony_ci  ```
9223e41f4b71Sopenharmony_ci
9224e41f4b71Sopenharmony_ci### getCallingUid
9225e41f4b71Sopenharmony_ci
9226e41f4b71Sopenharmony_cigetCallingUid(): number
9227e41f4b71Sopenharmony_ci
9228e41f4b71Sopenharmony_ciObtains the UID of the remote process.
9229e41f4b71Sopenharmony_ci
9230e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
9231e41f4b71Sopenharmony_ci
9232e41f4b71Sopenharmony_ci**Return value**
9233e41f4b71Sopenharmony_ci| Type  | Description                   |
9234e41f4b71Sopenharmony_ci| ------ | ----------------------- |
9235e41f4b71Sopenharmony_ci| number | UID of the remote process obtained.|
9236e41f4b71Sopenharmony_ci
9237e41f4b71Sopenharmony_ci**Example**
9238e41f4b71Sopenharmony_ci
9239e41f4b71Sopenharmony_ci  ```ts
9240e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
9241e41f4b71Sopenharmony_ci
9242e41f4b71Sopenharmony_ci  class TestRemoteObject extends rpc.RemoteObject {
9243e41f4b71Sopenharmony_ci    constructor(descriptor: string) {
9244e41f4b71Sopenharmony_ci      super(descriptor);
9245e41f4b71Sopenharmony_ci    }
9246e41f4b71Sopenharmony_ci  }
9247e41f4b71Sopenharmony_ci  let testRemoteObject = new TestRemoteObject("testObject");
9248e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcServer: getCallingUid: ' + testRemoteObject.getCallingUid());
9249e41f4b71Sopenharmony_ci  ```
9250e41f4b71Sopenharmony_ci
9251e41f4b71Sopenharmony_ci### getCallingPid
9252e41f4b71Sopenharmony_ci
9253e41f4b71Sopenharmony_cigetCallingPid(): number
9254e41f4b71Sopenharmony_ci
9255e41f4b71Sopenharmony_ciObtains the PID of the remote process.
9256e41f4b71Sopenharmony_ci
9257e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
9258e41f4b71Sopenharmony_ci
9259e41f4b71Sopenharmony_ci**Return value**
9260e41f4b71Sopenharmony_ci
9261e41f4b71Sopenharmony_ci| Type  | Description                   |
9262e41f4b71Sopenharmony_ci| ------ | ----------------------- |
9263e41f4b71Sopenharmony_ci| number | PID of the remote process obtained.|
9264e41f4b71Sopenharmony_ci
9265e41f4b71Sopenharmony_ci**Example**
9266e41f4b71Sopenharmony_ci
9267e41f4b71Sopenharmony_ci  ```ts
9268e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
9269e41f4b71Sopenharmony_ci
9270e41f4b71Sopenharmony_ci  class TestRemoteObject extends rpc.RemoteObject {
9271e41f4b71Sopenharmony_ci    constructor(descriptor: string) {
9272e41f4b71Sopenharmony_ci      super(descriptor);
9273e41f4b71Sopenharmony_ci    }
9274e41f4b71Sopenharmony_ci  }
9275e41f4b71Sopenharmony_ci  let testRemoteObject = new TestRemoteObject("testObject");
9276e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcServer: getCallingPid: ' + testRemoteObject.getCallingPid());
9277e41f4b71Sopenharmony_ci  ```
9278e41f4b71Sopenharmony_ci
9279e41f4b71Sopenharmony_ci### getLocalInterface<sup>9+</sup>
9280e41f4b71Sopenharmony_ci
9281e41f4b71Sopenharmony_cigetLocalInterface(descriptor: string): IRemoteBroker
9282e41f4b71Sopenharmony_ci
9283e41f4b71Sopenharmony_ciObtains the string of the interface descriptor.
9284e41f4b71Sopenharmony_ci
9285e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
9286e41f4b71Sopenharmony_ci
9287e41f4b71Sopenharmony_ci**Parameters**
9288e41f4b71Sopenharmony_ci
9289e41f4b71Sopenharmony_ci| Name    | Type  | Mandatory| Description                |
9290e41f4b71Sopenharmony_ci| ---------- | ------ | ---- | -------------------- |
9291e41f4b71Sopenharmony_ci| descriptor | string | Yes  | Interface descriptor.|
9292e41f4b71Sopenharmony_ci
9293e41f4b71Sopenharmony_ci**Return value**
9294e41f4b71Sopenharmony_ci
9295e41f4b71Sopenharmony_ci| Type         | Description                                         |
9296e41f4b71Sopenharmony_ci| ------------- | --------------------------------------------- |
9297e41f4b71Sopenharmony_ci| IRemoteBroker | **IRemoteBroker** object bound to the specified interface token.|
9298e41f4b71Sopenharmony_ci
9299e41f4b71Sopenharmony_ci**Error codes**
9300e41f4b71Sopenharmony_ci
9301e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
9302e41f4b71Sopenharmony_ci
9303e41f4b71Sopenharmony_ci| ID| Error Message|
9304e41f4b71Sopenharmony_ci| -------- | -------- |
9305e41f4b71Sopenharmony_ci| 401      | check param failed |
9306e41f4b71Sopenharmony_ci
9307e41f4b71Sopenharmony_ci**Example**
9308e41f4b71Sopenharmony_ci
9309e41f4b71Sopenharmony_ci  ```ts
9310e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
9311e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
9312e41f4b71Sopenharmony_ci
9313e41f4b71Sopenharmony_ci  class MyDeathRecipient implements rpc.DeathRecipient {
9314e41f4b71Sopenharmony_ci    onRemoteDied() {
9315e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'server died');
9316e41f4b71Sopenharmony_ci    }
9317e41f4b71Sopenharmony_ci  }
9318e41f4b71Sopenharmony_ci  class TestRemoteObject extends rpc.RemoteObject {
9319e41f4b71Sopenharmony_ci    constructor(descriptor: string) {
9320e41f4b71Sopenharmony_ci      super(descriptor);
9321e41f4b71Sopenharmony_ci      this.modifyLocalInterface(this, descriptor);
9322e41f4b71Sopenharmony_ci    }
9323e41f4b71Sopenharmony_ci    registerDeathRecipient(recipient: MyDeathRecipient, flags: number) {
9324e41f4b71Sopenharmony_ci      // Implement the method logic based on service requirements.
9325e41f4b71Sopenharmony_ci    }
9326e41f4b71Sopenharmony_ci    unregisterDeathRecipient(recipient: MyDeathRecipient, flags: number) {
9327e41f4b71Sopenharmony_ci      // Implement the method logic based on service requirements.
9328e41f4b71Sopenharmony_ci    }
9329e41f4b71Sopenharmony_ci    isObjectDead(): boolean {
9330e41f4b71Sopenharmony_ci      return false;
9331e41f4b71Sopenharmony_ci    }
9332e41f4b71Sopenharmony_ci    asObject(): rpc.IRemoteObject {
9333e41f4b71Sopenharmony_ci      return this;
9334e41f4b71Sopenharmony_ci    }
9335e41f4b71Sopenharmony_ci  }
9336e41f4b71Sopenharmony_ci  let testRemoteObject = new TestRemoteObject("testObject");
9337e41f4b71Sopenharmony_ci  try {
9338e41f4b71Sopenharmony_ci    testRemoteObject.getLocalInterface("testObject");
9339e41f4b71Sopenharmony_ci  } catch (error) {
9340e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
9341e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc get local interface fail, errorCode ' + e.code);
9342e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc get local interface fail, errorMessage ' + e.message);
9343e41f4b71Sopenharmony_ci  }
9344e41f4b71Sopenharmony_ci  ```
9345e41f4b71Sopenharmony_ci
9346e41f4b71Sopenharmony_ci### queryLocalInterface<sup>(deprecated)</sup>
9347e41f4b71Sopenharmony_ci
9348e41f4b71Sopenharmony_ci>**NOTE**<br>This API is no longer maintained since API version 9. Use [getLocalInterface](#getlocalinterface9-2) instead.
9349e41f4b71Sopenharmony_ci
9350e41f4b71Sopenharmony_ciqueryLocalInterface(descriptor: string): IRemoteBroker
9351e41f4b71Sopenharmony_ci
9352e41f4b71Sopenharmony_ciChecks whether the remote object corresponding to the specified interface token exists.
9353e41f4b71Sopenharmony_ci
9354e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
9355e41f4b71Sopenharmony_ci
9356e41f4b71Sopenharmony_ci**Parameters**
9357e41f4b71Sopenharmony_ci
9358e41f4b71Sopenharmony_ci| Name    | Type  | Mandatory| Description                  |
9359e41f4b71Sopenharmony_ci| ---------- | ------ | ---- | ---------------------- |
9360e41f4b71Sopenharmony_ci| descriptor | string | Yes  | Interface descriptor.|
9361e41f4b71Sopenharmony_ci
9362e41f4b71Sopenharmony_ci**Return value**
9363e41f4b71Sopenharmony_ci
9364e41f4b71Sopenharmony_ci| Type         | Description                                                              |
9365e41f4b71Sopenharmony_ci| ------------- | ------------------------------------------------------------------ |
9366e41f4b71Sopenharmony_ci| IRemoteBroker | Returns the remote object if a match is found; returns **Null** otherwise.|
9367e41f4b71Sopenharmony_ci
9368e41f4b71Sopenharmony_ci**Example**
9369e41f4b71Sopenharmony_ci
9370e41f4b71Sopenharmony_ci  ```ts
9371e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
9372e41f4b71Sopenharmony_ci
9373e41f4b71Sopenharmony_ci  class MyDeathRecipient implements rpc.DeathRecipient {
9374e41f4b71Sopenharmony_ci    onRemoteDied() {
9375e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'server died');
9376e41f4b71Sopenharmony_ci    }
9377e41f4b71Sopenharmony_ci  }
9378e41f4b71Sopenharmony_ci  class TestRemoteObject extends rpc.RemoteObject {
9379e41f4b71Sopenharmony_ci    constructor(descriptor: string) {
9380e41f4b71Sopenharmony_ci      super(descriptor);
9381e41f4b71Sopenharmony_ci      this.attachLocalInterface(this, descriptor);
9382e41f4b71Sopenharmony_ci    }
9383e41f4b71Sopenharmony_ci    addDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
9384e41f4b71Sopenharmony_ci      return true;
9385e41f4b71Sopenharmony_ci    }
9386e41f4b71Sopenharmony_ci    removeDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
9387e41f4b71Sopenharmony_ci      return true;
9388e41f4b71Sopenharmony_ci    }
9389e41f4b71Sopenharmony_ci    isObjectDead(): boolean {
9390e41f4b71Sopenharmony_ci      return false;
9391e41f4b71Sopenharmony_ci    }
9392e41f4b71Sopenharmony_ci    asObject(): rpc.IRemoteObject {
9393e41f4b71Sopenharmony_ci      return this;
9394e41f4b71Sopenharmony_ci    }
9395e41f4b71Sopenharmony_ci  }
9396e41f4b71Sopenharmony_ci  let testRemoteObject = new TestRemoteObject("testObject");
9397e41f4b71Sopenharmony_ci  testRemoteObject.queryLocalInterface("testObject");
9398e41f4b71Sopenharmony_ci  ```
9399e41f4b71Sopenharmony_ci
9400e41f4b71Sopenharmony_ci### getDescriptor<sup>9+</sup>
9401e41f4b71Sopenharmony_ci
9402e41f4b71Sopenharmony_cigetDescriptor(): string
9403e41f4b71Sopenharmony_ci
9404e41f4b71Sopenharmony_ciObtains the interface descriptor of this object. The interface descriptor is a string.
9405e41f4b71Sopenharmony_ci
9406e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
9407e41f4b71Sopenharmony_ci
9408e41f4b71Sopenharmony_ci**Return value**
9409e41f4b71Sopenharmony_ci
9410e41f4b71Sopenharmony_ci| Type  | Description            |
9411e41f4b71Sopenharmony_ci| ------ | ---------------- |
9412e41f4b71Sopenharmony_ci| string | Interface descriptor obtained.|
9413e41f4b71Sopenharmony_ci
9414e41f4b71Sopenharmony_ci**Error codes**
9415e41f4b71Sopenharmony_ci
9416e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
9417e41f4b71Sopenharmony_ci
9418e41f4b71Sopenharmony_ci| ID| Error Message|
9419e41f4b71Sopenharmony_ci| -------- | -------- |
9420e41f4b71Sopenharmony_ci| 1900008  | proxy or remote object is invalid |
9421e41f4b71Sopenharmony_ci
9422e41f4b71Sopenharmony_ci**Example**
9423e41f4b71Sopenharmony_ci
9424e41f4b71Sopenharmony_ci  ```ts
9425e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
9426e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
9427e41f4b71Sopenharmony_ci
9428e41f4b71Sopenharmony_ci  class MyDeathRecipient implements rpc.DeathRecipient {
9429e41f4b71Sopenharmony_ci    onRemoteDied() {
9430e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'server died');
9431e41f4b71Sopenharmony_ci    }
9432e41f4b71Sopenharmony_ci  }
9433e41f4b71Sopenharmony_ci  class TestRemoteObject extends rpc.RemoteObject {
9434e41f4b71Sopenharmony_ci    constructor(descriptor: string) {
9435e41f4b71Sopenharmony_ci      super(descriptor);
9436e41f4b71Sopenharmony_ci    }
9437e41f4b71Sopenharmony_ci    registerDeathRecipient(recipient: MyDeathRecipient, flags: number) {
9438e41f4b71Sopenharmony_ci      // Implement the method logic based on service requirements.
9439e41f4b71Sopenharmony_ci    }
9440e41f4b71Sopenharmony_ci    unregisterDeathRecipient(recipient: MyDeathRecipient, flags: number) {
9441e41f4b71Sopenharmony_ci      // Implement the method logic based on service requirements.
9442e41f4b71Sopenharmony_ci    }
9443e41f4b71Sopenharmony_ci    isObjectDead(): boolean {
9444e41f4b71Sopenharmony_ci      return false;
9445e41f4b71Sopenharmony_ci    }
9446e41f4b71Sopenharmony_ci  }
9447e41f4b71Sopenharmony_ci  let testRemoteObject = new TestRemoteObject("testObject");
9448e41f4b71Sopenharmony_ci  try {
9449e41f4b71Sopenharmony_ci    let descriptor = testRemoteObject.getDescriptor();
9450e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', 'RpcServer: descriptor is ' + descriptor);
9451e41f4b71Sopenharmony_ci  } catch (error) {
9452e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
9453e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc get local interface fail, errorCode ' + e.code);
9454e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'rpc get local interface fail, errorMessage ' + e.message);
9455e41f4b71Sopenharmony_ci  }
9456e41f4b71Sopenharmony_ci  ```
9457e41f4b71Sopenharmony_ci
9458e41f4b71Sopenharmony_ci### getInterfaceDescriptor<sup>(deprecated)</sup>
9459e41f4b71Sopenharmony_ci
9460e41f4b71Sopenharmony_ci>**NOTE**<br>This API is no longer maintained since API version 9. Use [getDescriptor](#getdescriptor9-2) instead.
9461e41f4b71Sopenharmony_ci
9462e41f4b71Sopenharmony_cigetInterfaceDescriptor(): string
9463e41f4b71Sopenharmony_ci
9464e41f4b71Sopenharmony_ciObtains the interface descriptor.
9465e41f4b71Sopenharmony_ci
9466e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
9467e41f4b71Sopenharmony_ci
9468e41f4b71Sopenharmony_ci**Return value**
9469e41f4b71Sopenharmony_ci
9470e41f4b71Sopenharmony_ci| Type  | Description            |
9471e41f4b71Sopenharmony_ci| ------ | ---------------- |
9472e41f4b71Sopenharmony_ci| string | Interface descriptor obtained.|
9473e41f4b71Sopenharmony_ci
9474e41f4b71Sopenharmony_ci**Example**
9475e41f4b71Sopenharmony_ci
9476e41f4b71Sopenharmony_ci  ```ts
9477e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
9478e41f4b71Sopenharmony_ci
9479e41f4b71Sopenharmony_ci  class MyDeathRecipient implements rpc.DeathRecipient {
9480e41f4b71Sopenharmony_ci    onRemoteDied() {
9481e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'server died');
9482e41f4b71Sopenharmony_ci    }
9483e41f4b71Sopenharmony_ci  }
9484e41f4b71Sopenharmony_ci  class TestRemoteObject extends rpc.RemoteObject {
9485e41f4b71Sopenharmony_ci    constructor(descriptor: string) {
9486e41f4b71Sopenharmony_ci      super(descriptor);
9487e41f4b71Sopenharmony_ci    }
9488e41f4b71Sopenharmony_ci    addDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
9489e41f4b71Sopenharmony_ci      return true;
9490e41f4b71Sopenharmony_ci    }
9491e41f4b71Sopenharmony_ci    removeDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
9492e41f4b71Sopenharmony_ci      return true;
9493e41f4b71Sopenharmony_ci    }
9494e41f4b71Sopenharmony_ci    isObjectDead(): boolean {
9495e41f4b71Sopenharmony_ci      return false;
9496e41f4b71Sopenharmony_ci    }
9497e41f4b71Sopenharmony_ci  }
9498e41f4b71Sopenharmony_ci  let testRemoteObject = new TestRemoteObject("testObject");
9499e41f4b71Sopenharmony_ci  let descriptor = testRemoteObject.getInterfaceDescriptor();
9500e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcServer: descriptor is: ' + descriptor);
9501e41f4b71Sopenharmony_ci  ```
9502e41f4b71Sopenharmony_ci
9503e41f4b71Sopenharmony_ci### modifyLocalInterface<sup>9+</sup>
9504e41f4b71Sopenharmony_ci
9505e41f4b71Sopenharmony_cimodifyLocalInterface(localInterface: IRemoteBroker, descriptor: string): void
9506e41f4b71Sopenharmony_ci
9507e41f4b71Sopenharmony_ciBinds an interface descriptor to an **IRemoteBroker** object.
9508e41f4b71Sopenharmony_ci
9509e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
9510e41f4b71Sopenharmony_ci
9511e41f4b71Sopenharmony_ci**Parameters**
9512e41f4b71Sopenharmony_ci
9513e41f4b71Sopenharmony_ci| Name        | Type                           | Mandatory| Description                                 |
9514e41f4b71Sopenharmony_ci| -------------- | ------------------------------- | ---- | ------------------------------------- |
9515e41f4b71Sopenharmony_ci| localInterface | [IRemoteBroker](#iremotebroker) | Yes  | **IRemoteBroker** object.  |
9516e41f4b71Sopenharmony_ci| descriptor     | string                          | Yes  | Interface descriptor.|
9517e41f4b71Sopenharmony_ci
9518e41f4b71Sopenharmony_ci**Error codes**
9519e41f4b71Sopenharmony_ci
9520e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
9521e41f4b71Sopenharmony_ci
9522e41f4b71Sopenharmony_ci| ID| Error Message|
9523e41f4b71Sopenharmony_ci| -------- | -------- |
9524e41f4b71Sopenharmony_ci| 401      | check param failed |
9525e41f4b71Sopenharmony_ci
9526e41f4b71Sopenharmony_ci**Example**
9527e41f4b71Sopenharmony_ci
9528e41f4b71Sopenharmony_ci  ```ts
9529e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
9530e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
9531e41f4b71Sopenharmony_ci
9532e41f4b71Sopenharmony_ci  class MyDeathRecipient implements rpc.DeathRecipient {
9533e41f4b71Sopenharmony_ci    onRemoteDied() {
9534e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'server died');
9535e41f4b71Sopenharmony_ci    }
9536e41f4b71Sopenharmony_ci  }
9537e41f4b71Sopenharmony_ci  class TestRemoteObject extends rpc.RemoteObject {
9538e41f4b71Sopenharmony_ci    constructor(descriptor: string) {
9539e41f4b71Sopenharmony_ci      super(descriptor);
9540e41f4b71Sopenharmony_ci      try {
9541e41f4b71Sopenharmony_ci        this.modifyLocalInterface(this, descriptor);
9542e41f4b71Sopenharmony_ci      } catch (error) {
9543e41f4b71Sopenharmony_ci        let e: BusinessError = error as BusinessError;
9544e41f4b71Sopenharmony_ci        hilog.error(0x0000, 'testTag', ' rpc attach local interface fail, errorCode ' + e.code);
9545e41f4b71Sopenharmony_ci        hilog.error(0x0000, 'testTag', ' rpc attach local interface fail, errorMessage ' + e.message);
9546e41f4b71Sopenharmony_ci      }
9547e41f4b71Sopenharmony_ci    }
9548e41f4b71Sopenharmony_ci    registerDeathRecipient(recipient: MyDeathRecipient, flags: number) {
9549e41f4b71Sopenharmony_ci      // Implement the method logic based on service requirements.
9550e41f4b71Sopenharmony_ci    }
9551e41f4b71Sopenharmony_ci    unregisterDeathRecipient(recipient: MyDeathRecipient, flags: number) {
9552e41f4b71Sopenharmony_ci      // Implement the method logic based on service requirements.
9553e41f4b71Sopenharmony_ci    }
9554e41f4b71Sopenharmony_ci    isObjectDead(): boolean {
9555e41f4b71Sopenharmony_ci      return false;
9556e41f4b71Sopenharmony_ci    }
9557e41f4b71Sopenharmony_ci    asObject(): rpc.IRemoteObject {
9558e41f4b71Sopenharmony_ci      return this;
9559e41f4b71Sopenharmony_ci    }
9560e41f4b71Sopenharmony_ci  }
9561e41f4b71Sopenharmony_ci  let testRemoteObject = new TestRemoteObject("testObject");
9562e41f4b71Sopenharmony_ci  ```
9563e41f4b71Sopenharmony_ci
9564e41f4b71Sopenharmony_ci### attachLocalInterface<sup>(deprecated)</sup>
9565e41f4b71Sopenharmony_ci
9566e41f4b71Sopenharmony_ci>**NOTE**<br>This API is no longer maintained since API version 9. Use [modifyLocalInterface](#modifylocalinterface9) instead.
9567e41f4b71Sopenharmony_ci
9568e41f4b71Sopenharmony_ciattachLocalInterface(localInterface: IRemoteBroker, descriptor: string): void
9569e41f4b71Sopenharmony_ci
9570e41f4b71Sopenharmony_ciBinds an interface descriptor to an **IRemoteBroker** object.
9571e41f4b71Sopenharmony_ci
9572e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
9573e41f4b71Sopenharmony_ci
9574e41f4b71Sopenharmony_ci**Parameters**
9575e41f4b71Sopenharmony_ci
9576e41f4b71Sopenharmony_ci| Name        | Type                           | Mandatory| Description                                 |
9577e41f4b71Sopenharmony_ci| -------------- | ------------------------------- | ---- | ------------------------------------- |
9578e41f4b71Sopenharmony_ci| localInterface | [IRemoteBroker](#iremotebroker) | Yes  | **IRemoteBroker** object.  |
9579e41f4b71Sopenharmony_ci| descriptor     | string                          | Yes  | Interface descriptor.|
9580e41f4b71Sopenharmony_ci
9581e41f4b71Sopenharmony_ci**Example**
9582e41f4b71Sopenharmony_ci
9583e41f4b71Sopenharmony_ci  ```ts
9584e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
9585e41f4b71Sopenharmony_ci
9586e41f4b71Sopenharmony_ci  class MyDeathRecipient implements rpc.DeathRecipient {
9587e41f4b71Sopenharmony_ci    onRemoteDied() {
9588e41f4b71Sopenharmony_ci      hilog.info(0x0000, 'testTag', 'server died');
9589e41f4b71Sopenharmony_ci    }
9590e41f4b71Sopenharmony_ci  }
9591e41f4b71Sopenharmony_ci  class TestRemoteObject extends rpc.RemoteObject {
9592e41f4b71Sopenharmony_ci    constructor(descriptor: string) {
9593e41f4b71Sopenharmony_ci      super(descriptor);
9594e41f4b71Sopenharmony_ci      this.attachLocalInterface(this, descriptor);
9595e41f4b71Sopenharmony_ci    }
9596e41f4b71Sopenharmony_ci    addDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
9597e41f4b71Sopenharmony_ci      return true;
9598e41f4b71Sopenharmony_ci    }
9599e41f4b71Sopenharmony_ci    removeDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {
9600e41f4b71Sopenharmony_ci      return true;
9601e41f4b71Sopenharmony_ci    }
9602e41f4b71Sopenharmony_ci    isObjectDead(): boolean {
9603e41f4b71Sopenharmony_ci      return false;
9604e41f4b71Sopenharmony_ci    }
9605e41f4b71Sopenharmony_ci    asObject(): rpc.IRemoteObject {
9606e41f4b71Sopenharmony_ci      return this;
9607e41f4b71Sopenharmony_ci    }
9608e41f4b71Sopenharmony_ci  }
9609e41f4b71Sopenharmony_ci  let testRemoteObject = new TestRemoteObject("testObject");
9610e41f4b71Sopenharmony_ci  ```
9611e41f4b71Sopenharmony_ci
9612e41f4b71Sopenharmony_ci## Ashmem<sup>8+</sup>
9613e41f4b71Sopenharmony_ci
9614e41f4b71Sopenharmony_ciProvides methods related to anonymous shared memory objects, including creating, closing, mapping, and unmapping an **Ashmem** object, reading data from and writing data to an **Ashmem** object, obtaining the **Ashmem** size, and setting **Ashmem** protection.
9615e41f4b71Sopenharmony_ci
9616e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
9617e41f4b71Sopenharmony_ci
9618e41f4b71Sopenharmony_ciThe table below describes the protection types of the mapped memory.
9619e41f4b71Sopenharmony_ci
9620e41f4b71Sopenharmony_ci| Name      | Value | Description              |
9621e41f4b71Sopenharmony_ci| ---------- | --- | ------------------ |
9622e41f4b71Sopenharmony_ci| PROT_EXEC  | 4   | The mapped memory is executable.  |
9623e41f4b71Sopenharmony_ci| PROT_NONE  | 0   | The mapped memory is inaccessible.|
9624e41f4b71Sopenharmony_ci| PROT_READ  | 1   | The mapped memory is readable.    |
9625e41f4b71Sopenharmony_ci| PROT_WRITE | 2   | The mapped memory is writeable.    |
9626e41f4b71Sopenharmony_ci
9627e41f4b71Sopenharmony_ci### create<sup>9+</sup>
9628e41f4b71Sopenharmony_ci
9629e41f4b71Sopenharmony_cistatic create(name: string, size: number): Ashmem
9630e41f4b71Sopenharmony_ci
9631e41f4b71Sopenharmony_ciCreates an **Ashmem** object with the specified name and size. This API is a static method.
9632e41f4b71Sopenharmony_ci
9633e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
9634e41f4b71Sopenharmony_ci
9635e41f4b71Sopenharmony_ci**Parameters**
9636e41f4b71Sopenharmony_ci
9637e41f4b71Sopenharmony_ci| Name| Type  | Mandatory| Description                        |
9638e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ---------------------------- |
9639e41f4b71Sopenharmony_ci| name   | string | Yes  | Name of the **Ashmem** object to create.  |
9640e41f4b71Sopenharmony_ci| size   | number | Yes  | Size (in bytes) of the **Ashmem** object to create.|
9641e41f4b71Sopenharmony_ci
9642e41f4b71Sopenharmony_ci**Return value**
9643e41f4b71Sopenharmony_ci
9644e41f4b71Sopenharmony_ci| Type              | Description                                          |
9645e41f4b71Sopenharmony_ci| ------------------ | ---------------------------------------------- |
9646e41f4b71Sopenharmony_ci| [Ashmem](#ashmem8) | Returns the **Ashmem** object if it is created successfully; returns null otherwise.|
9647e41f4b71Sopenharmony_ci
9648e41f4b71Sopenharmony_ci**Error codes**
9649e41f4b71Sopenharmony_ci
9650e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
9651e41f4b71Sopenharmony_ci
9652e41f4b71Sopenharmony_ci| ID| Error Message|
9653e41f4b71Sopenharmony_ci| -------- | -------- |
9654e41f4b71Sopenharmony_ci| 401      | check param failed |
9655e41f4b71Sopenharmony_ci
9656e41f4b71Sopenharmony_ci**Example**
9657e41f4b71Sopenharmony_ci
9658e41f4b71Sopenharmony_ci  ```ts
9659e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
9660e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
9661e41f4b71Sopenharmony_ci
9662e41f4b71Sopenharmony_ci  let ashmem: rpc.Ashmem | undefined = undefined;
9663e41f4b71Sopenharmony_ci  try {
9664e41f4b71Sopenharmony_ci    ashmem = rpc.Ashmem.create("ashmem", 1024*1024);
9665e41f4b71Sopenharmony_ci    let size = ashmem.getAshmemSize();
9666e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', 'RpcTest: get ashemm by create: ' + ashmem + ' size is ' + size);
9667e41f4b71Sopenharmony_ci  } catch (error) {
9668e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
9669e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'Rpc creat ashmem fail, errorCode ' + e.code);
9670e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'Rpc creat ashmem  fail, errorMessage ' + e.message);
9671e41f4b71Sopenharmony_ci  }
9672e41f4b71Sopenharmony_ci  ```
9673e41f4b71Sopenharmony_ci
9674e41f4b71Sopenharmony_ci### createAshmem<sup>8+(deprecated)</sup>
9675e41f4b71Sopenharmony_ci
9676e41f4b71Sopenharmony_ci>**NOTE**<br>This API is no longer maintained since API version 9. Use [create](#create9) instead.
9677e41f4b71Sopenharmony_ci
9678e41f4b71Sopenharmony_cistatic createAshmem(name: string, size: number): Ashmem
9679e41f4b71Sopenharmony_ci
9680e41f4b71Sopenharmony_ciCreates an **Ashmem** object with the specified name and size. This API is a static method.
9681e41f4b71Sopenharmony_ci
9682e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
9683e41f4b71Sopenharmony_ci
9684e41f4b71Sopenharmony_ci**Parameters**
9685e41f4b71Sopenharmony_ci
9686e41f4b71Sopenharmony_ci| Name| Type  | Mandatory| Description                        |
9687e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ---------------------------- |
9688e41f4b71Sopenharmony_ci| name   | string | Yes  | Name of the **Ashmem** object to create.  |
9689e41f4b71Sopenharmony_ci| size   | number | Yes  | Size (in bytes) of the **Ashmem** object to create.|
9690e41f4b71Sopenharmony_ci
9691e41f4b71Sopenharmony_ci**Return value**
9692e41f4b71Sopenharmony_ci
9693e41f4b71Sopenharmony_ci| Type              | Description                                          |
9694e41f4b71Sopenharmony_ci| ------------------ | ---------------------------------------------- |
9695e41f4b71Sopenharmony_ci| [Ashmem](#ashmem8) | Returns the **Ashmem** object if it is created successfully; returns null otherwise.|
9696e41f4b71Sopenharmony_ci
9697e41f4b71Sopenharmony_ci**Example**
9698e41f4b71Sopenharmony_ci
9699e41f4b71Sopenharmony_ci  ```ts
9700e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
9701e41f4b71Sopenharmony_ci
9702e41f4b71Sopenharmony_ci  let ashmem = rpc.Ashmem.createAshmem("ashmem", 1024*1024);
9703e41f4b71Sopenharmony_ci  let size = ashmem.getAshmemSize();
9704e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcTest: get ashemm by createAshmem: ' + ashmem + ' size is ' + size);
9705e41f4b71Sopenharmony_ci  ```
9706e41f4b71Sopenharmony_ci
9707e41f4b71Sopenharmony_ci### create<sup>9+</sup>
9708e41f4b71Sopenharmony_ci
9709e41f4b71Sopenharmony_cistatic create(ashmem: Ashmem): Ashmem
9710e41f4b71Sopenharmony_ci
9711e41f4b71Sopenharmony_ciCreates an **Ashmem** object by copying the file descriptor of an existing **Ashmem** object. The two **Ashmem** objects point to the same shared memory region.
9712e41f4b71Sopenharmony_ci
9713e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
9714e41f4b71Sopenharmony_ci
9715e41f4b71Sopenharmony_ci**Parameters**
9716e41f4b71Sopenharmony_ci
9717e41f4b71Sopenharmony_ci| Name| Type              | Mandatory| Description                |
9718e41f4b71Sopenharmony_ci| ------ | ------------------ | ---- | -------------------- |
9719e41f4b71Sopenharmony_ci| ashmem | [Ashmem](#ashmem8) | Yes  | Existing **Ashmem** object.|
9720e41f4b71Sopenharmony_ci
9721e41f4b71Sopenharmony_ci**Return value**
9722e41f4b71Sopenharmony_ci
9723e41f4b71Sopenharmony_ci| Type              | Description                  |
9724e41f4b71Sopenharmony_ci| ------------------ | ---------------------- |
9725e41f4b71Sopenharmony_ci| [Ashmem](#ashmem8) | **Ashmem** object created.|
9726e41f4b71Sopenharmony_ci
9727e41f4b71Sopenharmony_ci**Error codes**
9728e41f4b71Sopenharmony_ci
9729e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
9730e41f4b71Sopenharmony_ci
9731e41f4b71Sopenharmony_ci| ID| Error Message|
9732e41f4b71Sopenharmony_ci| -------- | -------- |
9733e41f4b71Sopenharmony_ci| 401      | check param failed |
9734e41f4b71Sopenharmony_ci
9735e41f4b71Sopenharmony_ci**Example**
9736e41f4b71Sopenharmony_ci
9737e41f4b71Sopenharmony_ci  ```ts
9738e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
9739e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
9740e41f4b71Sopenharmony_ci
9741e41f4b71Sopenharmony_ci  try {
9742e41f4b71Sopenharmony_ci    let ashmem = rpc.Ashmem.create("ashmem", 1024*1024);
9743e41f4b71Sopenharmony_ci    let ashmem2 = rpc.Ashmem.create(ashmem);
9744e41f4b71Sopenharmony_ci    let size = ashmem2.getAshmemSize();
9745e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', 'RpcTest: get ashemm by create: ' + ashmem2 + ' size is ' + size);
9746e41f4b71Sopenharmony_ci  } catch (error) {
9747e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
9748e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'Rpc creat ashmem from existing fail, errorCode ' + e.code);
9749e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'Rpc creat ashmem from existing fail, errorMessage ' + e.message);
9750e41f4b71Sopenharmony_ci  }
9751e41f4b71Sopenharmony_ci  ```
9752e41f4b71Sopenharmony_ci
9753e41f4b71Sopenharmony_ci### createAshmemFromExisting<sup>8+(deprecated)</sup>
9754e41f4b71Sopenharmony_ci
9755e41f4b71Sopenharmony_ci>**NOTE**<br>This API is no longer maintained since API version 9. Use [create](#create9-1) instead.
9756e41f4b71Sopenharmony_ci
9757e41f4b71Sopenharmony_cistatic createAshmemFromExisting(ashmem: Ashmem): Ashmem
9758e41f4b71Sopenharmony_ci
9759e41f4b71Sopenharmony_ciCreates an **Ashmem** object by copying the file descriptor of an existing **Ashmem** object. The two **Ashmem** objects point to the same shared memory region.
9760e41f4b71Sopenharmony_ci
9761e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
9762e41f4b71Sopenharmony_ci
9763e41f4b71Sopenharmony_ci**Parameters**
9764e41f4b71Sopenharmony_ci
9765e41f4b71Sopenharmony_ci| Name| Type              | Mandatory| Description                |
9766e41f4b71Sopenharmony_ci| ------ | ------------------ | ---- | -------------------- |
9767e41f4b71Sopenharmony_ci| ashmem | [Ashmem](#ashmem8) | Yes  | Existing **Ashmem** object.|
9768e41f4b71Sopenharmony_ci
9769e41f4b71Sopenharmony_ci**Return value**
9770e41f4b71Sopenharmony_ci
9771e41f4b71Sopenharmony_ci| Type              | Description                  |
9772e41f4b71Sopenharmony_ci| ------------------ | ---------------------- |
9773e41f4b71Sopenharmony_ci| [Ashmem](#ashmem8) | **Ashmem** object created.|
9774e41f4b71Sopenharmony_ci
9775e41f4b71Sopenharmony_ci**Example**
9776e41f4b71Sopenharmony_ci
9777e41f4b71Sopenharmony_ci  ```ts
9778e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
9779e41f4b71Sopenharmony_ci
9780e41f4b71Sopenharmony_ci  let ashmem = rpc.Ashmem.create("ashmem", 1024*1024);
9781e41f4b71Sopenharmony_ci  let ashmem2 = rpc.Ashmem.createAshmemFromExisting(ashmem);
9782e41f4b71Sopenharmony_ci  let size = ashmem2.getAshmemSize();
9783e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcTest: get ashemm by createAshmemFromExisting: ' + ashmem2 + ' size is ' + size);
9784e41f4b71Sopenharmony_ci  ```
9785e41f4b71Sopenharmony_ci
9786e41f4b71Sopenharmony_ci### closeAshmem<sup>8+</sup>
9787e41f4b71Sopenharmony_ci
9788e41f4b71Sopenharmony_cicloseAshmem(): void
9789e41f4b71Sopenharmony_ci
9790e41f4b71Sopenharmony_ciCloses this **Ashmem** object.
9791e41f4b71Sopenharmony_ci
9792e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
9793e41f4b71Sopenharmony_ci
9794e41f4b71Sopenharmony_ci**Example**
9795e41f4b71Sopenharmony_ci
9796e41f4b71Sopenharmony_ci  ```ts
9797e41f4b71Sopenharmony_ci  let ashmem = rpc.Ashmem.create("ashmem", 1024*1024);
9798e41f4b71Sopenharmony_ci  ashmem.closeAshmem();
9799e41f4b71Sopenharmony_ci  ```
9800e41f4b71Sopenharmony_ci
9801e41f4b71Sopenharmony_ci### unmapAshmem<sup>8+</sup>
9802e41f4b71Sopenharmony_ci
9803e41f4b71Sopenharmony_ciunmapAshmem(): void
9804e41f4b71Sopenharmony_ci
9805e41f4b71Sopenharmony_ciDeletes the mappings for the specified address range of this **Ashmem** object.
9806e41f4b71Sopenharmony_ci
9807e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
9808e41f4b71Sopenharmony_ci
9809e41f4b71Sopenharmony_ci**Example**
9810e41f4b71Sopenharmony_ci
9811e41f4b71Sopenharmony_ci  ```ts
9812e41f4b71Sopenharmony_ci  let ashmem = rpc.Ashmem.create("ashmem", 1024*1024);
9813e41f4b71Sopenharmony_ci  ashmem.unmapAshmem();
9814e41f4b71Sopenharmony_ci  ```
9815e41f4b71Sopenharmony_ci
9816e41f4b71Sopenharmony_ci### getAshmemSize<sup>8+</sup>
9817e41f4b71Sopenharmony_ci
9818e41f4b71Sopenharmony_cigetAshmemSize(): number
9819e41f4b71Sopenharmony_ci
9820e41f4b71Sopenharmony_ciObtains the memory size of this **Ashmem** object.
9821e41f4b71Sopenharmony_ci
9822e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
9823e41f4b71Sopenharmony_ci
9824e41f4b71Sopenharmony_ci**Return value**
9825e41f4b71Sopenharmony_ci
9826e41f4b71Sopenharmony_ci| Type  | Description                      |
9827e41f4b71Sopenharmony_ci| ------ | -------------------------- |
9828e41f4b71Sopenharmony_ci| number | **Ashmem** size obtained.|
9829e41f4b71Sopenharmony_ci
9830e41f4b71Sopenharmony_ci**Example**
9831e41f4b71Sopenharmony_ci
9832e41f4b71Sopenharmony_ci  ```ts
9833e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
9834e41f4b71Sopenharmony_ci
9835e41f4b71Sopenharmony_ci  let ashmem = rpc.Ashmem.create("ashmem", 1024*1024);
9836e41f4b71Sopenharmony_ci  let size = ashmem.getAshmemSize();
9837e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcTest: get ashmem is ' + ashmem + ' size is ' + size);
9838e41f4b71Sopenharmony_ci  ```
9839e41f4b71Sopenharmony_ci
9840e41f4b71Sopenharmony_ci### mapTypedAshmem<sup>9+</sup>
9841e41f4b71Sopenharmony_ci
9842e41f4b71Sopenharmony_cimapTypedAshmem(mapType: number): void
9843e41f4b71Sopenharmony_ci
9844e41f4b71Sopenharmony_ciCreates the shared file mapping on the virtual address space of this process. The size of the mapping region is specified by this **Ashmem** object.
9845e41f4b71Sopenharmony_ci
9846e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
9847e41f4b71Sopenharmony_ci
9848e41f4b71Sopenharmony_ci**Parameters**
9849e41f4b71Sopenharmony_ci
9850e41f4b71Sopenharmony_ci| Name | Type  | Mandatory| Description                          |
9851e41f4b71Sopenharmony_ci| ------- | ------ | ---- | ------------------------------ |
9852e41f4b71Sopenharmony_ci| mapType | number | Yes  | Protection level of the memory region to which the shared file is mapped.|
9853e41f4b71Sopenharmony_ci
9854e41f4b71Sopenharmony_ci**Error codes**
9855e41f4b71Sopenharmony_ci
9856e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
9857e41f4b71Sopenharmony_ci
9858e41f4b71Sopenharmony_ci| ID| Error Message|
9859e41f4b71Sopenharmony_ci| -------- | -------- |
9860e41f4b71Sopenharmony_ci| 401      | check param failed |
9861e41f4b71Sopenharmony_ci| 1900001  | call mmap function failed |
9862e41f4b71Sopenharmony_ci
9863e41f4b71Sopenharmony_ci**Example**
9864e41f4b71Sopenharmony_ci
9865e41f4b71Sopenharmony_ci  ```ts
9866e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
9867e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
9868e41f4b71Sopenharmony_ci
9869e41f4b71Sopenharmony_ci  let ashmem = rpc.Ashmem.create("ashmem", 1024*1024);
9870e41f4b71Sopenharmony_ci  try {
9871e41f4b71Sopenharmony_ci    ashmem.mapTypedAshmem(ashmem.PROT_READ | ashmem.PROT_WRITE);
9872e41f4b71Sopenharmony_ci  } catch (error) {
9873e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
9874e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'Rpc map ashmem fail, errorCode ' + e.code);
9875e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'Rpc map ashmem fail, errorMessage ' + e.message);
9876e41f4b71Sopenharmony_ci  }
9877e41f4b71Sopenharmony_ci  ```
9878e41f4b71Sopenharmony_ci
9879e41f4b71Sopenharmony_ci### mapAshmem<sup>8+(deprecated)</sup>
9880e41f4b71Sopenharmony_ci
9881e41f4b71Sopenharmony_ci>**NOTE**<br>This API is no longer maintained since API version 9. Use [mapTypedAshmem](#maptypedashmem9) instead.
9882e41f4b71Sopenharmony_ci
9883e41f4b71Sopenharmony_cimapAshmem(mapType: number): boolean
9884e41f4b71Sopenharmony_ci
9885e41f4b71Sopenharmony_ciCreates the shared file mapping on the virtual address space of this process. The size of the mapping region is specified by this **Ashmem** object.
9886e41f4b71Sopenharmony_ci
9887e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
9888e41f4b71Sopenharmony_ci
9889e41f4b71Sopenharmony_ci**Parameters**
9890e41f4b71Sopenharmony_ci
9891e41f4b71Sopenharmony_ci| Name | Type  | Mandatory| Description                          |
9892e41f4b71Sopenharmony_ci| ------- | ------ | ---- | ------------------------------ |
9893e41f4b71Sopenharmony_ci| mapType | number | Yes  | Protection level of the memory region to which the shared file is mapped.|
9894e41f4b71Sopenharmony_ci
9895e41f4b71Sopenharmony_ci**Return value**
9896e41f4b71Sopenharmony_ci
9897e41f4b71Sopenharmony_ci| Type   | Description                            |
9898e41f4b71Sopenharmony_ci| ------- | -------------------------------- |
9899e41f4b71Sopenharmony_ci| boolean | Returns **true** if the mapping is created; returns **false** otherwise.|
9900e41f4b71Sopenharmony_ci
9901e41f4b71Sopenharmony_ci**Example**
9902e41f4b71Sopenharmony_ci
9903e41f4b71Sopenharmony_ci  ```ts
9904e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
9905e41f4b71Sopenharmony_ci
9906e41f4b71Sopenharmony_ci  let ashmem = rpc.Ashmem.create("ashmem", 1024*1024);
9907e41f4b71Sopenharmony_ci  let mapReadAndWrite = ashmem.mapAshmem(ashmem.PROT_READ | ashmem.PROT_WRITE);
9908e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcTest: map ashmem result is ' + mapReadAndWrite);
9909e41f4b71Sopenharmony_ci  ```
9910e41f4b71Sopenharmony_ci
9911e41f4b71Sopenharmony_ci### mapReadWriteAshmem<sup>9+</sup>
9912e41f4b71Sopenharmony_ci
9913e41f4b71Sopenharmony_cimapReadWriteAshmem(): void
9914e41f4b71Sopenharmony_ci
9915e41f4b71Sopenharmony_ciMaps the shared file to the readable and writable virtual address space of the process.
9916e41f4b71Sopenharmony_ci
9917e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
9918e41f4b71Sopenharmony_ci
9919e41f4b71Sopenharmony_ci**Error codes**
9920e41f4b71Sopenharmony_ci
9921e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
9922e41f4b71Sopenharmony_ci
9923e41f4b71Sopenharmony_ci| ID| Error Message|
9924e41f4b71Sopenharmony_ci| -------- | -------- |
9925e41f4b71Sopenharmony_ci| 1900001  | call mmap function failed |
9926e41f4b71Sopenharmony_ci
9927e41f4b71Sopenharmony_ci**Example**
9928e41f4b71Sopenharmony_ci
9929e41f4b71Sopenharmony_ci  ```ts
9930e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
9931e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
9932e41f4b71Sopenharmony_ci
9933e41f4b71Sopenharmony_ci  let ashmem = rpc.Ashmem.create("ashmem", 1024*1024);
9934e41f4b71Sopenharmony_ci  try {
9935e41f4b71Sopenharmony_ci    ashmem.mapReadWriteAshmem();
9936e41f4b71Sopenharmony_ci  } catch (error) {
9937e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
9938e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'Rpc map read and write ashmem fail, errorCode ' + e.code);
9939e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'Rpc map read and write ashmem fail, errorMessage ' + e.message);
9940e41f4b71Sopenharmony_ci  }
9941e41f4b71Sopenharmony_ci  ```
9942e41f4b71Sopenharmony_ci
9943e41f4b71Sopenharmony_ci### mapReadAndWriteAshmem<sup>8+(deprecated)</sup>
9944e41f4b71Sopenharmony_ci
9945e41f4b71Sopenharmony_ci>**NOTE**<br>This API is no longer maintained since API version 9. Use [mapReadWriteAshmem](#mapreadwriteashmem9) instead.
9946e41f4b71Sopenharmony_ci
9947e41f4b71Sopenharmony_cimapReadAndWriteAshmem(): boolean
9948e41f4b71Sopenharmony_ci
9949e41f4b71Sopenharmony_ciMaps the shared file to the readable and writable virtual address space of the process.
9950e41f4b71Sopenharmony_ci
9951e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
9952e41f4b71Sopenharmony_ci
9953e41f4b71Sopenharmony_ci**Return value**
9954e41f4b71Sopenharmony_ci
9955e41f4b71Sopenharmony_ci| Type   | Description                            |
9956e41f4b71Sopenharmony_ci| ------- | -------------------------------- |
9957e41f4b71Sopenharmony_ci| boolean | Returns **true** if the mapping is created; returns **false** otherwise.|
9958e41f4b71Sopenharmony_ci
9959e41f4b71Sopenharmony_ci**Example**
9960e41f4b71Sopenharmony_ci
9961e41f4b71Sopenharmony_ci  ```ts
9962e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
9963e41f4b71Sopenharmony_ci
9964e41f4b71Sopenharmony_ci  let ashmem = rpc.Ashmem.create("ashmem", 1024*1024);
9965e41f4b71Sopenharmony_ci  let mapResult = ashmem.mapReadAndWriteAshmem();
9966e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcTest: map ashmem result is ' + mapResult);
9967e41f4b71Sopenharmony_ci  ```
9968e41f4b71Sopenharmony_ci
9969e41f4b71Sopenharmony_ci### mapReadonlyAshmem<sup>9+</sup>
9970e41f4b71Sopenharmony_ci
9971e41f4b71Sopenharmony_cimapReadonlyAshmem(): void
9972e41f4b71Sopenharmony_ci
9973e41f4b71Sopenharmony_ciMaps the shared file to the read-only virtual address space of the process.
9974e41f4b71Sopenharmony_ci
9975e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
9976e41f4b71Sopenharmony_ci
9977e41f4b71Sopenharmony_ci**Error codes**
9978e41f4b71Sopenharmony_ci
9979e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
9980e41f4b71Sopenharmony_ci
9981e41f4b71Sopenharmony_ci| ID| Error Message|
9982e41f4b71Sopenharmony_ci| -------- | -------- |
9983e41f4b71Sopenharmony_ci| 1900001  | call mmap function failed |
9984e41f4b71Sopenharmony_ci
9985e41f4b71Sopenharmony_ci**Example**
9986e41f4b71Sopenharmony_ci
9987e41f4b71Sopenharmony_ci  ```ts
9988e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
9989e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
9990e41f4b71Sopenharmony_ci
9991e41f4b71Sopenharmony_ci  let ashmem = rpc.Ashmem.create("ashmem", 1024*1024);
9992e41f4b71Sopenharmony_ci  try {
9993e41f4b71Sopenharmony_ci    ashmem.mapReadonlyAshmem();
9994e41f4b71Sopenharmony_ci  } catch (error) {
9995e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
9996e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'Rpc map read and write ashmem fail, errorCode ' + e.code);
9997e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'Rpc map read and write ashmem fail, errorMessage ' + e.message);
9998e41f4b71Sopenharmony_ci  }
9999e41f4b71Sopenharmony_ci  ```
10000e41f4b71Sopenharmony_ci
10001e41f4b71Sopenharmony_ci### mapReadOnlyAshmem<sup>8+(deprecated)</sup>
10002e41f4b71Sopenharmony_ci
10003e41f4b71Sopenharmony_ci>**NOTE**<br>This API is no longer maintained since API version 9. Use [mapReadonlyAshmem](#mapreadonlyashmem9) instead.
10004e41f4b71Sopenharmony_ci
10005e41f4b71Sopenharmony_cimapReadOnlyAshmem(): boolean
10006e41f4b71Sopenharmony_ci
10007e41f4b71Sopenharmony_ciMaps the shared file to the read-only virtual address space of the process.
10008e41f4b71Sopenharmony_ci
10009e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
10010e41f4b71Sopenharmony_ci
10011e41f4b71Sopenharmony_ci**Return value**
10012e41f4b71Sopenharmony_ci
10013e41f4b71Sopenharmony_ci| Type   | Description                            |
10014e41f4b71Sopenharmony_ci| ------- | -------------------------------- |
10015e41f4b71Sopenharmony_ci| boolean | Returns **true** if the mapping is created; returns **false** otherwise.|
10016e41f4b71Sopenharmony_ci
10017e41f4b71Sopenharmony_ci**Example**
10018e41f4b71Sopenharmony_ci
10019e41f4b71Sopenharmony_ci  ```ts
10020e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
10021e41f4b71Sopenharmony_ci
10022e41f4b71Sopenharmony_ci  let ashmem = rpc.Ashmem.create("ashmem", 1024*1024);
10023e41f4b71Sopenharmony_ci  let mapResult = ashmem.mapReadOnlyAshmem();
10024e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcTest: Ashmem mapReadOnlyAshmem result is ' + mapResult);
10025e41f4b71Sopenharmony_ci  ```
10026e41f4b71Sopenharmony_ci
10027e41f4b71Sopenharmony_ci### setProtectionType<sup>9+</sup>
10028e41f4b71Sopenharmony_ci
10029e41f4b71Sopenharmony_cisetProtectionType(protectionType: number): void
10030e41f4b71Sopenharmony_ci
10031e41f4b71Sopenharmony_ciSets the protection level of the memory region to which the shared file is mapped.
10032e41f4b71Sopenharmony_ci
10033e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
10034e41f4b71Sopenharmony_ci
10035e41f4b71Sopenharmony_ci**Parameters**
10036e41f4b71Sopenharmony_ci
10037e41f4b71Sopenharmony_ci| Name        | Type  | Mandatory| Description              |
10038e41f4b71Sopenharmony_ci| -------------- | ------ | ---- | ------------------ |
10039e41f4b71Sopenharmony_ci| protectionType | number | Yes  | Protection type to set.|
10040e41f4b71Sopenharmony_ci
10041e41f4b71Sopenharmony_ci**Error codes**
10042e41f4b71Sopenharmony_ci
10043e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
10044e41f4b71Sopenharmony_ci
10045e41f4b71Sopenharmony_ci| ID| Error Message|
10046e41f4b71Sopenharmony_ci| -------- | -------- |
10047e41f4b71Sopenharmony_ci| 401      | check param failed |
10048e41f4b71Sopenharmony_ci| 1900002  | call os ioctl function failed |
10049e41f4b71Sopenharmony_ci
10050e41f4b71Sopenharmony_ci**Example**
10051e41f4b71Sopenharmony_ci
10052e41f4b71Sopenharmony_ci  ```ts
10053e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
10054e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
10055e41f4b71Sopenharmony_ci
10056e41f4b71Sopenharmony_ci  let ashmem = rpc.Ashmem.create("ashmem", 1024*1024);
10057e41f4b71Sopenharmony_ci  try {
10058e41f4b71Sopenharmony_ci    ashmem.setProtection(ashmem.PROT_READ);
10059e41f4b71Sopenharmony_ci  } catch (error) {
10060e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
10061e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'Rpc set protection type fail, errorCode ' + e.code);
10062e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'Rpc set protection type fail, errorMessage ' + e.message);
10063e41f4b71Sopenharmony_ci  }
10064e41f4b71Sopenharmony_ci  ```
10065e41f4b71Sopenharmony_ci
10066e41f4b71Sopenharmony_ci### setProtection<sup>8+(deprecated)</sup>
10067e41f4b71Sopenharmony_ci
10068e41f4b71Sopenharmony_ci>**NOTE**<br>This API is no longer maintained since API version 9. Use [setProtectionType](#setprotectiontype9) instead.
10069e41f4b71Sopenharmony_ci
10070e41f4b71Sopenharmony_cisetProtection(protectionType: number): boolean
10071e41f4b71Sopenharmony_ci
10072e41f4b71Sopenharmony_ciSets the protection level of the memory region to which the shared file is mapped.
10073e41f4b71Sopenharmony_ci
10074e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
10075e41f4b71Sopenharmony_ci
10076e41f4b71Sopenharmony_ci**Parameters**
10077e41f4b71Sopenharmony_ci
10078e41f4b71Sopenharmony_ci| Name        | Type  | Mandatory| Description              |
10079e41f4b71Sopenharmony_ci| -------------- | ------ | ---- | ------------------ |
10080e41f4b71Sopenharmony_ci| protectionType | number | Yes  | Protection type to set.|
10081e41f4b71Sopenharmony_ci
10082e41f4b71Sopenharmony_ci**Return value**
10083e41f4b71Sopenharmony_ci
10084e41f4b71Sopenharmony_ci| Type   | Description                            |
10085e41f4b71Sopenharmony_ci| ------- | -------------------------------- |
10086e41f4b71Sopenharmony_ci| boolean | Returns **true** if the operation is successful; returns **false** otherwise.|
10087e41f4b71Sopenharmony_ci
10088e41f4b71Sopenharmony_ci**Example**
10089e41f4b71Sopenharmony_ci
10090e41f4b71Sopenharmony_ci  ```ts
10091e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
10092e41f4b71Sopenharmony_ci
10093e41f4b71Sopenharmony_ci  let ashmem = rpc.Ashmem.create("ashmem", 1024*1024);
10094e41f4b71Sopenharmony_ci  let result = ashmem.setProtection(ashmem.PROT_READ);
10095e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcTest: Ashmem setProtection result is ' + result);
10096e41f4b71Sopenharmony_ci  ```
10097e41f4b71Sopenharmony_ci
10098e41f4b71Sopenharmony_ci### writeDataToAshmem<sup>11+</sup>
10099e41f4b71Sopenharmony_ci
10100e41f4b71Sopenharmony_ciwriteDataToAshmem(buf: ArrayBuffer, size: number, offset: number): void
10101e41f4b71Sopenharmony_ci
10102e41f4b71Sopenharmony_ciWrites data to the shared file associated with this **Ashmem** object.
10103e41f4b71Sopenharmony_ci
10104e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
10105e41f4b71Sopenharmony_ci
10106e41f4b71Sopenharmony_ci**Parameters**
10107e41f4b71Sopenharmony_ci
10108e41f4b71Sopenharmony_ci| Name| Type    | Mandatory| Description                                              |
10109e41f4b71Sopenharmony_ci| ------ | -------- | ---- | -------------------------------------------------- |
10110e41f4b71Sopenharmony_ci| buf    | ArrayBuffer | Yes  | Data to write.                            |
10111e41f4b71Sopenharmony_ci| size   | number   | Yes  | Size of the data to write.                                |
10112e41f4b71Sopenharmony_ci| offset | number   | Yes  | Start position of the data to write in the memory region associated with this **Ashmem** object.|
10113e41f4b71Sopenharmony_ci
10114e41f4b71Sopenharmony_ci**Error codes**
10115e41f4b71Sopenharmony_ci
10116e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
10117e41f4b71Sopenharmony_ci
10118e41f4b71Sopenharmony_ci| ID| Error Message|
10119e41f4b71Sopenharmony_ci| -------- | -------- |
10120e41f4b71Sopenharmony_ci| 401      | check param failed |
10121e41f4b71Sopenharmony_ci| 1900003  | write to ashmem failed |
10122e41f4b71Sopenharmony_ci
10123e41f4b71Sopenharmony_ci**Example**
10124e41f4b71Sopenharmony_ci
10125e41f4b71Sopenharmony_ci  ```ts
10126e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
10127e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
10128e41f4b71Sopenharmony_ci
10129e41f4b71Sopenharmony_ci  let buffer = new ArrayBuffer(1024);
10130e41f4b71Sopenharmony_ci  let int32View = new Int32Array(buffer);
10131e41f4b71Sopenharmony_ci  for (let i = 0; i < int32View.length; i++) {
10132e41f4b71Sopenharmony_ci    int32View[i] = i * 2 + 1;
10133e41f4b71Sopenharmony_ci  }
10134e41f4b71Sopenharmony_ci  let size = buffer.byteLength;
10135e41f4b71Sopenharmony_ci  let ashmem = rpc.Ashmem.create("ashmem", 1024*1024);
10136e41f4b71Sopenharmony_ci  ashmem.mapReadWriteAshmem();
10137e41f4b71Sopenharmony_ci  try {
10138e41f4b71Sopenharmony_ci    ashmem.writeDataToAshmem(buffer, size, 0);
10139e41f4b71Sopenharmony_ci  } catch (error) {
10140e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
10141e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'Rpc write to ashmem fail, errorCode ' + e.code);
10142e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'Rpc write to ashmem fail, errorMessage ' + e.message);
10143e41f4b71Sopenharmony_ci  }
10144e41f4b71Sopenharmony_ci  ```
10145e41f4b71Sopenharmony_ci
10146e41f4b71Sopenharmony_ci### writeAshmem<sup>9+(deprecated)</sup>
10147e41f4b71Sopenharmony_ci
10148e41f4b71Sopenharmony_ci>**NOTE**<br>This API is no longer maintained since API version 11. Use [writeDataToAshmem](#writedatatoashmem11) instead.
10149e41f4b71Sopenharmony_ci
10150e41f4b71Sopenharmony_ciwriteAshmem(buf: number[], size: number, offset: number): void
10151e41f4b71Sopenharmony_ci
10152e41f4b71Sopenharmony_ciWrites data to the shared file associated with this **Ashmem** object.
10153e41f4b71Sopenharmony_ci
10154e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
10155e41f4b71Sopenharmony_ci
10156e41f4b71Sopenharmony_ci**Parameters**
10157e41f4b71Sopenharmony_ci
10158e41f4b71Sopenharmony_ci| Name| Type    | Mandatory| Description                                              |
10159e41f4b71Sopenharmony_ci| ------ | -------- | ---- | -------------------------------------------------- |
10160e41f4b71Sopenharmony_ci| buf    | number[] | Yes  | Data to write.                            |
10161e41f4b71Sopenharmony_ci| size   | number   | Yes  | Size of the data to write.                                |
10162e41f4b71Sopenharmony_ci| offset | number   | Yes  | Start position of the data to write in the memory region associated with this **Ashmem** object.|
10163e41f4b71Sopenharmony_ci
10164e41f4b71Sopenharmony_ci**Error codes**
10165e41f4b71Sopenharmony_ci
10166e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
10167e41f4b71Sopenharmony_ci
10168e41f4b71Sopenharmony_ci| ID| Error Message|
10169e41f4b71Sopenharmony_ci| -------- | -------- |
10170e41f4b71Sopenharmony_ci| 401      | check param failed |
10171e41f4b71Sopenharmony_ci| 1900003  | write to ashmem failed |
10172e41f4b71Sopenharmony_ci
10173e41f4b71Sopenharmony_ci**Example**
10174e41f4b71Sopenharmony_ci
10175e41f4b71Sopenharmony_ci  ```ts
10176e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
10177e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
10178e41f4b71Sopenharmony_ci
10179e41f4b71Sopenharmony_ci  let ashmem = rpc.Ashmem.create("ashmem", 1024*1024);
10180e41f4b71Sopenharmony_ci  ashmem.mapReadWriteAshmem();
10181e41f4b71Sopenharmony_ci  let ByteArrayVar = [1, 2, 3, 4, 5];
10182e41f4b71Sopenharmony_ci  try {
10183e41f4b71Sopenharmony_ci    ashmem.writeAshmem(ByteArrayVar, 5, 0);
10184e41f4b71Sopenharmony_ci  } catch (error) {
10185e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
10186e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'Rpc write to ashmem fail, errorCode ' + e.code);
10187e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'Rpc write to ashmem fail, errorMessage ' + e.message);
10188e41f4b71Sopenharmony_ci  }
10189e41f4b71Sopenharmony_ci  ```
10190e41f4b71Sopenharmony_ci
10191e41f4b71Sopenharmony_ci### writeToAshmem<sup>8+(deprecated)</sup>
10192e41f4b71Sopenharmony_ci
10193e41f4b71Sopenharmony_ci>**NOTE**<br>This API is no longer maintained since API version 9. Use [writeDataToAshmem](#writedatatoashmem11) instead.
10194e41f4b71Sopenharmony_ci
10195e41f4b71Sopenharmony_ciwriteToAshmem(buf: number[], size: number, offset: number): boolean
10196e41f4b71Sopenharmony_ci
10197e41f4b71Sopenharmony_ciWrites data to the shared file associated with this **Ashmem** object.
10198e41f4b71Sopenharmony_ci
10199e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
10200e41f4b71Sopenharmony_ci
10201e41f4b71Sopenharmony_ci**Parameters**
10202e41f4b71Sopenharmony_ci
10203e41f4b71Sopenharmony_ci| Name| Type    | Mandatory| Description                                              |
10204e41f4b71Sopenharmony_ci| ------ | -------- | ---- | -------------------------------------------------- |
10205e41f4b71Sopenharmony_ci| buf    | number[] | Yes  | Data to write.                            |
10206e41f4b71Sopenharmony_ci| size   | number   | Yes  | Size of the data to write.                                |
10207e41f4b71Sopenharmony_ci| offset | number   | Yes  | Start position of the data to write in the memory region associated with this **Ashmem** object.|
10208e41f4b71Sopenharmony_ci
10209e41f4b71Sopenharmony_ci**Return value**
10210e41f4b71Sopenharmony_ci
10211e41f4b71Sopenharmony_ci| Type   | Description                                                                         |
10212e41f4b71Sopenharmony_ci| ------- | ----------------------------------------------------------------------------- |
10213e41f4b71Sopenharmony_ci| boolean | Returns **true** if the data is written successfully; returns **false** otherwise.|
10214e41f4b71Sopenharmony_ci
10215e41f4b71Sopenharmony_ci**Example**
10216e41f4b71Sopenharmony_ci
10217e41f4b71Sopenharmony_ci  ```ts
10218e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
10219e41f4b71Sopenharmony_ci
10220e41f4b71Sopenharmony_ci  let ashmem = rpc.Ashmem.create("ashmem", 1024*1024);
10221e41f4b71Sopenharmony_ci  let mapResult = ashmem.mapReadAndWriteAshmem();
10222e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcTest map ashmem result is ' + mapResult);
10223e41f4b71Sopenharmony_ci  let ByteArrayVar = [1, 2, 3, 4, 5];
10224e41f4b71Sopenharmony_ci  let writeResult = ashmem.writeToAshmem(ByteArrayVar, 5, 0);
10225e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcTest: write to Ashmem result is ' + writeResult);
10226e41f4b71Sopenharmony_ci  ```
10227e41f4b71Sopenharmony_ci
10228e41f4b71Sopenharmony_ci### readDataFromAshmem<sup>11+</sup>
10229e41f4b71Sopenharmony_ci
10230e41f4b71Sopenharmony_cireadDataFromAshmem(size: number, offset: number): ArrayBuffer
10231e41f4b71Sopenharmony_ci
10232e41f4b71Sopenharmony_ciReads data from the shared file associated with this **Ashmem** object.
10233e41f4b71Sopenharmony_ci
10234e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
10235e41f4b71Sopenharmony_ci
10236e41f4b71Sopenharmony_ci**Parameters**
10237e41f4b71Sopenharmony_ci
10238e41f4b71Sopenharmony_ci| Name| Type  | Mandatory| Description                                              |
10239e41f4b71Sopenharmony_ci| ------ | ------ | ---- | -------------------------------------------------- |
10240e41f4b71Sopenharmony_ci| size   | number | Yes  | Size of the data to read.                              |
10241e41f4b71Sopenharmony_ci| offset | number | Yes  | Start position of the data to read in the memory region associated with this **Ashmem** object.|
10242e41f4b71Sopenharmony_ci
10243e41f4b71Sopenharmony_ci**Return value**
10244e41f4b71Sopenharmony_ci
10245e41f4b71Sopenharmony_ci| Type    | Description            |
10246e41f4b71Sopenharmony_ci| -------- | ---------------- |
10247e41f4b71Sopenharmony_ci| ArrayBuffer | Data read.|
10248e41f4b71Sopenharmony_ci
10249e41f4b71Sopenharmony_ci**Error codes**
10250e41f4b71Sopenharmony_ci
10251e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
10252e41f4b71Sopenharmony_ci
10253e41f4b71Sopenharmony_ci| ID| Error Message|
10254e41f4b71Sopenharmony_ci| -------- | -------- |
10255e41f4b71Sopenharmony_ci| 401      | check param failed |
10256e41f4b71Sopenharmony_ci| 1900004  | read from ashmem failed |
10257e41f4b71Sopenharmony_ci
10258e41f4b71Sopenharmony_ci**Example**
10259e41f4b71Sopenharmony_ci
10260e41f4b71Sopenharmony_ci  ```ts
10261e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
10262e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
10263e41f4b71Sopenharmony_ci
10264e41f4b71Sopenharmony_ci  let buffer = new ArrayBuffer(1024);
10265e41f4b71Sopenharmony_ci  let int32View = new Int32Array(buffer);
10266e41f4b71Sopenharmony_ci  for (let i = 0; i < int32View.length; i++) {
10267e41f4b71Sopenharmony_ci    int32View[i] = i * 2 + 1;
10268e41f4b71Sopenharmony_ci  }
10269e41f4b71Sopenharmony_ci  let size = buffer.byteLength;
10270e41f4b71Sopenharmony_ci  let ashmem = rpc.Ashmem.create("ashmem", 1024*1024);
10271e41f4b71Sopenharmony_ci  ashmem.mapReadWriteAshmem();
10272e41f4b71Sopenharmony_ci  try {
10273e41f4b71Sopenharmony_ci    ashmem.writeDataToAshmem(buffer, size, 0);
10274e41f4b71Sopenharmony_ci  } catch (error) {
10275e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
10276e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'Rpc write to ashmem fail, errorCode ' + e.code);
10277e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'Rpc write to ashmem fail, errorMessage ' + e.message);
10278e41f4b71Sopenharmony_ci  }
10279e41f4b71Sopenharmony_ci  try {
10280e41f4b71Sopenharmony_ci    let readResult = ashmem.readDataFromAshmem(size, 0);
10281e41f4b71Sopenharmony_ci    let readInt32View = new Int32Array(readResult);
10282e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', 'RpcTest: read from Ashmem result is ' + readInt32View);
10283e41f4b71Sopenharmony_ci  } catch (error) {
10284e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
10285e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'Rpc read from ashmem fail, errorCode ' + e.code);
10286e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'Rpc read from ashmem fail, errorMessage ' + e.message);
10287e41f4b71Sopenharmony_ci  }
10288e41f4b71Sopenharmony_ci  ```
10289e41f4b71Sopenharmony_ci
10290e41f4b71Sopenharmony_ci### readAshmem<sup>9+(deprecated)</sup>
10291e41f4b71Sopenharmony_ci
10292e41f4b71Sopenharmony_ci>**NOTE**<br>This API is no longer maintained since API version 9. Use [readDataFromAshmem](#readdatafromashmem11) instead.
10293e41f4b71Sopenharmony_ci
10294e41f4b71Sopenharmony_cireadAshmem(size: number, offset: number): number[]
10295e41f4b71Sopenharmony_ci
10296e41f4b71Sopenharmony_ciReads data from the shared file associated with this **Ashmem** object.
10297e41f4b71Sopenharmony_ci
10298e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
10299e41f4b71Sopenharmony_ci
10300e41f4b71Sopenharmony_ci**Parameters**
10301e41f4b71Sopenharmony_ci
10302e41f4b71Sopenharmony_ci| Name| Type  | Mandatory| Description                                              |
10303e41f4b71Sopenharmony_ci| ------ | ------ | ---- | -------------------------------------------------- |
10304e41f4b71Sopenharmony_ci| size   | number | Yes  | Size of the data to read.                              |
10305e41f4b71Sopenharmony_ci| offset | number | Yes  | Start position of the data to read in the memory region associated with this **Ashmem** object.|
10306e41f4b71Sopenharmony_ci
10307e41f4b71Sopenharmony_ci**Return value**
10308e41f4b71Sopenharmony_ci
10309e41f4b71Sopenharmony_ci| Type    | Description            |
10310e41f4b71Sopenharmony_ci| -------- | ---------------- |
10311e41f4b71Sopenharmony_ci| number[] | Data read.|
10312e41f4b71Sopenharmony_ci
10313e41f4b71Sopenharmony_ci**Error codes**
10314e41f4b71Sopenharmony_ci
10315e41f4b71Sopenharmony_ciFor details about the error codes, see [RPC Error Codes](errorcode-rpc.md).
10316e41f4b71Sopenharmony_ci
10317e41f4b71Sopenharmony_ci| ID| Error Message|
10318e41f4b71Sopenharmony_ci| -------- | -------- |
10319e41f4b71Sopenharmony_ci| 401      | check param failed |
10320e41f4b71Sopenharmony_ci| 1900004  | read from ashmem failed |
10321e41f4b71Sopenharmony_ci
10322e41f4b71Sopenharmony_ci**Example**
10323e41f4b71Sopenharmony_ci
10324e41f4b71Sopenharmony_ci  ```ts
10325e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
10326e41f4b71Sopenharmony_ci  import { BusinessError } from '@kit.BasicServicesKit';
10327e41f4b71Sopenharmony_ci
10328e41f4b71Sopenharmony_ci  let ashmem = rpc.Ashmem.create("ashmem", 1024*1024);
10329e41f4b71Sopenharmony_ci  ashmem.mapReadWriteAshmem();
10330e41f4b71Sopenharmony_ci  let ByteArrayVar = [1, 2, 3, 4, 5];
10331e41f4b71Sopenharmony_ci  ashmem.writeAshmem(ByteArrayVar, 5, 0);
10332e41f4b71Sopenharmony_ci  try {
10333e41f4b71Sopenharmony_ci    let readResult = ashmem.readAshmem(5, 0);
10334e41f4b71Sopenharmony_ci    hilog.info(0x0000, 'testTag', 'RpcTest: read from Ashmem result is ' + readResult);
10335e41f4b71Sopenharmony_ci  } catch (error) {
10336e41f4b71Sopenharmony_ci    let e: BusinessError = error as BusinessError;
10337e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'Rpc read from ashmem fail, errorCode ' + e.code);
10338e41f4b71Sopenharmony_ci    hilog.error(0x0000, 'testTag', 'Rpc read from ashmem fail, errorMessage ' + e.message);
10339e41f4b71Sopenharmony_ci  }
10340e41f4b71Sopenharmony_ci  ```
10341e41f4b71Sopenharmony_ci
10342e41f4b71Sopenharmony_ci### readFromAshmem<sup>8+(deprecated)</sup>
10343e41f4b71Sopenharmony_ci
10344e41f4b71Sopenharmony_ci>**NOTE**<br>This API is no longer maintained since API version 9. Use [readDataFromAshmem](#readdatafromashmem11) instead.
10345e41f4b71Sopenharmony_ci
10346e41f4b71Sopenharmony_cireadFromAshmem(size: number, offset: number): number[]
10347e41f4b71Sopenharmony_ci
10348e41f4b71Sopenharmony_ciReads data from the shared file associated with this **Ashmem** object.
10349e41f4b71Sopenharmony_ci
10350e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Communication.IPC.Core
10351e41f4b71Sopenharmony_ci
10352e41f4b71Sopenharmony_ci**Parameters**
10353e41f4b71Sopenharmony_ci
10354e41f4b71Sopenharmony_ci| Name| Type  | Mandatory| Description                                              |
10355e41f4b71Sopenharmony_ci| ------ | ------ | ---- | -------------------------------------------------- |
10356e41f4b71Sopenharmony_ci| size   | number | Yes  | Size of the data to read.                              |
10357e41f4b71Sopenharmony_ci| offset | number | Yes  | Start position of the data to read in the memory region associated with this **Ashmem** object.|
10358e41f4b71Sopenharmony_ci
10359e41f4b71Sopenharmony_ci**Return value**
10360e41f4b71Sopenharmony_ci
10361e41f4b71Sopenharmony_ci| Type    | Description            |
10362e41f4b71Sopenharmony_ci| -------- | ---------------- |
10363e41f4b71Sopenharmony_ci| number[] | Data read.|
10364e41f4b71Sopenharmony_ci
10365e41f4b71Sopenharmony_ci**Example**
10366e41f4b71Sopenharmony_ci
10367e41f4b71Sopenharmony_ci ``` ts
10368e41f4b71Sopenharmony_ci  import { hilog } from '@kit.PerformanceAnalysisKit';
10369e41f4b71Sopenharmony_ci
10370e41f4b71Sopenharmony_ci  let ashmem = rpc.Ashmem.create("ashmem", 1024*1024);
10371e41f4b71Sopenharmony_ci  let mapResult = ashmem.mapReadAndWriteAshmem();
10372e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcTest map ashmem result is ' + mapResult);
10373e41f4b71Sopenharmony_ci  let ByteArrayVar = [1, 2, 3, 4, 5];
10374e41f4b71Sopenharmony_ci  let writeResult = ashmem.writeToAshmem(ByteArrayVar, 5, 0);
10375e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcTest: write to Ashmem result is ' + writeResult);
10376e41f4b71Sopenharmony_ci  let readResult = ashmem.readFromAshmem(5, 0);
10377e41f4b71Sopenharmony_ci  hilog.info(0x0000, 'testTag', 'RpcTest: read to Ashmem result is ' + readResult);
10378e41f4b71Sopenharmony_ci ```
10379