| // Copyright (c) 2018, 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. |
| |
| #ifndef RUNTIME_INCLUDE_DART_EMBEDDER_API_H_ |
| #define RUNTIME_INCLUDE_DART_EMBEDDER_API_H_ |
| |
| #include "include/dart_api.h" |
| #include "include/dart_tools_api.h" |
| |
| namespace dart { |
| namespace embedder { |
| |
| // Initialize all subsystems of the embedder. |
| // |
| // Must be called before the `Dart_Initialize()` call to initialize the |
| // Dart VM. |
| // |
| // Returns true on success and false otherwise, in which case error would |
| // contain error message. |
| DART_WARN_UNUSED_RESULT bool InitOnce(char** error); |
| |
| // Cleans up all subsystems of the embedder. |
| // |
| // Must be called after the `Dart_Cleanup()` call to initialize the |
| // Dart VM. |
| void Cleanup(); |
| |
| // Common arguments that are passed to isolate creation callback and to |
| // API methods that create isolates. |
| struct IsolateCreationData { |
| // URI for the main script that will be running in the isolate. |
| const char* script_uri; |
| |
| // Advisory name of the main method that will be run by isolate. |
| // Only used for error messages. |
| const char* main; |
| |
| // Isolate creation flags. Might be absent. |
| Dart_IsolateFlags* flags; |
| |
| // Isolate group callback data. |
| void* isolate_group_data; |
| |
| // Isolate callback data. |
| void* isolate_data; |
| }; |
| |
| // Create and initialize kernel-service isolate. This method should be used |
| // when VM invokes isolate creation callback with DART_KERNEL_ISOLATE_NAME as |
| // script_uri. |
| // The isolate is created from the given snapshot (might be kernel data or |
| // app-jit snapshot). |
| DART_WARN_UNUSED_RESULT Dart_Isolate |
| CreateKernelServiceIsolate(const IsolateCreationData& data, |
| const uint8_t* buffer, |
| intptr_t buffer_size, |
| char** error); |
| |
| // Service isolate configuration. |
| struct VmServiceConfiguration { |
| enum { |
| kBindHttpServerToAFreePort = 0, |
| kDoNotAutoStartHttpServer = -1 |
| }; |
| |
| // Address to which HTTP server will be bound. |
| const char* ip; |
| |
| // Default port. See enum above for special values. |
| int port; |
| |
| // If non-null, connection information for the VM service will be output to a |
| // file in JSON format at the location specified. |
| const char* write_service_info_filename; |
| |
| // TODO(vegorov) document these ones. |
| bool dev_mode; |
| bool deterministic; |
| bool disable_auth_codes; |
| }; |
| |
| // Create and initialize vm-service isolate from the given AOT snapshot, which |
| // is expected to contain all necessary 'vm-service' libraries. |
| // This method should be used when VM invokes isolate creation callback with |
| // DART_VM_SERVICE_ISOLATE_NAME as script_uri. |
| DART_WARN_UNUSED_RESULT Dart_Isolate |
| CreateVmServiceIsolate(const IsolateCreationData& data, |
| const VmServiceConfiguration& config, |
| const uint8_t* isolate_data, |
| const uint8_t* isolate_instr, |
| char** error); |
| |
| // Create and initialize vm-service isolate from the given kernel binary, which |
| // is expected to contain all necessary 'vm-service' libraries. |
| // This method should be used when VM invokes isolate creation callback with |
| // DART_VM_SERVICE_ISOLATE_NAME as script_uri. |
| DART_WARN_UNUSED_RESULT Dart_Isolate |
| CreateVmServiceIsolateFromKernel(const IsolateCreationData& data, |
| const VmServiceConfiguration& config, |
| const uint8_t* kernel_buffer, |
| intptr_t kernel_buffer_size, |
| char** error); |
| |
| } // namespace embedder |
| } // namespace dart |
| |
| #endif // RUNTIME_INCLUDE_DART_EMBEDDER_API_H_ |