|
123456789101112131415161718192021222324252627282930313233343536373839404142 |
- package services
-
- import (
- "fmt"
-
- stgglb "gitlink.org.cn/cloudream/storage2/common/globals"
- scmq "gitlink.org.cn/cloudream/storage2/common/pkgs/mq/scanner"
- scevt "gitlink.org.cn/cloudream/storage2/common/pkgs/mq/scanner/event"
- )
-
- // ScannerService 是扫描器服务结构体,封装了与扫描器相关的服务功能。
- type ScannerService struct {
- *Service
- }
-
- // ScannerSvc 返回ScannerService的一个实例,提供扫描器服务。
- func (svc *Service) ScannerSvc() *ScannerService {
- return &ScannerService{Service: svc}
- }
-
- // PostEvent 执行数据巡查事件
- // event: 需要发送的事件对象。
- // isEmergency: 是否为紧急事件,影响事件处理的优先级。
- // dontMerge: 是否禁止将该事件与其它事件合并处理。
- // 返回值: 发送事件过程中遇到的错误。
- func (svc *ScannerService) PostEvent(event scevt.Event, isEmergency bool, dontMerge bool) error {
- // 从扫描器消息池中获取客户端实例
- scCli, err := stgglb.ScannerMQPool.Acquire()
- if err != nil {
- return fmt.Errorf("new scanner client: %w", err)
- }
- // 确保扫描器客户端在函数返回前被释放
- defer stgglb.ScannerMQPool.Release(scCli)
-
- // 向扫描器客户端发送事件
- err = scCli.PostEvent(scmq.NewPostEvent(event, isEmergency, dontMerge))
- if err != nil {
- return fmt.Errorf("request to scanner failed, err: %w", err)
- }
-
- return nil
- }
|