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<RequestResult> 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<[RequestResult](#requestresult9)> | 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<SendRequestResult> 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<[SendRequestResult](#sendrequestresult8deprecated)> | 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<RequestResult>): 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<[RequestResult](#requestresult9)> | 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<SendRequestResult>): 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<[SendRequestResult](#sendrequestresult8deprecated)> | 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<RequestResult> 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<[RequestResult](#requestresult9)> | 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<SendRequestResult> 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<[SendRequestResult](#sendrequestresult8deprecated)> | 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<RequestResult>): 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<[RequestResult](#requestresult9)> | 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<SendRequestResult>): 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<[SendRequestResult](#sendrequestresult8deprecated)> | 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<RequestResult> 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<[RequestResult](#requestresult9)> | 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<SendRequestResult> 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<[SendRequestResult](#sendrequestresult8deprecated)> | 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<RequestResult>): 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<[RequestResult](#requestresult9)> | 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<SendRequestResult>): 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<[SendRequestResult](#sendrequestresult8deprecated)> | 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