77 lines
1.9 KiB
Go
77 lines
1.9 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"log"
|
|
|
|
"src.dualinventive.com/go/devsim"
|
|
"src.dualinventive.com/go/devsim/daemon"
|
|
"src.dualinventive.com/go/devsim/simulator"
|
|
)
|
|
|
|
type simulatorServer struct {
|
|
d *daemon.Daemon
|
|
}
|
|
|
|
func (s *simulatorServer) Create(ctx context.Context,
|
|
req *devsim.SimulatorCreateRequest) (*devsim.SimulatorCreateReply, error) {
|
|
log.Println("Create simulator", req)
|
|
ti, err := s.d.Simulator.Add(req.Uri, req.Version)
|
|
if err != nil {
|
|
return &devsim.SimulatorCreateReply{}, err
|
|
}
|
|
return &devsim.SimulatorCreateReply{DeviceUID: ti.DeviceUID()}, err
|
|
}
|
|
|
|
func (s *simulatorServer) Remove(ctx context.Context, req *devsim.SimulatorRequest) (*devsim.Empty, error) {
|
|
log.Println("Remove simulator", req)
|
|
err := s.d.Simulator.Remove(req.DeviceUID)
|
|
return &devsim.Empty{}, err
|
|
}
|
|
|
|
func (s *simulatorServer) Start(ctx context.Context, req *devsim.SimulatorRequest) (*devsim.Empty, error) {
|
|
log.Println("Start simulator", req)
|
|
err := s.d.Simulator.Start(req.DeviceUID)
|
|
return &devsim.Empty{}, err
|
|
}
|
|
|
|
func (s *simulatorServer) Stop(ctx context.Context, req *devsim.SimulatorRequest) (*devsim.Empty, error) {
|
|
log.Println("Stop simulator", req)
|
|
err := s.d.Simulator.Stop(req.DeviceUID)
|
|
return &devsim.Empty{}, err
|
|
}
|
|
|
|
func (s *simulatorServer) Info(req *devsim.SimulatorRequest, sif devsim.SimulatorService_InfoServer) error {
|
|
log.Println("Simulator info", req)
|
|
|
|
var simList []simulator.Simulator
|
|
|
|
if req.DeviceUID == "" {
|
|
simList = s.d.Simulator.List()
|
|
} else {
|
|
sim, err := s.d.Simulator.Get(req.DeviceUID)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
simList = append(simList, sim)
|
|
}
|
|
|
|
for _, sim := range simList {
|
|
si := &devsim.SimulatorInfo{
|
|
DeviceUID: sim.DeviceUID(),
|
|
Version: sim.Version(),
|
|
Name: sim.Name(),
|
|
Key: sim.Key(),
|
|
Author: sim.Author(),
|
|
}
|
|
|
|
err := sif.Send(si)
|
|
if err != nil {
|
|
log.Println(err)
|
|
return err
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|