start unix domain socket server. fix a couple small bugs

This commit is contained in:
sawka 2024-07-09 14:31:16 -07:00
parent fa3a670603
commit be392ee755
4 changed files with 29 additions and 3 deletions

View File

@ -7,6 +7,7 @@ import (
"context"
"fmt"
"log"
"net"
"os"
"os/signal"
"strconv"
@ -123,6 +124,16 @@ func main() {
webListener, err := web.MakeTCPListener()
if err != nil {
log.Printf("error creating web listener: %v\n", err)
return
}
var unixListener net.Listener
if runtime.GOOS != "windows" {
var err error
unixListener, err = web.MakeUnixListener()
if err != nil {
log.Printf("error creating unix listener: %v\n", err)
return
}
}
go func() {
pidStr := os.Getenv(ReadySignalPidVarName)
@ -134,6 +145,7 @@ func main() {
}
}
}()
go web.RunWebServer(unixListener)
web.RunWebServer(webListener) // blocking
runtime.KeepAlive(waveLock)
}

View File

@ -90,8 +90,9 @@ function switchTab(offset: number) {
if (tabIdx == -1) {
return;
}
tabIdx = (tabIdx + offset) % ws.tabids.length;
const newActiveTabId = ws.tabids[tabIdx];
const newTabIdx = (tabIdx + offset + ws.tabids.length) % ws.tabids.length;
const newActiveTabId = ws.tabids[newTabIdx];
console.log("switching tabs", tabIdx, newTabIdx, activeTabId, newActiveTabId, ws.tabids);
services.ObjectService.SetActiveTab(newActiveTabId);
}

View File

@ -205,7 +205,7 @@ func convertSpecialForReturn(argType reflect.Type, nativeArg any) (any, error) {
func convertArgument(argType reflect.Type, jsonArg any) (any, error) {
if jsonArg == nil {
return nil, nil
return reflect.Zero(argType).Interface(), nil
}
if isSpecialWaveArgType(argType) {
return convertSpecial(argType, jsonArg)

View File

@ -12,6 +12,7 @@ import (
"log"
"net"
"net/http"
"os"
"runtime/debug"
"strconv"
"time"
@ -225,6 +226,18 @@ func MakeTCPListener() (net.Listener, error) {
return rtn, nil
}
func MakeUnixListener() (net.Listener, error) {
serverAddr := wavebase.GetWaveHomeDir() + "/wave.sock"
os.Remove(serverAddr) // ignore error
rtn, err := net.Listen("unix", serverAddr)
if err != nil {
return nil, fmt.Errorf("error creating listener at %v: %v", serverAddr, err)
}
os.Chmod(serverAddr, 0700)
log.Printf("Server listening on %s\n", serverAddr)
return rtn, nil
}
// blocking
func RunWebServer(listener net.Listener) {
gr := mux.NewRouter()