VZVirtualMachineInstance: Move some extensions around (#364)

Move the implemention of VirtualMachineInstance to a standalone
extension and all the other helper methods outside of this.
This commit is contained in:
Danny Canter
2025-10-27 09:28:25 -07:00
committed by GitHub
parent 1b10836c41
commit 939108b27a
@@ -25,7 +25,7 @@ import NIOPosix
import Synchronization
import Virtualization
struct VZVirtualMachineInstance: VirtualMachineInstance, Sendable {
struct VZVirtualMachineInstance: Sendable {
typealias Agent = Vminitd
/// Attached mounts on the virtual machine, organized by metadata ID.
@@ -102,26 +102,7 @@ struct VZVirtualMachineInstance: VirtualMachineInstance, Sendable {
}
}
extension VZVirtualMachineInstance {
func vzStateToInstanceState() -> VirtualMachineInstanceState {
self.queue.sync {
let state: VirtualMachineInstanceState
switch self.vm.state {
case .starting:
state = .starting
case .running:
state = .running
case .stopping:
state = .stopping
case .stopped:
state = .stopped
default:
state = .unknown
}
return state
}
}
extension VZVirtualMachineInstance: VirtualMachineInstance {
func start() async throws {
try await lock.withLock { _ in
guard self.state == .stopped else {
@@ -191,9 +172,7 @@ extension VZVirtualMachineInstance {
let conn = try await dial(Vminitd.port)
return Vminitd(connection: conn, group: self.group)
}
}
extension VZVirtualMachineInstance {
func dial(_ port: UInt32) async throws -> FileHandle {
try await vm.connect(
queue: queue,
@@ -220,6 +199,27 @@ extension VZVirtualMachineInstance {
port: port
)
}
}
extension VZVirtualMachineInstance {
func vzStateToInstanceState() -> VirtualMachineInstanceState {
self.queue.sync {
let state: VirtualMachineInstanceState
switch self.vm.state {
case .starting:
state = .starting
case .running:
state = .running
case .stopping:
state = .stopping
case .stopped:
state = .stopped
default:
state = .unknown
}
return state
}
}
func prestart() async throws {
if self.config.rosetta {