| // Copyright (c) 2015, 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_BIN_DART_IO_API_H_ | |
| #define RUNTIME_INCLUDE_BIN_DART_IO_API_H_ | |
| #include "../dart_tools_api.h" | |
| namespace dart { | |
| namespace bin { | |
| // Bootstraps 'dart:io'. | |
| void BootstrapDartIo(); | |
| // Cleans up 'dart:io'. | |
| void CleanupDartIo(); | |
| // Lets dart:io know where the system temporary directory is located. | |
| // Currently only wired up on Android. | |
| void SetSystemTempDirectory(const char* system_temp); | |
| // Tells the system whether to capture Stdout events. | |
| void SetCaptureStdout(bool value); | |
| // Tells the system whether to capture Stderr events. | |
| void SetCaptureStderr(bool value); | |
| // Should Stdout events be captured? | |
| bool ShouldCaptureStdout(); | |
| // Should Stderr events be captured? | |
| bool ShouldCaptureStderr(); | |
| // Set the executable name used by Platform.executable. | |
| void SetExecutableName(const char* executable_name); | |
| // Set the arguments used by Platform.executableArguments. | |
| void SetExecutableArguments(int script_index, char** argv); | |
| // Set dart:io implementation specific fields of Dart_EmbedderInformation. | |
| void GetIOEmbedderInformation(Dart_EmbedderInformation* info); | |
| // Appropriate to assign to Dart_InitializeParams.file_open/read/write/close. | |
| void* OpenFile(const char* name, bool write); | |
| void ReadFile(uint8_t** data, intptr_t* file_len, void* stream); | |
| void WriteFile(const void* buffer, intptr_t num_bytes, void* stream); | |
| void CloseFile(void* stream); | |
| // Generates 'length' random bytes into 'buffer'. Returns true on success | |
| // and false on failure. This is appropriate to assign to | |
| // Dart_InitializeParams.entropy_source. | |
| bool GetEntropy(uint8_t* buffer, intptr_t length); | |
| // Performs a lookup of the I/O Dart_NativeFunction with a specified 'name' and | |
| // 'argument_count'. Returns NULL if no I/O native function with a matching | |
| // name and parameter count is found. | |
| Dart_NativeFunction LookupIONative(Dart_Handle name, | |
| int argument_count, | |
| bool* auto_setup_scope); | |
| // Performs a lookup of the I/O function with a specified 'name' and | |
| // 'argument_count'. Returns nullptr if matching function is not found. | |
| void* LookupIOFfiNative(const char* name, uintptr_t argument_count); | |
| // Returns the symbol for I/O native function 'nf'. Returns NULL if 'nf' is not | |
| // a valid I/O native function. | |
| const uint8_t* LookupIONativeSymbol(Dart_NativeFunction nf); | |
| // Configuration for embedder extension points provided by `dart:io`. | |
| struct DartIoSettings { | |
| // Value for `dart:_http` `_httpConnectionHook`, `nullptr` means default. | |
| // | |
| // Must be a function of type `void Function(Uri)`. | |
| Dart_Handle http_connection_hook = nullptr; | |
| // Callback to intercept `_Platform.localeName`, `nullptr` means default. | |
| // | |
| // Must be a function of type `String Function()`. | |
| Dart_Handle locale_name_callback = nullptr; | |
| // Namespace root to pass to `_Namespace._setupNamespace`. | |
| // | |
| // Must be either an string (path) or an integer (dirfd). | |
| Dart_Handle namespace_root = nullptr; | |
| // Value for `Platform.script`. | |
| const char* script_uri = nullptr; | |
| // Setting this to `true` will disable `exit`. | |
| // | |
| // When disabled `exit` throws an `UnsupportedError`. | |
| bool disable_exit = false; | |
| // Register service extensions for profiling networking traffic. | |
| // | |
| // See `_NetworkProfile` for the list of extensions. | |
| bool enable_network_profiling = true; | |
| }; | |
| // Prepare 'dart:io' library for running. | |
| Dart_Handle SetupDartIoLibrary(const DartIoSettings& settings); | |
| } // namespace bin | |
| } // namespace dart | |
| #endif // RUNTIME_INCLUDE_BIN_DART_IO_API_H_ |