Files
sdk/runtime/bin/dart_io_api_impl.cc
T
Jason Simmons bbcc9babb8 [dart:io] Update dart::bin::CleanupDartIo and no-SSL mode to support recent changes to IOService
https://dart-review.googlesource.com/c/sdk/+/437160 changed how the IOService port is created.

The Flutter engine calls dart::bin::CleanupDartIo during shutdown of the Dart VM.  That API now needs to clean up the IOService.

This PR also adds support for the IOService port change when building Dart with secure sockets disabled.

TEST=building the Flutter engine

Change-Id: I2d61713cfbe3feddb7d361605c25229d05dd61a3
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/438605
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Jason Simmons <jsimmons@google.com>
2025-07-07 09:34:35 -07:00

95 lines
2.6 KiB
C++

// 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.
#include "include/bin/dart_io_api.h"
#include "bin/crypto.h"
#include "bin/directory.h"
#include "bin/eventhandler.h"
#include "bin/io_natives.h"
#if defined(DART_IO_SECURE_SOCKET_DISABLED)
#include "bin/io_service_no_ssl.h"
#else // defined(DART_IO_SECURE_SOCKET_DISABLED)
#include "bin/io_service.h"
#endif // defined(DART_IO_SECURE_SOCKET_DISABLED)
#include "bin/platform.h"
#include "bin/process.h"
#if !defined(DART_IO_SECURE_SOCKET_DISABLED)
#include "bin/secure_socket_filter.h"
#endif
#include "bin/thread.h"
#include "bin/utils.h"
namespace dart {
namespace bin {
void BootstrapDartIo() {
// Bootstrap 'dart:io' event handler.
TimerUtils::InitOnce();
Process::Init();
#if !defined(DART_IO_SECURE_SOCKET_DISABLED)
SSLFilter::Init();
#endif
EventHandler::Start();
}
void CleanupDartIo() {
EventHandler::Stop();
Process::TerminateExitCodeHandler();
#if !defined(DART_IO_SECURE_SOCKET_DISABLED)
SSLFilter::Cleanup();
#endif
Process::Cleanup();
IOService::Cleanup();
}
void SetSystemTempDirectory(const char* system_temp) {
Directory::SetSystemTemp(system_temp);
}
void SetExecutableName(const char* executable_name) {
Platform::SetExecutableName(executable_name);
}
void SetExecutableArguments(int script_index, char** argv) {
Platform::SetExecutableArguments(script_index, argv);
}
void GetIOEmbedderInformation(Dart_EmbedderInformation* info) {
ASSERT(info != nullptr);
ASSERT(info->version == DART_EMBEDDER_INFORMATION_CURRENT_VERSION);
Process::GetRSSInformation(&(info->max_rss), &(info->current_rss));
}
void* OpenFile(const char* name, bool write) {
return DartUtils::OpenFile(name, write);
}
void ReadFile(uint8_t** data, intptr_t* file_len, void* stream) {
DartUtils::ReadFile(data, file_len, stream);
}
void WriteFile(const void* buffer, intptr_t num_bytes, void* stream) {
DartUtils::WriteFile(buffer, num_bytes, stream);
}
void CloseFile(void* stream) {
DartUtils::CloseFile(stream);
}
bool GetEntropy(uint8_t* buffer, intptr_t length) {
return Crypto::GetRandomBytes(length, buffer);
}
Dart_NativeFunction LookupIONative(Dart_Handle name,
int argument_count,
bool* auto_setup_scope) {
return IONativeLookup(name, argument_count, auto_setup_scope);
}
const uint8_t* LookupIONativeSymbol(Dart_NativeFunction nf) {
return IONativeSymbol(nf);
}
} // namespace bin
} // namespace dart