Flutter Engine
The Flutter Engine
|
#include "dart_api.h"
Go to the source code of this file.
Classes | |
struct | _Dart_CObject |
Typedefs | |
typedef struct _Dart_CObject | Dart_CObject |
typedef void(* | Dart_NativeMessageHandler) (Dart_Port dest_port_id, Dart_CObject *message) |
Functions | |
DART_EXPORT bool | Dart_PostCObject (Dart_Port port_id, Dart_CObject *message) |
DART_EXPORT bool | Dart_PostInteger (Dart_Port port_id, int64_t message) |
DART_EXPORT Dart_Port | Dart_NewNativePort (const char *name, Dart_NativeMessageHandler handler, bool handle_concurrently) |
DART_EXPORT bool | Dart_CloseNativePort (Dart_Port native_port_id) |
DART_EXPORT DART_WARN_UNUSED_RESULT Dart_Handle | Dart_CompileAll (void) |
DART_EXPORT DART_WARN_UNUSED_RESULT Dart_Handle | Dart_FinalizeAllClasses (void) |
DART_EXPORT void * | Dart_ExecuteInternalCommand (const char *command, void *arg) |
typedef struct _Dart_CObject Dart_CObject |
typedef void(* Dart_NativeMessageHandler) (Dart_Port dest_port_id, Dart_CObject *message) |
A native message handler.
This handler is associated with a native port by calling Dart_NewNativePort.
The message received is decoded into the message structure. The lifetime of the message data is controlled by the caller. All the data references from the message are allocated by the caller and will be reclaimed when returning to it.
Definition at line 150 of file dart_native_api.h.
enum Dart_CObject_Type |
A Dart_CObject is used for representing Dart objects as native C data outside the Dart heap. These objects are totally detached from the Dart heap. Only a subset of the Dart objects have a representation as a Dart_CObject.
The string encoding in the 'value.as_string' is UTF-8.
All the different types from dart:typed_data are exposed as type kTypedData. The specific type from dart:typed_data is in the type field of the as_typed_data structure. The length in the as_typed_data structure is always in bytes.
The data for kTypedData is copied on message send and ownership remains with the caller. The ownership of data for kExternalTyped is passed to the VM on message send and returned when the VM invokes the Dart_HandleFinalizer callback; a non-NULL callback must be provided.
Note that Dart_CObject_kNativePointer is intended for internal use by dart:io implementation and has no connection to dart:ffi Pointer class. It represents a pointer to a native resource of a known type. The receiving side will only see this pointer as an integer and will not see the specified finalizer. The specified finalizer will only be invoked if the message is not delivered.
Definition at line 43 of file dart_native_api.h.
DART_EXPORT bool Dart_CloseNativePort | ( | Dart_Port | native_port_id | ) |
Closes the native port with the given id.
The port must have been allocated by a call to Dart_NewNativePort.
native_port_id | The id of the native port to close. |
DART_EXPORT DART_WARN_UNUSED_RESULT Dart_Handle Dart_CompileAll | ( | void | ) |
Forces all loaded classes and functions to be compiled eagerly in the current isolate..
TODO(turnidge): Document.
DART_EXPORT void * Dart_ExecuteInternalCommand | ( | const char * | command, |
void * | arg | ||
) |
DART_EXPORT DART_WARN_UNUSED_RESULT Dart_Handle Dart_FinalizeAllClasses | ( | void | ) |
Finalizes all classes.
DART_EXPORT Dart_Port Dart_NewNativePort | ( | const char * | name, |
Dart_NativeMessageHandler | handler, | ||
bool | handle_concurrently | ||
) |
Creates a new native port. When messages are received on this native port, then they will be dispatched to the provided native message handler.
name | The name of this port in debugging messages. |
handler | The C handler to run when messages arrive on the port. |
handle_concurrently | Is it okay to process requests on this native port concurrently? |
DART_EXPORT bool Dart_PostCObject | ( | Dart_Port | port_id, |
Dart_CObject * | message | ||
) |
Posts a message on some port. The message will contain the Dart_CObject object graph rooted in 'message'.
While the message is being sent the state of the graph of Dart_CObject structures rooted in 'message' should not be accessed, as the message generation will make temporary modifications to the data. When the message has been sent the graph will be fully restored.
If true is returned, the message was enqueued, and finalizers for external typed data will eventually run, even if the receiving isolate shuts down before processing the message. If false is returned, the message was not enqueued and ownership of external typed data in the message remains with the caller.
This function may be called on any thread when the VM is running (that is, after Dart_Initialize has returned and before Dart_Cleanup has been called).
port_id | The destination port. |
message | The message to send. |
DART_EXPORT bool Dart_PostInteger | ( | Dart_Port | port_id, |
int64_t | message | ||
) |
Posts a message on some port. The message will contain the integer 'message'.
port_id | The destination port. |
message | The message to send. |