filed

Job queue using FUSE

git clone git://mccd.space/filed

config.go (1125B)

      1 package store
      2 
      3 type Config struct {
      4 	MaxAttempts int `json:"max_attempts"`
      5 	TimeoutSec  int `json:"timeout_sec"`
      6 	// Max amount of concurrent jobs
      7 	MaxJobCount int `json:"max_job_count"`
      8 	BackoffMult int `json:"backoff_mult"`
      9 	BackoffBase int `json:"backoff_base"`
     10 }
     11 
     12 func (st *Store) UpdateConfig(conf Config) error {
     13 	query := `
     14 		UPDATE config
     15 		SET max_attempts = ?, timeout_sec = ?, max_job_count = ?, backoff_mult = ?, backoff_base = ?
     16 		WHERE id = 0
     17 		`
     18 	_, err := st.db.Exec(query, conf.MaxAttempts, conf.TimeoutSec, conf.MaxJobCount, conf.BackoffMult, conf.BackoffBase)
     19 	st.mu.Lock()
     20 	st.config = conf
     21 	st.mu.Unlock()
     22 	return err
     23 }
     24 
     25 func (st *Store) PopulateConfig() {
     26 	conf := Config{}
     27 	query := `SELECT max_attempts, timeout_sec, max_job_count, backoff_mult, backoff_base FROM config WHERE id = 0`
     28 	err := st.db.QueryRow(query).Scan(&conf.MaxAttempts, &conf.TimeoutSec, &conf.MaxJobCount, &conf.BackoffMult, &conf.BackoffBase)
     29 	if err != nil {
     30 		panic(err)
     31 	}
     32 	st.mu.Lock()
     33 	st.config = conf
     34 	st.mu.Unlock()
     35 }
     36 
     37 func (st *Store) GetConfig() (conf Config) {
     38 	st.mu.RLock()
     39 	defer st.mu.RUnlock()
     40 	return st.config
     41 }