123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- package hcsshim
- import (
- "io"
- "time"
- "github.com/Microsoft/hcsshim/internal/schema1"
- )
- // ProcessConfig is used as both the input of Container.CreateProcess
- // and to convert the parameters to JSON for passing onto the HCS
- type ProcessConfig = schema1.ProcessConfig
- type Layer = schema1.Layer
- type MappedDir = schema1.MappedDir
- type MappedPipe = schema1.MappedPipe
- type HvRuntime = schema1.HvRuntime
- type MappedVirtualDisk = schema1.MappedVirtualDisk
- // AssignedDevice represents a device that has been directly assigned to a container
- //
- // NOTE: Support added in RS5
- type AssignedDevice = schema1.AssignedDevice
- // ContainerConfig is used as both the input of CreateContainer
- // and to convert the parameters to JSON for passing onto the HCS
- type ContainerConfig = schema1.ContainerConfig
- type ComputeSystemQuery = schema1.ComputeSystemQuery
- // Container represents a created (but not necessarily running) container.
- type Container interface {
- // Start synchronously starts the container.
- Start() error
- // Shutdown requests a container shutdown, but it may not actually be shutdown until Wait() succeeds.
- Shutdown() error
- // Terminate requests a container terminate, but it may not actually be terminated until Wait() succeeds.
- Terminate() error
- // Waits synchronously waits for the container to shutdown or terminate.
- Wait() error
- // WaitTimeout synchronously waits for the container to terminate or the duration to elapse. It
- // returns false if timeout occurs.
- WaitTimeout(time.Duration) error
- // Pause pauses the execution of a container.
- Pause() error
- // Resume resumes the execution of a container.
- Resume() error
- // HasPendingUpdates returns true if the container has updates pending to install.
- HasPendingUpdates() (bool, error)
- // Statistics returns statistics for a container.
- Statistics() (Statistics, error)
- // ProcessList returns details for the processes in a container.
- ProcessList() ([]ProcessListItem, error)
- // MappedVirtualDisks returns virtual disks mapped to a utility VM, indexed by controller
- MappedVirtualDisks() (map[int]MappedVirtualDiskController, error)
- // CreateProcess launches a new process within the container.
- CreateProcess(c *ProcessConfig) (Process, error)
- // OpenProcess gets an interface to an existing process within the container.
- OpenProcess(pid int) (Process, error)
- // Close cleans up any state associated with the container but does not terminate or wait for it.
- Close() error
- // Modify the System
- Modify(config *ResourceModificationRequestResponse) error
- }
- // Process represents a running or exited process.
- type Process interface {
- // Pid returns the process ID of the process within the container.
- Pid() int
- // Kill signals the process to terminate but does not wait for it to finish terminating.
- Kill() error
- // Wait waits for the process to exit.
- Wait() error
- // WaitTimeout waits for the process to exit or the duration to elapse. It returns
- // false if timeout occurs.
- WaitTimeout(time.Duration) error
- // ExitCode returns the exit code of the process. The process must have
- // already terminated.
- ExitCode() (int, error)
- // ResizeConsole resizes the console of the process.
- ResizeConsole(width, height uint16) error
- // Stdio returns the stdin, stdout, and stderr pipes, respectively. Closing
- // these pipes does not close the underlying pipes; it should be possible to
- // call this multiple times to get multiple interfaces.
- Stdio() (io.WriteCloser, io.ReadCloser, io.ReadCloser, error)
- // CloseStdin closes the write side of the stdin pipe so that the process is
- // notified on the read side that there is no more data in stdin.
- CloseStdin() error
- // Close cleans up any state associated with the process but does not kill
- // or wait on it.
- Close() error
- }
|