//===----------------------------------------------------------------------===// // Copyright © 2025-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. //===----------------------------------------------------------------------===// import Foundation /// Statistics for a container suitable for CLI display. public struct ContainerStats: Sendable, Codable { /// Container ID public var id: String /// Physical memory usage in bytes public var memoryUsageBytes: UInt64 /// Memory limit in bytes public var memoryLimitBytes: UInt64 /// CPU usage in microseconds public var cpuUsageUsec: UInt64 /// Network received bytes (sum of all interfaces) public var networkRxBytes: UInt64 /// Network transmitted bytes (sum of all interfaces) public var networkTxBytes: UInt64 /// Block I/O read bytes (sum of all devices) public var blockReadBytes: UInt64 /// Block I/O write bytes (sum of all devices) public var blockWriteBytes: UInt64 /// Number of processes in the container public var numProcesses: UInt64 public init( id: String, memoryUsageBytes: UInt64, memoryLimitBytes: UInt64, cpuUsageUsec: UInt64, networkRxBytes: UInt64, networkTxBytes: UInt64, blockReadBytes: UInt64, blockWriteBytes: UInt64, numProcesses: UInt64 ) { self.id = id self.memoryUsageBytes = memoryUsageBytes self.memoryLimitBytes = memoryLimitBytes self.cpuUsageUsec = cpuUsageUsec self.networkRxBytes = networkRxBytes self.networkTxBytes = networkTxBytes self.blockReadBytes = blockReadBytes self.blockWriteBytes = blockWriteBytes self.numProcesses = numProcesses } }