diff --git a/packages/tizen_rpc_port/example/client/lib/message_client.dart b/packages/tizen_rpc_port/example/client/lib/message_client.dart index af665625e..3718c4ef4 100644 --- a/packages/tizen_rpc_port/example/client/lib/message_client.dart +++ b/packages/tizen_rpc_port/example/client/lib/message_client.dart @@ -58,7 +58,7 @@ typedef NotifyCallback = void Function(String, String); class _NotifyCallback extends _Delegate { _NotifyCallback(NotifyCallback callback, {bool once = false}) - : super(_DelegateId.notifyCallback.id, once, callback); + : super(_DelegateId.notifyCallback.id, once, callback); @override Future onReceivedEvent(Parcel parcel) async { diff --git a/packages/tizen_rpc_port/example/server/lib/message_server.dart b/packages/tizen_rpc_port/example/server/lib/message_server.dart index 20e94241b..6b8ca88fb 100644 --- a/packages/tizen_rpc_port/example/server/lib/message_server.dart +++ b/packages/tizen_rpc_port/example/server/lib/message_server.dart @@ -73,7 +73,7 @@ abstract class ServiceBase { class NotifyCallback extends _Delegate { NotifyCallback(this._port, this.service, {bool once = false}) - : super(_DelegateId.notifyCallback.id, once); + : super(_DelegateId.notifyCallback.id, once); final Port? _port; @@ -110,8 +110,8 @@ typedef _MethodHandler = Future Function(ServiceBase, Port, Parcel); class Message extends StubBase { Message({required ServiceBuilder serviceBuilder}) - : _serviceBuilder = serviceBuilder, - super('Message') { + : _serviceBuilder = serviceBuilder, + super('Message') { _methodHandlers[_MethodId.register.id] = _onRegisterMethod; _methodHandlers[_MethodId.unregister.id] = _onUnregisterMethod; _methodHandlers[_MethodId.send.id] = _onSendMethod; diff --git a/packages/tizen_rpc_port/lib/src/parcel.dart b/packages/tizen_rpc_port/lib/src/parcel.dart index 2ec3c61d2..e841b4278 100644 --- a/packages/tizen_rpc_port/lib/src/parcel.dart +++ b/packages/tizen_rpc_port/lib/src/parcel.dart @@ -157,8 +157,8 @@ class Parcel { static final Finalizer _finalizer = Finalizer((rpc_port_parcel_h handle) { - tizen.rpc_port_parcel_destroy(handle); - }); + tizen.rpc_port_parcel_destroy(handle); + }); /// Gets a byte array backed by the raw data of this parcel. Uint8List asRaw() { @@ -484,4 +484,105 @@ class Parcel { return ParcelHeader._fromHandle(pHeader.value); }); } + + /// Gets the reader position of this parcel. + int get reader { + return using((Arena arena) { + final Pointer pValue = arena(); + final int ret = _rpcPortParcelGetReader(_handle, pValue); + if (ret != 0) { + throw PlatformException( + code: ret.toString(), + message: tizen.get_error_message(ret).toDartString(), + ); + } + return pValue.value; + }); + } + + /// Sets the reader position of this parcel. + set reader(int value) { + RangeError.checkNotNegative(value, 'value'); + final int ret = _rpcPortParcelSetReader(_handle, value); + if (ret != 0) { + throw PlatformException( + code: ret.toString(), + message: tizen.get_error_message(ret).toDartString(), + ); + } + } + + /// Gets the data size of this parcel. + int get dataSize { + return using((Arena arena) { + final Pointer pValue = arena(); + final int ret = _rpcPortParcelGetDataSize(_handle, pValue); + if (ret != 0) { + throw PlatformException( + code: ret.toString(), + message: tizen.get_error_message(ret).toDartString(), + ); + } + return pValue.value; + }); + } + + /// Sets the data size of this parcel. + set dataSize(int value) { + RangeError.checkNotNegative(value, 'value'); + final int ret = _rpcPortParcelSetDataSize(_handle, value); + if (ret != 0) { + throw PlatformException( + code: ret.toString(), + message: tizen.get_error_message(ret).toDartString(), + ); + } + } + + /// Reserves the capacity of this parcel. + void reserve(int size) { + RangeError.checkNotNegative(size, 'size'); + final int ret = _rpcPortParcelReserve(_handle, size); + if (ret != 0) { + throw PlatformException( + code: ret.toString(), + message: tizen.get_error_message(ret).toDartString(), + ); + } + } } + +final DynamicLibrary _libRpcPort = DynamicLibrary.open('librpc-port.so.1'); + +final int Function(rpc_port_parcel_h, Pointer) +_rpcPortParcelGetReader = _libRpcPort + .lookup)>>( + 'rpc_port_parcel_get_reader', + ) + .asFunction(); + +final int Function(rpc_port_parcel_h, int) _rpcPortParcelSetReader = _libRpcPort + .lookup>( + 'rpc_port_parcel_set_reader', + ) + .asFunction(); + +final int Function(rpc_port_parcel_h, Pointer) +_rpcPortParcelGetDataSize = _libRpcPort + .lookup)>>( + 'rpc_port_parcel_get_data_size', + ) + .asFunction(); + +final int Function(rpc_port_parcel_h, int) _rpcPortParcelSetDataSize = + _libRpcPort + .lookup>( + 'rpc_port_parcel_set_data_size', + ) + .asFunction(); + +final int Function(rpc_port_parcel_h, int) _rpcPortParcelReserve = _libRpcPort + .lookup>( + 'rpc_port_parcel_reserve', + ) + .asFunction(); diff --git a/packages/tizen_rpc_port/lib/src/proxy_base.dart b/packages/tizen_rpc_port/lib/src/proxy_base.dart index 8d80d104b..079ab78d5 100644 --- a/packages/tizen_rpc_port/lib/src/proxy_base.dart +++ b/packages/tizen_rpc_port/lib/src/proxy_base.dart @@ -107,8 +107,8 @@ abstract class ProxyBase { _activeConnections.add(_handle.address); _streamSubscription = _stream!.listen((dynamic data) async { - final Map map = - (data as Map).cast(); + final Map map = (data as Map) + .cast(); final int handle = map['handle'] as int; if (handle != _handle.address) { return; diff --git a/packages/tizen_rpc_port/lib/src/stub_base.dart b/packages/tizen_rpc_port/lib/src/stub_base.dart index 987ef918d..430976cd4 100644 --- a/packages/tizen_rpc_port/lib/src/stub_base.dart +++ b/packages/tizen_rpc_port/lib/src/stub_base.dart @@ -87,8 +87,8 @@ abstract class StubBase { {'handle': _handle.address}, ); _streamSubscription = stream.listen((dynamic data) async { - final Map map = - (data as Map).cast(); + final Map map = (data as Map) + .cast(); final int handle = map['handle'] as int; if (handle != _handle.address) { return;