vorteil/direktiv

View on GitHub
cmd/sidecar/main.go

Summary

Maintainability
A
0 mins
Test Coverage
package sidecar

import (
    "fmt"
    "log/slog"
    "os"
    "time"

    "github.com/direktiv/direktiv/pkg/utils"
)

const (
    direktivFlowEndpoint  = "DIREKTIV_FLOW_ENDPOINT"
    direktivOpentelemetry = "DIREKTIV_OTLP"
)

func RunApplication() {
    var err error

    sl := new(SignalListener)
    sl.Start()

    fmt.Printf("listener started\n")

    openTelemetryBackend := os.Getenv(direktivOpentelemetry)

    telend, err := utils.InitTelemetry(openTelemetryBackend, "direktiv/sidecar", "direktiv")
    if err != nil {
        fmt.Fprintf(os.Stderr, "failed to initialize telemetry: %v\n", err)
        os.Exit(1)
    }
    defer telend()

    local := new(LocalServer)
    local.Start()
    fmt.Printf("local started\n")

    network := new(NetworkServer)
    network.local = local
    network.Start()
    fmt.Printf("network started\n")

    threads.Wait()

    if code := threads.ExitStatus(); code != 0 {
        slog.Error("Exiting with exit.", "status_code", code)
        os.Exit(code)
    }
}

const (
    SUCCESS = 0
    ERROR   = 1
)

func Shutdown(code int) {
    t := time.Now().UTC()
    threads.Stop(&t, code)
}

func ForceQuit() {
    slog.Warn("Performing force-quit.")
    os.Exit(1)
}