// SPDX-FileCopyrightText: V // SPDX-FileCopyrightText: edef // SPDX-License-Identifier: OSL-3.0 package main import ( "fmt" "net" "github.com/coreos/go-systemd/v22/activation" ) type listenAddress string func (a listenAddress) Listeners() ([]net.Listener, error) { ln, err := net.Listen("tcp", string(a)) if err != nil { return nil, err } return []net.Listener{ln}, nil } func (a listenAddress) Get() interface{} { return string(a) } func (a *listenAddress) Set(v string) error { *a = listenAddress(v) return nil } func (a listenAddress) String() string { return string(a) } type activationSocket struct{} func (activationSocket) Listeners() (lns []net.Listener, err error) { files := activation.Files(true) lns = make([]net.Listener, len(files)) for i, f := range files { lns[i], err = net.FileListener(f) if err != nil { return nil, err } f.Close() } return } func (activationSocket) String() string { return "activation socket" } func (activationSocket) Set(string) error { return fmt.Errorf("incompatible with socket activation") }