using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using TeamAAS_VP.Models;
using TeamAAS_VP.Models.Scanner;
namespace TeamAAS_VP.Interfaces
{
///
/// 提供扫码枪生命周期管理的接口,包括创建、获取及注销扫码枪实例。
///
public interface IScannerService
{
///
/// 异步创建并注册一个扫码枪实例。
///
/// 要创建扫码枪的唯一标识(GUID)。
/// 用于初始化扫码枪的信息对象,不能为空。
///
/// 返回一个 ;任务完成时布尔值指示创建是否成功。
///
/// 当 为 null 时抛出。
Task CreateScannerAsync(Guid id, ScannerInfo scannerInfo);
///
/// 同步创建并注册一个扫码枪实例。
///
/// 要创建扫码枪的唯一标识(GUID)。
/// 用于初始化扫码枪的信息对象,不能为空。
/// 返回布尔值,指示创建是否成功。
/// 当 为 null 时抛出。
bool CreateScanner(Guid id, ScannerInfo scannerInfo);
///
/// 获取已注册的扫码枪实例(同步)。通过 GUID 查找。
///
/// 要获取的扫码枪唯一标识(GUID)。
///
/// 已注册的 实例;如果未找到对应扫码枪,返回 null(或实现可选择抛出异常)。
///
IScanner GetScanner(Guid id);
///
/// 异步获取已注册的扫码枪实例。通过 GUID 查找。
///
/// 要获取的扫码枪唯一标识(GUID)。
///
/// 一个任务,完成时返回对应的 实例;若未找到可返回 null。
///
Task GetScannerAsync(Guid id);
///
/// 获取所有已注册的扫码枪实例(同步)。
///
///
IReadOnlyCollection GetAllScanners();
///
/// 获取所有已注册的扫码枪实例(异步)。
///
///
Task> GetAllScannersAsync();
///
/// 尝试获取已注册的扫码枪实例(同步)。通过 GUID 查找。
///
///
///
///
bool TryGetScanner(Guid id, out IScanner scanner);
///
/// 尝试获取已注册的扫码枪实例(异步)。通过 GUID 查找。
///
///
///
Task<(bool found, IScanner scanner)> TryGetScannerAsync(Guid id);
///
/// 检查扫码枪是否已注册(同步)。通过 GUID 检查。
///
///
///
bool ContainsScanner(Guid id);
///
/// 检查扫码枪是否已注册(异步)。通过 GUID 检查。
///
///
///
Task ContainsScannerAsync(Guid id);
///
/// 移除已注册的扫码枪实例(同步)。通过 GUID 移除。
///
///
/// 返回是否成功移除
bool RemoveScanner(Guid id);
///
/// 移除已注册的扫码枪实例(异步)。通过 GUID 移除。
///
///
///
Task RemoveScannerAsync(Guid id);
///
/// 异步注销并移除指定的扫码枪注册信息。通过 GUID 注销。
///
/// 要注销的扫码枪唯一标识(GUID)。
/// 表示注销操作完成的任务。
Task UnRegisterScannerAsync(Guid id);
///
/// 同步注销并移除指定的扫码枪注册信息。通过 GUID 注销。
///
/// 要注销的扫码枪唯一标识(GUID)。
void UnRegisterScanner(Guid id);
///
/// 获取已注册的扫码枪实例(同步)。通过扫码枪编号(int)查找。
///
/// 扫码枪编号(整型)。
///
/// 已注册的 实例;如果未找到对应扫码枪,返回 null(或实现可选择抛出异常)。
///
IScanner GetScannerByNumber(int number);
///
/// 异步获取已注册的扫码枪实例。通过扫码枪编号(int)查找。
///
/// 扫码枪编号(整型)。
///
/// 一个任务,完成时返回对应的 实例;若未找到可返回 null。
///
Task GetScannerByNumberAsync(int number);
///
/// 异步注销并移除指定的扫码枪注册信息。通过扫码枪编号(int)注销。
///
/// 要注销的扫码枪编号(整型)。
/// 表示注销操作完成的任务。
Task UnRegisterScannerByNumberAsync(int number);
///
/// 同步注销并移除指定的扫码枪注册信息。通过扫码枪编号(int)注销。
///
/// 要注销的扫码枪编号(整型)。
void UnRegisterScannerByNumber(int number);
///
/// 移除所有扫码枪
///
void RemoveAllScanners();
///
/// 初始化所有扫码枪
///
///
///
(bool IsSucceed, string Message) InitializeAllScanners(ScannerInfo[] scanners);
///
/// 初始化所有扫码枪 (异步)
///
///
Task<(bool IsSucceed, string Message)> InitializeAllScannersAsync(ScannerInfo[] scanners);
///
/// 更新扫码枪编号
///
///
///
void UpdateScannerNumber(Guid id, int newNumber);
}
}