Documentation
¶
Overview ¶
Package engine 托管伪终端(PTY)会话:开 shell、持有会话表、维护回放缓冲、 向多个订阅者广播输出、按进程组终止。
职责:
- 会话的完整生命周期:创建、写入、订阅、调尺寸、显式关闭、自然退出
- 每会话一个环形缓冲,支撑断线重连的 since 续传
- 多方接入时的尺寸协商(取所有订阅者中的最小值)
边界:
- 不认识 HTTP / WebSocket / JSON,也不认识 agentd 的任务模型
- 不做鉴权,不做 base_path 白名单校验(那是 agentd 接口层的参数校验)
- 不落盘:会话表只在内存里,随 agentd 生死(spec §3.1、§10)
- 不解析终端转义序列,只搬字节
PTY 的 unix 平台原语:开伪终端、起 login shell、调尺寸、按进程组终止。
职责:
- 把 openpty 与进程组信号这两件平台相关的事收敛在本文件
- 向上只暴露与 platform_other.go 完全同签名的五个函数
边界:
- 不认识会话、缓冲、订阅者——那是 ptyhost.go 的事
- 不做参数校验(shell 是否存在等),失败原样上抛
日志:本文件不打日志。所有错误原样上抛,由 ptyhost.go 带着会话 id 统一记录, 避免同一个失败在两层各留一条无法关联的记录。
Index ¶
- type Engine
- func (h *Engine) Attach(id string, since uint64) (*ptyhost.Attachment, error)
- func (h *Engine) Close(id string) error
- func (h *Engine) Get(id string) (ptyhost.Session, bool)
- func (h *Engine) List() []ptyhost.Session
- func (h *Engine) Open(opt ptyhost.OpenOptions) (ptyhost.Session, error)
- func (h *Engine) Supported() bool
- func (h *Engine) Write(id string, p []byte) error
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Engine ¶
type Engine struct {
// contains filtered or unexported fields
}
Engine 是一个进程内 PTY 引擎的会话持有者。零值不可用,请用 New。
func (*Engine) Attach ¶
Attach 订阅一个会话,并原子地取回 since 之后的历史。
「原子」是关键:回放与订阅必须在同一把锁里完成,否则两者之间产生的输出 会两头都不落,用户看到的历史就缺了一段。
func (*Engine) Close ¶
Close 显式关闭会话:整组 SIGTERM,宽限 termGrace 后 SIGKILL,并立即 把会话从列表里摘掉。
注意:摘除是同步的、杀进程的兜底是异步的——DELETE 请求不该为了等一个 赖着不走的进程而挂 2 秒。用户点了 ×,列表里就该立刻没有它。
Click to show internal directories.
Click to hide internal directories.