using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using AuroraDesk.Core.Entities;
namespace AuroraDesk.Core.Interfaces;
///
/// 管理 SSH 会话的服务接口,支持多客户端并行连接与实时消息流
///
public interface ISshSessionService : IDisposable
{
///
/// 创建并启动一个新的 SSH 会话
///
/// 会话参数
/// 取消令牌
/// 会话信息
Task StartSessionAsync(SshSessionOptions options, CancellationToken cancellationToken = default);
///
/// 停止并释放指定会话
///
/// 会话标识
Task StopSessionAsync(Guid sessionId);
///
/// 向指定会话发送命令或文本
///
/// 会话标识
/// 要发送的内容
/// 取消令牌
Task SendAsync(Guid sessionId, string payload, CancellationToken cancellationToken = default);
///
/// 获取所有当前会话的快照
///
IReadOnlyCollection GetSessions();
///
/// 监听指定会话的状态变化
///
IObservable ObserveStatus(Guid sessionId);
///
/// 监听指定会话的消息流(包含发送与接收)
///
IObservable ObserveMessages(Guid sessionId);
}