feat(contracts): add published ports, snapshot request, and storage report types

This commit is contained in:
Harivansh Rathi 2026-04-09 14:05:59 +00:00
parent 501ae2abd5
commit 26b5d2966d
20 changed files with 893 additions and 81 deletions

49
main.go
View file

@ -2,6 +2,7 @@ package main
import (
"context"
"errors"
"fmt"
"net"
"net/http"
@ -10,6 +11,8 @@ import (
"path/filepath"
"syscall"
"golang.org/x/sync/errgroup"
appconfig "github.com/getcompanion-ai/computer-host/internal/config"
"github.com/getcompanion-ai/computer-host/internal/daemon"
"github.com/getcompanion-ai/computer-host/internal/firecracker"
@ -56,19 +59,49 @@ func main() {
exit(err)
}
listener, err := net.Listen("unix", cfg.SocketPath)
unixListener, err := net.Listen("unix", cfg.SocketPath)
if err != nil {
exit(err)
}
defer listener.Close()
server := &http.Server{Handler: handler.Routes()}
go func() {
<-ctx.Done()
_ = server.Shutdown(context.Background())
defer func() {
_ = unixListener.Close()
}()
if err := server.Serve(listener); err != nil && err != http.ErrServerClosed {
servers := []*http.Server{{Handler: handler.Routes()}}
listeners := []net.Listener{unixListener}
if cfg.HTTPAddr != "" {
httpListener, err := net.Listen("tcp", cfg.HTTPAddr)
if err != nil {
exit(err)
}
defer func() {
_ = httpListener.Close()
}()
servers = append(servers, &http.Server{Handler: handler.Routes()})
listeners = append(listeners, httpListener)
}
group, groupCtx := errgroup.WithContext(ctx)
for i := range servers {
server := servers[i]
listener := listeners[i]
group.Go(func() error {
err := server.Serve(listener)
if errors.Is(err, http.ErrServerClosed) {
return nil
}
return err
})
}
group.Go(func() error {
<-groupCtx.Done()
for _, server := range servers {
_ = server.Shutdown(context.Background())
}
return nil
})
if err := group.Wait(); err != nil {
exit(err)
}
}