timetable-extension #1
							
								
								
									
										30
									
								
								src/background/ticker.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								src/background/ticker.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,30 @@
 | 
			
		||||
package background
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"git.fjla.uk/owlboard/timetable-mgr/cif"
 | 
			
		||||
	"git.fjla.uk/owlboard/timetable-mgr/helpers"
 | 
			
		||||
	"git.fjla.uk/owlboard/timetable-mgr/log"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
const frequency = 5 * time.Millisecond // Figure out a sensible frequency!
 | 
			
		||||
 | 
			
		||||
func InitTicker(cfg *helpers.Configuration, stop <-chan struct{}) {
 | 
			
		||||
	go runTicker(cfg, stop)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func runTicker(cfg *helpers.Configuration, stop <-chan struct{}) {
 | 
			
		||||
	log.Msg.Sugar().Infof("Starting background ticker, runs every %s", frequency)
 | 
			
		||||
	ticker := time.NewTicker(frequency)
 | 
			
		||||
	defer ticker.Stop()
 | 
			
		||||
 | 
			
		||||
	for {
 | 
			
		||||
		select {
 | 
			
		||||
		case <-stop:
 | 
			
		||||
			return
 | 
			
		||||
		case <-ticker.C:
 | 
			
		||||
			cif.CifCheck(cfg)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
@ -1,27 +0,0 @@
 | 
			
		||||
package cif
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"git.fjla.uk/owlboard/timetable-mgr/helpers"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// Start a background task to periodically check and update the timetable from the CIF file feed.
 | 
			
		||||
 | 
			
		||||
func InitBackgroundTask(cfg *helpers.Configuration, stop <-chan struct{}) {
 | 
			
		||||
	go runBackgroundTask(cfg, stop)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func runBackgroundTask(cfg *helpers.Configuration, stop <-chan struct{}) {
 | 
			
		||||
	ticker := time.NewTicker(10 * time.Second)
 | 
			
		||||
	defer ticker.Stop()
 | 
			
		||||
 | 
			
		||||
	for {
 | 
			
		||||
		select {
 | 
			
		||||
		case <-stop:
 | 
			
		||||
			return
 | 
			
		||||
		case <-ticker.C:
 | 
			
		||||
			cifCheck(cfg)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
@ -8,7 +8,7 @@ import (
 | 
			
		||||
	"git.fjla.uk/owlboard/timetable-mgr/log"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func cifCheck(cfg *helpers.Configuration) {
 | 
			
		||||
func CifCheck(cfg *helpers.Configuration) {
 | 
			
		||||
	log.Msg.Debug("CIF Task Started")
 | 
			
		||||
	numGoroutines := runtime.NumGoroutine()
 | 
			
		||||
	fmt.Println("Number of goroutines running: ", numGoroutines)
 | 
			
		||||
 | 
			
		||||
@ -7,7 +7,7 @@ import (
 | 
			
		||||
	"syscall"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"git.fjla.uk/owlboard/timetable-mgr/cif"
 | 
			
		||||
	"git.fjla.uk/owlboard/timetable-mgr/background"
 | 
			
		||||
	"git.fjla.uk/owlboard/timetable-mgr/dbAccess"
 | 
			
		||||
	"git.fjla.uk/owlboard/timetable-mgr/helpers"
 | 
			
		||||
	"git.fjla.uk/owlboard/timetable-mgr/log"
 | 
			
		||||
@ -39,7 +39,7 @@ func main() {
 | 
			
		||||
	//defer cleanup(cfg, stop)
 | 
			
		||||
 | 
			
		||||
	// Start CIF Task Ticker
 | 
			
		||||
	cif.InitBackgroundTask(cfg, stop)
 | 
			
		||||
	background.InitTicker(cfg, stop)
 | 
			
		||||
 | 
			
		||||
	if cfg.VstpOn {
 | 
			
		||||
		messaging.StompInit(cfg)
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user