// 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 "dart_api.h" #include "dart_tools_api.h" namespace dart { namespace embedder { // Initialize all subsystems of the embedder. // Returns true on success and false otherwise, in which case error would // contain error message. DART_WARN_UNUSED_RESULT bool InitOnce(char** error); // 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 callback data. void* callback_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; // TODO(vegorov) document these ones. bool dev_mode; bool deterministic; }; // Create and initialize vm-service isolate. This method should be used // when VM invokes isolate creation callback with DART_VM_SERVICE_ISOLATE_NAME // as script_uri. // The isolate is created from the given kernel binary that is expected to // contain all necessary vmservice libraries. DART_WARN_UNUSED_RESULT Dart_Isolate CreateVmServiceIsolate(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_