You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.6 KiB
52 lines
1.6 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
using AuroraDesk.Core.Entities;
|
|
|
|
namespace AuroraDesk.Core.Interfaces;
|
|
|
|
/// <summary>
|
|
/// 管理 SSH 会话的服务接口,支持多客户端并行连接与实时消息流
|
|
/// </summary>
|
|
public interface ISshSessionService : IDisposable
|
|
{
|
|
/// <summary>
|
|
/// 创建并启动一个新的 SSH 会话
|
|
/// </summary>
|
|
/// <param name="options">会话参数</param>
|
|
/// <param name="cancellationToken">取消令牌</param>
|
|
/// <returns>会话信息</returns>
|
|
Task<SshSessionInfo> StartSessionAsync(SshSessionOptions options, CancellationToken cancellationToken = default);
|
|
|
|
/// <summary>
|
|
/// 停止并释放指定会话
|
|
/// </summary>
|
|
/// <param name="sessionId">会话标识</param>
|
|
Task StopSessionAsync(Guid sessionId);
|
|
|
|
/// <summary>
|
|
/// 向指定会话发送命令或文本
|
|
/// </summary>
|
|
/// <param name="sessionId">会话标识</param>
|
|
/// <param name="payload">要发送的内容</param>
|
|
/// <param name="cancellationToken">取消令牌</param>
|
|
Task<bool> SendAsync(Guid sessionId, string payload, CancellationToken cancellationToken = default);
|
|
|
|
/// <summary>
|
|
/// 获取所有当前会话的快照
|
|
/// </summary>
|
|
IReadOnlyCollection<SshSessionInfo> GetSessions();
|
|
|
|
/// <summary>
|
|
/// 监听指定会话的状态变化
|
|
/// </summary>
|
|
IObservable<SshSessionStatus> ObserveStatus(Guid sessionId);
|
|
|
|
/// <summary>
|
|
/// 监听指定会话的消息流(包含发送与接收)
|
|
/// </summary>
|
|
IObservable<SshMessage> ObserveMessages(Guid sessionId);
|
|
}
|
|
|
|
|
|
|