1// Copyright 2013 The Flutter Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "flutter/runtime/dart_isolate_group_data.h"
6#include "flutter/runtime/dart_snapshot.h"
7
8namespace flutter {
9
10DartIsolateGroupData::DartIsolateGroupData(
11 const Settings& settings,
12 fml::RefPtr<const DartSnapshot> isolate_snapshot,
13 std::string advisory_script_uri,
14 std::string advisory_script_entrypoint,
15 const ChildIsolatePreparer& child_isolate_preparer,
16 const fml::closure& isolate_create_callback,
17 const fml::closure& isolate_shutdown_callback)
18 : settings_(settings),
19 isolate_snapshot_(isolate_snapshot),
20 advisory_script_uri_(advisory_script_uri),
21 advisory_script_entrypoint_(advisory_script_entrypoint),
22 child_isolate_preparer_(child_isolate_preparer),
23 isolate_create_callback_(isolate_create_callback),
24 isolate_shutdown_callback_(isolate_shutdown_callback) {
25 FML_DCHECK(isolate_snapshot_) << "Must contain a valid isolate snapshot.";
26}
27
28DartIsolateGroupData::~DartIsolateGroupData() = default;
29
30const Settings& DartIsolateGroupData::GetSettings() const {
31 return settings_;
32}
33
34fml::RefPtr<const DartSnapshot> DartIsolateGroupData::GetIsolateSnapshot()
35 const {
36 return isolate_snapshot_;
37}
38
39const std::string& DartIsolateGroupData::GetAdvisoryScriptURI() const {
40 return advisory_script_uri_;
41}
42
43const std::string& DartIsolateGroupData::GetAdvisoryScriptEntrypoint() const {
44 return advisory_script_entrypoint_;
45}
46
47ChildIsolatePreparer DartIsolateGroupData::GetChildIsolatePreparer() const {
48 std::scoped_lock lock(child_isolate_preparer_mutex_);
49 return child_isolate_preparer_;
50}
51
52const fml::closure& DartIsolateGroupData::GetIsolateCreateCallback() const {
53 return isolate_create_callback_;
54}
55
56const fml::closure& DartIsolateGroupData::GetIsolateShutdownCallback() const {
57 return isolate_shutdown_callback_;
58}
59
60void DartIsolateGroupData::SetChildIsolatePreparer(
61 const ChildIsolatePreparer& value) {
62 std::scoped_lock lock(child_isolate_preparer_mutex_);
63 child_isolate_preparer_ = value;
64}
65
66} // namespace flutter
67