HtmlToPdf/mvp/HtmlToPdfService.Core/Pool/IBrowserPool.cs
2025-12-11 23:35:52 +08:00

62 lines
1.4 KiB
C#

using PuppeteerSharp;
namespace HtmlToPdfService.Core.Pool;
/// <summary>
/// 浏览器池接口
/// </summary>
public interface IBrowserPool : IAsyncDisposable
{
/// <summary>
/// 获取浏览器实例
/// </summary>
/// <param name="cancellationToken">取消令牌</param>
/// <returns>浏览器实例</returns>
Task<IBrowser> AcquireAsync(CancellationToken cancellationToken = default);
/// <summary>
/// 释放浏览器实例
/// </summary>
/// <param name="browser">浏览器实例</param>
void Release(IBrowser browser);
/// <summary>
/// 预热浏览器池(创建最小数量的实例)
/// </summary>
/// <param name="cancellationToken">取消令牌</param>
Task WarmUpAsync(CancellationToken cancellationToken = default);
/// <summary>
/// 获取池状态信息
/// </summary>
/// <returns>池状态</returns>
BrowserPoolStatus GetStatus();
}
/// <summary>
/// 浏览器池状态
/// </summary>
public class BrowserPoolStatus
{
/// <summary>
/// 总实例数
/// </summary>
public int TotalInstances { get; set; }
/// <summary>
/// 可用实例数
/// </summary>
public int AvailableInstances { get; set; }
/// <summary>
/// 最大实例数
/// </summary>
public int MaxInstances { get; set; }
/// <summary>
/// 当前正在使用的实例数
/// </summary>
public int InUseInstances { get; set; }
}