exec

package
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: Dec 15, 2024 License: Apache-2.0 Imports: 18 Imported by: 0

Documentation

Index

Constants

View Source
const (
	StdinDataFlag byte = iota
	StdoutDataFlag
	StderrDataFlag
	ResizeFlag
	ExitCodeFlag
)
View Source
const (
	AnnoCommand      = "scaf/exec-command"
	AnnoInputEnabled = "scaf/exec-input-enabled"
	AnnoTTY          = "scaf/exec-tty"
)

表示 exec 参数的注解

Variables

This section is empty.

Functions

func GetExecOptions

func GetExecOptions(stream *streamv1.Stream) (command []string, input, tty bool, err error)

GetExecOptions 通过流获取 exec 选项

func NewExecStream

func NewExecStream(command []string, input, tty bool) *streamv1.Stream

NewExecStream 创建 exec 流

Types

type Agent

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

Agent exec 代理

func NewAgent

func NewAgent(client common.Client) *Agent

NewAgent 创建 Agent

func (*Agent) Client

func (agent *Agent) Client() common.Client

Client 返回 Agent 使用的客户端

func (*Agent) Run

func (agent *Agent) Run(ctx context.Context, stream *streamv1.Stream) error

Run 与服务端建立连接并运行命令 阻塞直到运行结束

func (*Agent) WithClient

func (agent *Agent) WithClient(client common.Client) *Agent

WithClient 返回使用指定客户端的 Agent

type ExitCode

type ExitCode int32

ExitCode 退出码

func (ExitCode) Raw

func (e ExitCode) Raw() []byte

Raw 返回消息原始数据 格式: 4 code(int32)

func (ExitCode) Type

func (e ExitCode) Type() MessageType

type Message

type Message interface {
	// Type 返回消息类型
	Type() MessageType
	// Raw 返回消息原始数据
	Raw() []byte
}

Message 消息

func ParseMessage

func ParseMessage(raw []byte) (Message, error)

ParseMessage 解析消息

type MessageType

type MessageType string

MessageType 消息类型

const (
	StdinDataType  MessageType = "StdinData"
	StdoutDataType MessageType = "StdoutData"
	StderrDataType MessageType = "StderrData"
	ResizeType     MessageType = "Resize"
	ExitCodeType   MessageType = "ExitCode"
)

type Resize

type Resize struct {
	Height uint16
	Width  uint16
}

Resize 调整窗口大小消息

func (Resize) Raw

func (r Resize) Raw() []byte

Raw 返回消息原始数据 格式: 3 height(uint16) width(uint16)

func (Resize) Type

func (r Resize) Type() MessageType

Type 返回消息类型

type StderrData

type StderrData []byte

StderrData 标准错误流数据

func (StderrData) Raw

func (d StderrData) Raw() []byte

Raw 返回消息原始数据 格式: 2 data([]byte)

func (StderrData) Type

func (d StderrData) Type() MessageType

Type 返回消息类型

type StdinData

type StdinData []byte

StdinData 标准输入流数据

func (StdinData) Raw

func (d StdinData) Raw() []byte

Raw 返回消息原始数据 格式: 0 data([]byte)

func (StdinData) Type

func (d StdinData) Type() MessageType

Type 返回消息类型

type StdoutData

type StdoutData []byte

StdoutData 标准输出流数据

func (StdoutData) Raw

func (d StdoutData) Raw() []byte

Raw 返回消息原始数据 格式: 1 data([]byte)

func (StdoutData) Type

func (d StdoutData) Type() MessageType

Type 返回消息类型

type Terminal

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

Terminal exec 终端

func NewTerminal

func NewTerminal(client common.Client) *Terminal

NewTerminal 创建 Terminal

func (*Terminal) Client

func (t *Terminal) Client() common.Client

Client 返回 Terminal 使用的客户端

func (*Terminal) Run

func (t *Terminal) Run(ctx context.Context, stream *streamv1.Stream, stdin io.Reader, stdout, stderr io.Writer) error

Run 与服务端建立连接并转发输入输出 阻塞直到运行结束

func (*Terminal) WithClient

func (t *Terminal) WithClient(client common.Client) *Terminal

WithClient 返回使用指定客户端的 Terminal

type TerminalSession

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

func NewTerminalSession

func NewTerminalSession(
	conn streams.Connection,
	stdin io.Reader,
	stdout, stderr io.Writer,
	input bool,
) *TerminalSession

NewTerminalSession 创建 *TerminalSession

func (*TerminalSession) HandleConn

func (s *TerminalSession) HandleConn(ctx context.Context)

HandleConn 处理连接 只能调用一次

func (*TerminalSession) HandleConnDone

func (s *TerminalSession) HandleConnDone() <-chan struct{}

HandleConnDone 返回处理连接完成通知通道

func (*TerminalSession) HandleInput

func (s *TerminalSession) HandleInput(ctx context.Context)

HandleInput 处理输入 只能调用一次

func (*TerminalSession) HandleInputDone

func (s *TerminalSession) HandleInputDone() <-chan struct{}

HandleInputDone 返回处理输入完成通知通道

Jump to

Keyboard shortcuts

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