Files
AJ Emory afeceb05d4 Reorganize runtime targets for scalable plugin support (#1577)
## Type of Change
- [x] Bug fix
- [ ] New feature  
- [ ] Breaking change
- [ ] Documentation update

## Motivation and Context
Closes #1569

Separates generic runtime infrastructure from Linux-specific
implementation into distinct SPM targets:

- ContainerRuntimeClient — generic runtime plugin client API
- ContainerRuntimeLinuxClient — Linux-specific types
- ContainerRuntimeLinuxServer — Linux runtime service + interface
strategy implementations

Renames types to reflect the runtime/sandbox distinction:
- SandboxClient → RuntimeClient
- SandboxService → RuntimeService
- SandboxRoutes → RuntimeRoutes
- SandboxKeys → RuntimeKeys

Breaking for external consumers:
- ContainerSandboxService removed, replaced by ContainerRuntimeClient +
ContainerRuntimeLinuxServer
- Public types renamed

## Testing
- [x] Tested locally
- [ ] Added/updated tests
- [ ] Added/updated docs
2026-05-20 12:57:10 -07:00

60 lines
2.7 KiB
Swift

//===----------------------------------------------------------------------===//
// Copyright © 2026 Apple Inc. and the container project authors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//===----------------------------------------------------------------------===//
/// XPC routes exposed by the runtime service.
public enum RuntimeRoutes: String {
// MARK: - Service lifecycle
/// Create an XPC endpoint for communicating with the runtime service.
case createEndpoint = "com.apple.container.runtime/createEndpoint"
/// Shut down the runtime service process. Requires the sandbox to be stopped first.
case shutdown = "com.apple.container.runtime/shutdown"
// MARK: - Sandbox lifecycle
/// Bootstrap the sandbox: create the VM, configure networks, and boot the guest.
case bootstrap = "com.apple.container.runtime/bootstrap"
/// Stop the sandbox and all processes running inside it.
case stop = "com.apple.container.runtime/stop"
/// Return the current state of the sandbox.
case state = "com.apple.container.runtime/state"
/// Get resource usage statistics for the sandbox.
case statistics = "com.apple.container.runtime/statistics"
/// Open a vsock connection to a port inside the sandbox.
case dial = "com.apple.container.runtime/dial"
// MARK: - Process management
/// Register a new process inside the sandbox (used by exec).
case createProcess = "com.apple.container.runtime/createProcess"
/// Start a registered process inside the sandbox.
case start = "com.apple.container.runtime/start"
/// Send a signal to a process inside the sandbox.
case kill = "com.apple.container.runtime/kill"
/// Resize the PTY of a process inside the sandbox.
case resize = "com.apple.container.runtime/resize"
/// Wait for a process inside the sandbox to exit.
case wait = "com.apple.container.runtime/wait"
/// Execute a new process in the sandbox.
case exec = "com.apple.container.runtime/exec"
// MARK: - File Management
/// Copy a file or directory into the container.
case copyIn = "com.apple.container.runtime/copyIn"
/// Copy a file or directory out of the container.
case copyOut = "com.apple.container.runtime/copyOut"
}