Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Classes | Functions
dart::embedder Namespace Reference

Classes

struct  IsolateCreationData
 
struct  VmServiceConfiguration
 

Functions

static char * MallocFormatedString (const char *format,...)
 
bool InitOnce (char **error)
 
void Cleanup ()
 
Dart_Isolate CreateKernelServiceIsolate (const IsolateCreationData &data, const uint8_t *buffer, intptr_t buffer_size, char **error)
 
Dart_Isolate CreateVmServiceIsolate (const IsolateCreationData &data, const VmServiceConfiguration &config, const uint8_t *isolate_data, const uint8_t *isolate_instr, char **error)
 
Dart_Isolate CreateVmServiceIsolateFromKernel (const IsolateCreationData &data, const VmServiceConfiguration &config, const uint8_t *kernel_buffer, intptr_t kernel_buffer_size, char **error)
 

Function Documentation

◆ Cleanup()

void dart::embedder::Cleanup ( )

Definition at line 50 of file dart_embedder_api_impl.cc.

50 {
51 bin::Process::ClearAllSignalHandlers();
52
53 bin::EventHandler::Stop();
54#if !defined(DART_IO_SECURE_SOCKET_DISABLED)
55 bin::SSLFilter::Cleanup();
56#endif
57 bin::Process::Cleanup();
58}

◆ CreateKernelServiceIsolate()

DART_WARN_UNUSED_RESULT Dart_Isolate dart::embedder::CreateKernelServiceIsolate ( const IsolateCreationData data,
const uint8_t *  buffer,
intptr_t  buffer_size,
char **  error 
)

Definition at line 60 of file dart_embedder_api_impl.cc.

63 {
65 data.script_uri, data.main, buffer, buffer_size, data.flags,
66 data.isolate_group_data, data.isolate_data, error);
67 if (kernel_isolate == nullptr) {
68 return nullptr;
69 }
70
73 if (Dart_IsError(result)) {
74 *error = Utils::StrDup(Dart_GetError(result));
77 return nullptr;
78 }
79 result = bin::DartUtils::PrepareForScriptLoading(/*is_service_isolate=*/false,
80 /*trace_loading=*/false);
83 return kernel_isolate;
84}
static uint32_t buffer_size(uint32_t offset, uint32_t maxAlignment)
DART_EXPORT void Dart_EnterScope(void)
DART_EXPORT void Dart_ExitScope(void)
DART_EXPORT void Dart_ShutdownIsolate(void)
struct _Dart_Handle * Dart_Handle
Definition dart_api.h:258
struct _Dart_Isolate * Dart_Isolate
Definition dart_api.h:88
DART_EXPORT Dart_Isolate Dart_CreateIsolateGroupFromKernel(const char *script_uri, const char *name, const uint8_t *kernel_buffer, intptr_t kernel_buffer_size, Dart_IsolateFlags *flags, void *isolate_group_data, void *isolate_data, char **error)
DART_EXPORT DART_WARN_UNUSED_RESULT Dart_Handle Dart_LoadScriptFromKernel(const uint8_t *kernel_buffer, intptr_t kernel_size)
DART_EXPORT bool Dart_IsError(Dart_Handle handle)
DART_EXPORT void Dart_ExitIsolate(void)
DART_EXPORT const char * Dart_GetError(Dart_Handle handle)
static const uint8_t buffer[]
const uint8_t uint32_t uint32_t GError ** error
GAsyncResult * result

◆ CreateVmServiceIsolate()

DART_WARN_UNUSED_RESULT Dart_Isolate dart::embedder::CreateVmServiceIsolate ( const IsolateCreationData data,
const VmServiceConfiguration config,
const uint8_t *  isolate_data,
const uint8_t *  isolate_instr,
char **  error 
)

Definition at line 86 of file dart_embedder_api_impl.cc.

90 {
91 if (data.flags == nullptr) {
92 *error = Utils::StrDup("Expected non-null flags");
93 return nullptr;
94 }
95 data.flags->load_vmservice_library = true;
96
97 Dart_Isolate service_isolate = Dart_CreateIsolateGroup(
98 data.script_uri, data.main, isolate_data, isolate_instr, data.flags,
99 data.isolate_group_data, data.isolate_data, error);
100 if (service_isolate == nullptr) {
101 return nullptr;
102 }
103
105 // Load embedder specific bits and return.
106 if (!bin::VmService::Setup(config.ip, config.port, config.dev_mode,
107 config.disable_auth_codes,
109 /*trace_loading=*/false, config.deterministic,
110 /*enable_service_port_fallback=*/false,
111 /*wait_for_dds_to_advertise_service=*/false,
112 /*serve_devtools=*/false,
113 /*serve_observatory=*/true,
114 /*print_dtd=*/false)) {
115 *error = Utils::StrDup(bin::VmService::GetErrorMessage());
116 return nullptr;
117 }
118
121 return service_isolate;
122}
DART_EXPORT Dart_Isolate Dart_CreateIsolateGroup(const char *script_uri, const char *name, const uint8_t *isolate_snapshot_data, const uint8_t *isolate_snapshot_instructions, Dart_IsolateFlags *flags, void *isolate_group_data, void *isolate_data, char **error)

◆ CreateVmServiceIsolateFromKernel()

DART_WARN_UNUSED_RESULT Dart_Isolate dart::embedder::CreateVmServiceIsolateFromKernel ( const IsolateCreationData data,
const VmServiceConfiguration config,
const uint8_t *  kernel_buffer,
intptr_t  kernel_buffer_size,
char **  error 
)

Definition at line 124 of file dart_embedder_api_impl.cc.

129 {
130 if (data.flags == nullptr) {
131 *error = Utils::StrDup("Expected non-null flags");
132 return nullptr;
133 }
134 data.flags->load_vmservice_library = true;
135
137 data.script_uri, data.main, kernel_buffer, kernel_buffer_size, data.flags,
138 data.isolate_group_data, data.isolate_data, error);
139 if (service_isolate == nullptr) {
140 return nullptr;
141 }
142
144 // Load embedder specific bits and return.
145 if (!bin::VmService::Setup(config.ip, config.port, config.dev_mode,
146 config.disable_auth_codes,
148 /*trace_loading=*/false, config.deterministic,
149 /*enable_service_port_fallback=*/false,
150 /*wait_for_dds_to_advertise_service=*/false,
151 /*serve_devtools=*/false,
152 /*serve_observatory=*/true,
153 /*print_dtd=*/false)) {
154 *error = Utils::StrDup(bin::VmService::GetErrorMessage());
155 return nullptr;
156 }
157
160 return service_isolate;
161}

◆ InitOnce()

DART_WARN_UNUSED_RESULT bool dart::embedder::InitOnce ( char **  error)

Definition at line 34 of file dart_embedder_api_impl.cc.

34 {
35 if (!bin::DartUtils::SetOriginalWorkingDirectory()) {
36 bin::OSError err;
37 *error = MallocFormatedString("Error determining current directory: %s\n",
38 err.message());
39 return false;
40 }
41 bin::TimerUtils::InitOnce();
42 bin::Process::Init();
43#if !defined(DART_IO_SECURE_SOCKET_DISABLED)
44 bin::SSLFilter::Init();
45#endif
46 bin::EventHandler::Start();
47 return true;
48}
char * message()
Definition utils.h:36
static char * MallocFormatedString(const char *format,...)

◆ MallocFormatedString()

static char * dart::embedder::MallocFormatedString ( const char *  format,
  ... 
)
static

Definition at line 19 of file dart_embedder_api_impl.cc.

19 {
20 va_list measure_args;
21 va_start(measure_args, format);
22 intptr_t len = Utils::VSNPrint(nullptr, 0, format, measure_args);
23 va_end(measure_args);
24
25 char* buffer = reinterpret_cast<char*>(malloc(len + 1));
26 MSAN_UNPOISON(buffer, (len + 1));
27 va_list print_args;
28 va_start(print_args, format);
29 Utils::VSNPrint(buffer, (len + 1), format, print_args);
30 va_end(print_args);
31 return buffer;
32}
uint32_t uint32_t * format
#define MSAN_UNPOISON(ptr, len)
void * malloc(size_t size)
Definition allocation.cc:19