Skip to content
Snippets Groups Projects
main.go 785 B
Newer Older
  • Learn to ignore specific revisions
  • Jonas Leder's avatar
    Jonas Leder committed
    package queue
    
    import (
    	"fmt"
    	"os"
    	"os/signal"
    	"syscall"
    
    	"github.com/wind-c/comqtt/v2/cluster/log"
    )
    
    var MainQueue Queue
    
    func Init() {
    
    Jonas Leder's avatar
    Jonas Leder committed
    	queue, err := NewQueue(os.Getenv("QUEUE_STATE_FOLDER") + "/main.json")
    
    Jonas Leder's avatar
    Jonas Leder committed
    	if err != nil {
    		log.Fatal("Error initializing main queue:", err)
    	}
    
    	// Set up signal handling for clean exit
    	exitChan := make(chan os.Signal, 1)
    	signal.Notify(exitChan, os.Interrupt, syscall.SIGTERM)
    
    
    	MainQueue = *queue
    
    Jonas Leder's avatar
    Jonas Leder committed
    	go func() {
    		<-exitChan
    		fmt.Println("\nSaving main queue state before exiting...")
    
    		fmt.Println("\nCurrent queue size: ", MainQueue.GetCurrentSize())
    		if err := MainQueue.Save(); err != nil {
    
    Jonas Leder's avatar
    Jonas Leder committed
    			fmt.Println("Error saving main queue state:", err)
    		} else {
    			fmt.Println("Main queue state saved successfully.")
    		}
    		os.Exit(0)
    	}()
    }