Refine Go runtime behavior and log handling
Some checks failed
build-windows-exe / build (push) Failing after 48s

This commit is contained in:
every_holiday
2026-06-24 01:53:24 +09:00
parent b34c2fafb4
commit 72aa10de46
10 changed files with 891 additions and 3 deletions

View File

@@ -1,16 +1,25 @@
package app
import (
"fmt"
"log"
"os"
"os/signal"
"sync"
"syscall"
"time"
"vrc_osc_go/internal/config"
"vrc_osc_go/internal/consenttool"
"vrc_osc_go/internal/osc"
)
type discordMuteState struct {
mu sync.Mutex
muted bool
buttonPressed bool
lastAction time.Time
}
func Run(configPath string, mode string) error {
if mode != "" {
return consenttool.Run(configPath, mode)
@@ -20,21 +29,43 @@ func Run(configPath string, mode string) error {
if err != nil {
return err
}
log.Printf("vrc_osc_go starting osc=%s:%d config=%s", cfg.OSC.Host, cfg.OSC.Port, configPath)
server := osc.NewServer(cfg.OSC.Host, cfg.OSC.Port)
discordState := &discordMuteState{muted: true}
server.Map("DiscordSend", func(_ string, args []osc.Value) error {
return fmt.Errorf("discord mute not implemented yet")
log.Printf("received DiscordSend args=%+v", args)
if err := handleDiscordSend(discordState, args); err != nil {
log.Printf("discord mute failed: %v", err)
return err
}
return nil
})
server.Map("ocrEnabled", func(_ string, args []osc.Value) error {
log.Printf("received ocrEnabled args=%+v", args)
if err := runPythonOcrFromScreen(); err != nil {
log.Printf("ocr failed: %v", err)
return err
}
return nil
})
errCh := make(chan error, 1)
go func() { errCh <- server.Serve() }()
go func() {
log.Printf("osc server listening on %s:%d", cfg.OSC.Host, cfg.OSC.Port)
errCh <- server.Serve()
}()
go watchVrchatLog()
startSelfMonitor(cfg, discordState)
sigCh := make(chan os.Signal, 1)
signal.Notify(sigCh, os.Interrupt, syscall.SIGTERM)
select {
case err := <-errCh:
log.Printf("osc server stopped: %v", err)
return err
case <-sigCh:
log.Printf("shutdown signal received")
server.Close()
return nil
}