github.com/spline-fu/mattermost-server@v4.10.10+incompatible/jobs/server.go (about) 1 // Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved. 2 // See License.txt for license information. 3 4 package jobs 5 6 import ( 7 ejobs "github.com/mattermost/mattermost-server/einterfaces/jobs" 8 "github.com/mattermost/mattermost-server/model" 9 "github.com/mattermost/mattermost-server/store" 10 ) 11 12 type ConfigService interface { 13 Config() *model.Config 14 AddConfigListener(func(old, current *model.Config)) string 15 RemoveConfigListener(string) 16 } 17 18 type StaticConfigService struct { 19 Cfg *model.Config 20 } 21 22 func (s StaticConfigService) Config() *model.Config { return s.Cfg } 23 func (StaticConfigService) AddConfigListener(func(old, current *model.Config)) string { return "" } 24 func (StaticConfigService) RemoveConfigListener(string) {} 25 26 type JobServer struct { 27 ConfigService ConfigService 28 Store store.Store 29 Workers *Workers 30 Schedulers *Schedulers 31 32 DataRetentionJob ejobs.DataRetentionJobInterface 33 MessageExportJob ejobs.MessageExportJobInterface 34 ElasticsearchAggregator ejobs.ElasticsearchAggregatorInterface 35 ElasticsearchIndexer ejobs.ElasticsearchIndexerInterface 36 LdapSync ejobs.LdapSyncInterface 37 } 38 39 func NewJobServer(configService ConfigService, store store.Store) *JobServer { 40 return &JobServer{ 41 ConfigService: configService, 42 Store: store, 43 } 44 } 45 46 func (srv *JobServer) Config() *model.Config { 47 return srv.ConfigService.Config() 48 } 49 50 func (srv *JobServer) StartWorkers() { 51 srv.Workers = srv.InitWorkers().Start() 52 } 53 54 func (srv *JobServer) StartSchedulers() { 55 srv.Schedulers = srv.InitSchedulers().Start() 56 } 57 58 func (srv *JobServer) StopWorkers() { 59 if srv.Workers != nil { 60 srv.Workers.Stop() 61 } 62 } 63 64 func (srv *JobServer) StopSchedulers() { 65 if srv.Schedulers != nil { 66 srv.Schedulers.Stop() 67 } 68 }