github.com/nhannv/mattermost-server@v5.11.1+incompatible/plugin/scheduler/scheduler.go (about)

     1  // Copyright (c) 2018-present Mattermost, Inc. All Rights Reserved.
     2  // See License.txt for license information.
     3  
     4  package scheduler
     5  
     6  import (
     7  	"time"
     8  
     9  	"github.com/mattermost/mattermost-server/app"
    10  	"github.com/mattermost/mattermost-server/mlog"
    11  	"github.com/mattermost/mattermost-server/model"
    12  )
    13  
    14  type Scheduler struct {
    15  	App *app.App
    16  }
    17  
    18  func (m *PluginsJobInterfaceImpl) MakeScheduler() model.Scheduler {
    19  	return &Scheduler{m.App}
    20  }
    21  
    22  func (scheduler *Scheduler) Name() string {
    23  	return "PluginsScheduler"
    24  }
    25  
    26  func (scheduler *Scheduler) JobType() string {
    27  	return model.JOB_TYPE_PLUGINS
    28  }
    29  
    30  func (scheduler *Scheduler) Enabled(cfg *model.Config) bool {
    31  	return true
    32  }
    33  
    34  func (scheduler *Scheduler) NextScheduleTime(cfg *model.Config, now time.Time, pendingJobs bool, lastSuccessfulJob *model.Job) *time.Time {
    35  	nextTime := time.Now().Add(60 * time.Second)
    36  	return &nextTime
    37  }
    38  
    39  func (scheduler *Scheduler) ScheduleJob(cfg *model.Config, pendingJobs bool, lastSuccessfulJob *model.Job) (*model.Job, *model.AppError) {
    40  	mlog.Debug("Scheduling Job", mlog.String("scheduler", scheduler.Name()))
    41  
    42  	if job, err := scheduler.App.Srv.Jobs.CreateJob(model.JOB_TYPE_PLUGINS, nil); err != nil {
    43  		return nil, err
    44  	} else {
    45  		return job, nil
    46  	}
    47  }