package queue

import (
	"fmt"
	"os"
	"os/signal"
	"syscall"

	"github.com/wind-c/comqtt/v2/cluster/log"
)

var MainQueue Queue

func Init() {
	queue, err := NewQueue(os.Getenv("QUEUE_STATE_FOLDER") + "/main.json")
	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
	go func() {
		<-exitChan
		fmt.Println("\nSaving main queue state before exiting...")
		fmt.Println("\nCurrent queue size: ", MainQueue.GetCurrentSize())
		if err := MainQueue.Save(); err != nil {
			fmt.Println("Error saving main queue state:", err)
		} else {
			fmt.Println("Main queue state saved successfully.")
		}
		os.Exit(0)
	}()
}