62 lines
1.4 KiB
C#
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; }
|
|
}
|
|
|