47 lines
892 B
Go
47 lines
892 B
Go
package triggers
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/k4lipso/gokill/internal"
|
|
)
|
|
|
|
type Trigger interface {
|
|
Listen()
|
|
Create(internal.KillSwitchConfig) (Trigger, error)
|
|
}
|
|
|
|
type DocumentedTrigger interface {
|
|
internal.Documenter
|
|
Trigger
|
|
}
|
|
|
|
func NewTrigger(config internal.KillSwitchConfig) (Trigger, error) {
|
|
for _, availableTrigger := range GetAllTriggers() {
|
|
if config.Type == availableTrigger.GetName() {
|
|
return availableTrigger.Create(config)
|
|
}
|
|
}
|
|
|
|
return nil, fmt.Errorf("Error parsing config: Trigger with type %s does not exists", config.Type)
|
|
}
|
|
|
|
func GetAllTriggers() []DocumentedTrigger {
|
|
return []DocumentedTrigger{
|
|
EthernetDisconnect{},
|
|
ReceiveTelegram{},
|
|
TimeOut{},
|
|
UsbDisconnect{},
|
|
}
|
|
}
|
|
|
|
func GetDocumenters() []internal.Documenter {
|
|
var result []internal.Documenter
|
|
|
|
for _, action := range GetAllTriggers() {
|
|
result = append(result, action)
|
|
}
|
|
|
|
return result
|
|
}
|