[service] Add utility module to manage services
This commit is contained in:
parent
e35d6f1381
commit
47d48c39b0
@ -3,6 +3,7 @@ package cli
|
|||||||
import (
|
import (
|
||||||
"flag"
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"github.com/cyrilix/robocar-base/service"
|
||||||
MQTT "github.com/eclipse/paho.mqtt.golang"
|
MQTT "github.com/eclipse/paho.mqtt.golang"
|
||||||
"log"
|
"log"
|
||||||
"os"
|
"os"
|
||||||
@ -49,12 +50,7 @@ func SetFloat64DefaultValueFromEnv(value *float64, key string, defaultValue floa
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
type Part interface {
|
func HandleExit(p service.Part) {
|
||||||
Start() error
|
|
||||||
Stop()
|
|
||||||
}
|
|
||||||
|
|
||||||
func HandleExit(p Part) {
|
|
||||||
signals := make(chan os.Signal, 1)
|
signals := make(chan os.Signal, 1)
|
||||||
signal.Notify(signals, os.Kill, os.Interrupt, syscall.SIGTERM)
|
signal.Notify(signals, os.Kill, os.Interrupt, syscall.SIGTERM)
|
||||||
|
|
||||||
|
33
service/part.go
Normal file
33
service/part.go
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
package service
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
mqtt "github.com/eclipse/paho.mqtt.golang"
|
||||||
|
"log"
|
||||||
|
)
|
||||||
|
|
||||||
|
func StopService(name string, client mqtt.Client, topics ...string) {
|
||||||
|
log.Printf("Stop %s service", name)
|
||||||
|
token := client.Unsubscribe(topics...)
|
||||||
|
token.Wait()
|
||||||
|
if token.Error() != nil {
|
||||||
|
log.Printf("unable to unsubscribe service: %v", token.Error())
|
||||||
|
}
|
||||||
|
client.Disconnect(50)
|
||||||
|
}
|
||||||
|
|
||||||
|
func RegisterCallback(client mqtt.Client, topic string, callback mqtt.MessageHandler) error {
|
||||||
|
log.Printf("Register callback on topic %v", topic)
|
||||||
|
token := client.Subscribe(topic, 0, callback)
|
||||||
|
token.Wait()
|
||||||
|
if token.Error() != nil {
|
||||||
|
return fmt.Errorf("unable to register callback on topic %s: %v", topic, token.Error())
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type Part interface {
|
||||||
|
Start() error
|
||||||
|
Stop()
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user