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.7 KiB
52 lines
1.7 KiB
|
1 month ago
|
using System;
|
||
|
|
using System.Collections.Generic;
|
||
|
|
using System.Threading;
|
||
|
|
using System.Threading.Tasks;
|
||
|
|
using AuroraDesk.Core.Entities;
|
||
|
|
|
||
|
|
namespace AuroraDesk.Core.Interfaces;
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// 管理 Plink 会话的服务接口,支持多客户端并行连接与实时消息流
|
||
|
|
/// </summary>
|
||
|
|
public interface IPlinkSessionService : IDisposable
|
||
|
|
{
|
||
|
|
/// <summary>
|
||
|
|
/// 创建并启动一个新的 Plink 会话
|
||
|
|
/// </summary>
|
||
|
|
/// <param name="options">会话参数</param>
|
||
|
|
/// <param name="cancellationToken">取消令牌</param>
|
||
|
|
/// <returns>会话信息</returns>
|
||
|
|
Task<PlinkSessionInfo> StartSessionAsync(PlinkSessionOptions 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<PlinkSessionInfo> GetSessions();
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// 监听指定会话的状态变化
|
||
|
|
/// </summary>
|
||
|
|
IObservable<PlinkSessionStatus> ObserveStatus(Guid sessionId);
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// 监听指定会话的消息流(包含发送与接收)
|
||
|
|
/// </summary>
|
||
|
|
IObservable<PlinkMessage> ObserveMessages(Guid sessionId);
|
||
|
|
}
|
||
|
|
|