package main

import "C"
import (
	"github.com/metacubex/mihomo/common/observable"
	"github.com/metacubex/mihomo/log"
)

var logSubscriber observable.Subscription[log.Event]

//export startLog
func startLog() {
	if logSubscriber != nil {
		log.UnSubscribe(logSubscriber)
		logSubscriber = nil
	}
	logSubscriber = log.Subscribe()
	go func() {
		for logData := range logSubscriber {
			if logData.LogLevel < log.Level() {
				continue
			}
			message := &Message{
				Type: LogMessage,
				Data: logData,
			}
			SendMessage(*message)
		}
	}()
}

//export stopLog
func stopLog() {
	if logSubscriber != nil {
		log.UnSubscribe(logSubscriber)
		logSubscriber = nil
	}
}