| // Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| import 'dart:ffi'; |
| |
| import 'third_party/generated_bindings.dart'; |
| |
| import 'lang/jstring.dart'; |
| import 'jarray.dart'; |
| import 'jobject.dart'; |
| |
| class $MethodInvocation { |
| final Pointer<CallbackResult> result; |
| final JString methodDescriptor; |
| final JArray<JObject> args; |
| |
| $MethodInvocation._(this.result, this.methodDescriptor, this.args); |
| |
| factory $MethodInvocation.fromAddresses( |
| int resultAddress, |
| int descriptorAddress, |
| int argsAddress, |
| ) { |
| return $MethodInvocation._( |
| Pointer<CallbackResult>.fromAddress(resultAddress), |
| JString.fromRef(Pointer<Void>.fromAddress(descriptorAddress)), |
| JArray.fromRef( |
| const JObjectType(), |
| Pointer<Void>.fromAddress(argsAddress), |
| ), |
| ); |
| } |
| |
| factory $MethodInvocation.fromMessage(List<dynamic> message) { |
| return $MethodInvocation.fromAddresses(message[0], message[1], message[2]); |
| } |
| } |