package services import ( "gitlink.org.cn/cloudream/jcs-pub/client/internal/accessstat" "gitlink.org.cn/cloudream/jcs-pub/client/internal/accesstoken" "gitlink.org.cn/cloudream/jcs-pub/client/internal/db" "gitlink.org.cn/cloudream/jcs-pub/client/internal/downloader" "gitlink.org.cn/cloudream/jcs-pub/client/internal/downloader/strategy" "gitlink.org.cn/cloudream/jcs-pub/client/internal/metacache" "gitlink.org.cn/cloudream/jcs-pub/client/internal/mount" "gitlink.org.cn/cloudream/jcs-pub/client/internal/publock" "gitlink.org.cn/cloudream/jcs-pub/client/internal/spacesyncer" "gitlink.org.cn/cloudream/jcs-pub/client/internal/speedstats" "gitlink.org.cn/cloudream/jcs-pub/client/internal/ticktock" "gitlink.org.cn/cloudream/jcs-pub/client/internal/uploader" "gitlink.org.cn/cloudream/jcs-pub/common/pkgs/storage/pool" "gitlink.org.cn/cloudream/jcs-pub/common/pkgs/sysevent" ) // Service 结构体封装了分布锁服务和任务管理服务。 type Service struct { PubLock *publock.PubLock Downloader *downloader.Downloader AccessStat *accessstat.AccessStat Uploader *uploader.Uploader StrategySelector *strategy.Selector UserSpaceMeta *metacache.UserSpaceMeta DB *db.DB EvtPub *sysevent.Publisher EvtWatcher *sysevent.WatcherHost // 为nil表示没有配置Watcher Mount *mount.Mount StgPool *pool.Pool SpaceSyncer *spacesyncer.SpaceSyncer TickTock *ticktock.TickTock SpeedStats *speedstats.SpeedStats AccToken *accesstoken.Keeper } func NewService( publock *publock.PubLock, downloader *downloader.Downloader, accStat *accessstat.AccessStat, uploder *uploader.Uploader, strategySelector *strategy.Selector, userSpaceMeta *metacache.UserSpaceMeta, db *db.DB, evtPub *sysevent.Publisher, evtWatcher *sysevent.WatcherHost, mount *mount.Mount, stgPool *pool.Pool, spaceSyncer *spacesyncer.SpaceSyncer, tickTock *ticktock.TickTock, speedStats *speedstats.SpeedStats, accToken *accesstoken.Keeper, ) *Service { return &Service{ PubLock: publock, Downloader: downloader, AccessStat: accStat, Uploader: uploder, StrategySelector: strategySelector, UserSpaceMeta: userSpaceMeta, DB: db, EvtPub: evtPub, EvtWatcher: evtWatcher, Mount: mount, StgPool: stgPool, SpaceSyncer: spaceSyncer, TickTock: tickTock, SpeedStats: speedStats, AccToken: accToken, } }