stdio

package
v0.9.8 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 15, 2023 License: MIT Imports: 11 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewConsole

func NewConsole() (*os.File, string, error)

NewConsole allocates a new console and returns the File for its master and path for its slave.

func ResizeConsole

func ResizeConsole(pty *os.File, height, width uint16) error

ResizeConsole sends the appropriate resize to a pTTY FD Synchronization of pty should be handled in the callers context.

Types

type ConnectionSet

type ConnectionSet struct {
	In, Out, Err transport.Connection
}

ConnectionSet is a structure defining the readers and writers the Core implementation should forward a process's stdio through.

func Connect

func Connect(tport transport.Transport, settings ConnectionSettings) (_ *ConnectionSet, err error)

Connect returns new transport.Connection instances, one for each stdio pipe to be used. If CreateStd*Pipe for a given pipe is false, the given Connection is set to nil.

func (*ConnectionSet) Close

func (s *ConnectionSet) Close() error

Close closes each stdio connection.

func (*ConnectionSet) Files

func (s *ConnectionSet) Files() (_ *FileSet, err error)

Files returns a FileSet with an os.File for each connection in the connection set.

type ConnectionSettings

type ConnectionSettings struct {
	StdIn  *uint32
	StdOut *uint32
	StdErr *uint32
}

ConnectionSettings describe the stdin, stdout, stderr ports to connect the transport to. A nil port specifies no connection.

type FileSet

type FileSet struct {
	In, Out, Err *os.File
}

FileSet represents the stdio of a process. It contains os.File types for in, out, err.

func (*FileSet) Close

func (fs *FileSet) Close() error

Close closes all the FileSet handles.

type PipeRelay

type PipeRelay struct {
	// contains filtered or unexported fields
}

PipeRelay is a relay built to expose a pipe interface for stdin, stdout, stderr on top of a ConnectionSet.

func NewPipeRelay

func NewPipeRelay(s *ConnectionSet) (_ *PipeRelay, err error)

NewPipeRelay returns a new pipe relay wrapping the given connection stdin, stdout, stderr set. If s is nil will assume al stdin, stdout, stderr pipes.

func (*PipeRelay) CloseUnusedPipes

func (pr *PipeRelay) CloseUnusedPipes()

CloseUnusedPipes gives the caller the ability to close any pipes that do not have a cooresponding entry on the ConnectionSet. This is to be used in conjunction with NewPipeRelay where s is nil which wil open all pipes and later calling ReplaceConnectionSet with the actual connections.

func (*PipeRelay) Files

func (pr *PipeRelay) Files() (*FileSet, error)

Files returns a FileSet with an os.File for each connection in the connection set.

func (*PipeRelay) ReplaceConnectionSet

func (pr *PipeRelay) ReplaceConnectionSet(s *ConnectionSet)

ReplaceConnectionSet allows the caller to add a new destination set after creating the relay. This can only be called previous to the call to Start.

func (*PipeRelay) Start

func (pr *PipeRelay) Start()

Start starts the relay operation. The caller must call Wait to wait for the relay to finish and release the associated resources.

func (*PipeRelay) Wait

func (pr *PipeRelay) Wait()

Wait waits for the relaying to finish and closes the associated pipes and connections.

type TtyRelay

type TtyRelay struct {
	// contains filtered or unexported fields
}

TtyRelay relays IO between a set of stdio connections and a master PTY file.

func NewTtyRelay

func NewTtyRelay(s *ConnectionSet, pty *os.File) *TtyRelay

NewTtyRelay returns a new TTY relay for a given master PTY file.

func (*TtyRelay) ReplaceConnectionSet

func (r *TtyRelay) ReplaceConnectionSet(s *ConnectionSet)

ReplaceConnectionSet allows the caller to add a new destination set after creating the relay. This can only be called previous to the call to Start.

func (*TtyRelay) ResizeConsole

func (r *TtyRelay) ResizeConsole(height, width uint16) error

ResizeConsole sends the appropriate resize to a pTTY FD

func (*TtyRelay) Start

func (r *TtyRelay) Start()

Start starts the relay operation. The caller must call Wait to wait for the relay to finish and release the associated resources.

func (*TtyRelay) Wait

func (r *TtyRelay) Wait()

Wait waits for the relaying to finish and closes the associated files and connections.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL