blob: ac8d4cf55c6c8602d8be99a8ff875d5cb3b6b88c [file] [log] [blame]
// Copyright (c) 2025, 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.
/// A shorthand for the type of a map produced by the json decoder.
typedef JsonMap = Map<String, Object?>;
/// An identifier for a process that can both send and received messages.
enum ProcessId {
/// The Dart tooling daemon.
dtd('dtd'),
/// The IDE (or client).
ide('ide'),
/// The analysis server.
server('server'),
/// The plugin isolate (even though technically it isn't a separate process).
plugin('plugin'),
/// The file system's file watcher.
watcher('watcher');
/// A map used to associate processes with their name.
///
/// Used to support [Process.forName].
static Map<String, ProcessId> _nameMap = {
for (var value in values) value.name: value,
};
/// The name of the process.
final String name;
/// Creates a new process with the given [name].
const ProcessId(this.name);
/// Returns the process with the given [name].
factory ProcessId.forName(String name) => _nameMap[name]!;
}