12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- // Code generated by "go.opentelemetry.io/collector/cmd/builder". DO NOT EDIT.
- //go:build windows
- // +build windows
- package main
- import (
- "fmt"
- "os"
- "go.opentelemetry.io/collector/otelcol"
- "golang.org/x/sys/windows/svc"
- )
- func run(params otelcol.CollectorSettings) error {
- if useInteractiveMode, err := checkUseInteractiveMode(); err != nil {
- return err
- } else if useInteractiveMode {
- return runInteractive(params)
- } else {
- return runService(params)
- }
- }
- func checkUseInteractiveMode() (bool, error) {
- // If environment variable NO_WINDOWS_SERVICE is set with any value other
- // than 0, use interactive mode instead of running as a service. This should
- // be set in case running as a service is not possible or desired even
- // though the current session is not detected to be interactive
- if value, present := os.LookupEnv("NO_WINDOWS_SERVICE"); present && value != "0" {
- return true, nil
- }
- isInteractiveSession, err := svc.IsAnInteractiveSession()
- if err != nil {
- return false, fmt.Errorf("failed to determine if we are running in an interactive session: %w", err)
- }
- return isInteractiveSession, nil
- }
- func runService(params otelcol.CollectorSettings) error {
- // do not need to supply service name when startup is invoked through Service Control Manager directly
- if err := svc.Run("", otelcol.NewSvcHandler(params)); err != nil {
- return fmt.Errorf("failed to start collector server: %w", err)
- }
- return nil
- }
|