Simplify - remove duplicate command types in favor of a better defined Command type in proto
This commit is contained in:
parent
7d780d05bd
commit
96a137ad2f
9 changed files with 370 additions and 471 deletions
|
@ -79,18 +79,36 @@ func (s *Server) Status(ctx context.Context, req *rove.StatusRequest) (response
|
||||||
i, q := s.world.RoverCommands(resp)
|
i, q := s.world.RoverCommands(resp)
|
||||||
var incoming, queued []*rove.Command
|
var incoming, queued []*rove.Command
|
||||||
for _, i := range i {
|
for _, i := range i {
|
||||||
incoming = append(incoming, &rove.Command{
|
c := &rove.Command{
|
||||||
Command: i.Command,
|
Command: i.Command,
|
||||||
|
}
|
||||||
|
switch i.Command {
|
||||||
|
case rove.CommandType_move:
|
||||||
|
c.Data = &rove.Command_Bearing{
|
||||||
Bearing: i.Bearing,
|
Bearing: i.Bearing,
|
||||||
|
}
|
||||||
|
case rove.CommandType_broadcast:
|
||||||
|
c.Data = &rove.Command_Message{
|
||||||
Message: i.Message,
|
Message: i.Message,
|
||||||
})
|
}
|
||||||
|
}
|
||||||
|
incoming = append(incoming, c)
|
||||||
}
|
}
|
||||||
for _, q := range q {
|
for _, q := range q {
|
||||||
queued = append(queued, &rove.Command{
|
c := &rove.Command{
|
||||||
Command: q.Command,
|
Command: q.Command,
|
||||||
|
}
|
||||||
|
switch q.Command {
|
||||||
|
case rove.CommandType_move:
|
||||||
|
c.Data = &rove.Command_Bearing{
|
||||||
Bearing: q.Bearing,
|
Bearing: q.Bearing,
|
||||||
|
}
|
||||||
|
case rove.CommandType_broadcast:
|
||||||
|
c.Data = &rove.Command_Message{
|
||||||
Message: q.Message,
|
Message: q.Message,
|
||||||
})
|
}
|
||||||
|
}
|
||||||
|
queued = append(queued, c)
|
||||||
}
|
}
|
||||||
var logs []*rove.Log
|
var logs []*rove.Log
|
||||||
for _, log := range rover.Logs {
|
for _, log := range rover.Logs {
|
||||||
|
@ -171,9 +189,16 @@ func (s *Server) Command(ctx context.Context, req *rove.CommandRequest) (*rove.C
|
||||||
|
|
||||||
var cmds []game.Command
|
var cmds []game.Command
|
||||||
for _, c := range req.Commands {
|
for _, c := range req.Commands {
|
||||||
cmds = append(cmds, game.Command{
|
n := game.Command{
|
||||||
Bearing: c.Bearing,
|
Command: c.Command,
|
||||||
Command: c.Command})
|
}
|
||||||
|
switch c.Command {
|
||||||
|
case rove.CommandType_move:
|
||||||
|
n.Bearing = c.GetBearing()
|
||||||
|
case rove.CommandType_broadcast:
|
||||||
|
n.Message = c.GetMessage()
|
||||||
|
}
|
||||||
|
cmds = append(cmds, n)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := s.world.Enqueue(resp, cmds...); err != nil {
|
if err := s.world.Enqueue(resp, cmds...); err != nil {
|
||||||
|
|
|
@ -12,7 +12,6 @@ import (
|
||||||
|
|
||||||
"github.com/mdiluz/rove/pkg/atlas"
|
"github.com/mdiluz/rove/pkg/atlas"
|
||||||
"github.com/mdiluz/rove/pkg/bearing"
|
"github.com/mdiluz/rove/pkg/bearing"
|
||||||
"github.com/mdiluz/rove/pkg/game"
|
|
||||||
"github.com/mdiluz/rove/pkg/objects"
|
"github.com/mdiluz/rove/pkg/objects"
|
||||||
"github.com/mdiluz/rove/pkg/rove"
|
"github.com/mdiluz/rove/pkg/rove"
|
||||||
"github.com/mdiluz/rove/pkg/version"
|
"github.com/mdiluz/rove/pkg/version"
|
||||||
|
@ -222,8 +221,8 @@ func InnerMain(command string, args ...string) error {
|
||||||
}
|
}
|
||||||
commands = append(commands,
|
commands = append(commands,
|
||||||
&rove.Command{
|
&rove.Command{
|
||||||
Command: game.CommandMove,
|
Command: rove.CommandType_move,
|
||||||
Bearing: args[i],
|
Data: &rove.Command_Bearing{Bearing: args[i]},
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
case "broadcast":
|
case "broadcast":
|
||||||
|
@ -235,15 +234,15 @@ func InnerMain(command string, args ...string) error {
|
||||||
}
|
}
|
||||||
commands = append(commands,
|
commands = append(commands,
|
||||||
&rove.Command{
|
&rove.Command{
|
||||||
Command: game.CommandBroadcast,
|
Command: rove.CommandType_broadcast,
|
||||||
Message: []byte(args[i]),
|
Data: &rove.Command_Message{Message: []byte(args[i])},
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
default:
|
default:
|
||||||
// By default just use the command literally
|
// By default just use the command literally
|
||||||
commands = append(commands,
|
commands = append(commands,
|
||||||
&rove.Command{
|
&rove.Command{
|
||||||
Command: args[i],
|
Command: rove.CommandType(rove.CommandType_value[args[i]]),
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,25 +1,10 @@
|
||||||
package game
|
package game
|
||||||
|
|
||||||
const (
|
import "github.com/mdiluz/rove/pkg/rove"
|
||||||
// CommandMove Moves the rover in the chosen bearing
|
|
||||||
CommandMove = "move"
|
|
||||||
|
|
||||||
// CommandStash Will attempt to stash the object at the current location
|
|
||||||
CommandStash = "stash"
|
|
||||||
|
|
||||||
// CommandRepair Will attempt to repair the rover with an inventory object
|
|
||||||
CommandRepair = "repair"
|
|
||||||
|
|
||||||
// CommandRecharge Will use one tick to charge the rover
|
|
||||||
CommandRecharge = "recharge"
|
|
||||||
|
|
||||||
// CommandBroadcast will broadcast a message to nearby rovers within range
|
|
||||||
CommandBroadcast = "broadcast"
|
|
||||||
)
|
|
||||||
|
|
||||||
// Command represends a single command to execute
|
// Command represends a single command to execute
|
||||||
type Command struct {
|
type Command struct {
|
||||||
Command string `json:"command"`
|
Command rove.CommandType `json:"command"`
|
||||||
|
|
||||||
// Used in the move command
|
// Used in the move command
|
||||||
Bearing string `json:"bearing,omitempty"`
|
Bearing string `json:"bearing,omitempty"`
|
||||||
|
|
|
@ -3,6 +3,7 @@ package game
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/mdiluz/rove/pkg/rove"
|
||||||
"github.com/mdiluz/rove/pkg/vector"
|
"github.com/mdiluz/rove/pkg/vector"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
)
|
)
|
||||||
|
@ -20,7 +21,7 @@ func TestCommand_Move(t *testing.T) {
|
||||||
assert.NoError(t, err, "Failed to set position for rover")
|
assert.NoError(t, err, "Failed to set position for rover")
|
||||||
|
|
||||||
// Try the move command
|
// Try the move command
|
||||||
moveCommand := Command{Command: CommandMove, Bearing: "N"}
|
moveCommand := Command{Command: rove.CommandType_move, Bearing: "N"}
|
||||||
assert.NoError(t, world.Enqueue(a, moveCommand), "Failed to execute move command")
|
assert.NoError(t, world.Enqueue(a, moveCommand), "Failed to execute move command")
|
||||||
|
|
||||||
// Tick the world
|
// Tick the world
|
||||||
|
@ -46,7 +47,7 @@ func TestCommand_Recharge(t *testing.T) {
|
||||||
assert.NoError(t, err, "Failed to set position for rover")
|
assert.NoError(t, err, "Failed to set position for rover")
|
||||||
|
|
||||||
// Move to use up some charge
|
// Move to use up some charge
|
||||||
moveCommand := Command{Command: CommandMove, Bearing: "N"}
|
moveCommand := Command{Command: rove.CommandType_move, Bearing: "N"}
|
||||||
assert.NoError(t, world.Enqueue(a, moveCommand), "Failed to queue move command")
|
assert.NoError(t, world.Enqueue(a, moveCommand), "Failed to queue move command")
|
||||||
|
|
||||||
// Tick the world
|
// Tick the world
|
||||||
|
@ -56,7 +57,7 @@ func TestCommand_Recharge(t *testing.T) {
|
||||||
rover, _ := world.GetRover(a)
|
rover, _ := world.GetRover(a)
|
||||||
assert.Equal(t, rover.MaximumCharge-1, rover.Charge)
|
assert.Equal(t, rover.MaximumCharge-1, rover.Charge)
|
||||||
|
|
||||||
chargeCommand := Command{Command: CommandRecharge}
|
chargeCommand := Command{Command: rove.CommandType_recharge}
|
||||||
assert.NoError(t, world.Enqueue(a, chargeCommand), "Failed to queue recharge command")
|
assert.NoError(t, world.Enqueue(a, chargeCommand), "Failed to queue recharge command")
|
||||||
|
|
||||||
// Tick the world
|
// Tick the world
|
||||||
|
|
|
@ -12,6 +12,7 @@ import (
|
||||||
"github.com/mdiluz/rove/pkg/atlas"
|
"github.com/mdiluz/rove/pkg/atlas"
|
||||||
"github.com/mdiluz/rove/pkg/bearing"
|
"github.com/mdiluz/rove/pkg/bearing"
|
||||||
"github.com/mdiluz/rove/pkg/objects"
|
"github.com/mdiluz/rove/pkg/objects"
|
||||||
|
"github.com/mdiluz/rove/pkg/rove"
|
||||||
"github.com/mdiluz/rove/pkg/vector"
|
"github.com/mdiluz/rove/pkg/vector"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -429,11 +430,11 @@ func (w *World) Enqueue(rover string, commands ...Command) error {
|
||||||
// First validate the commands
|
// First validate the commands
|
||||||
for _, c := range commands {
|
for _, c := range commands {
|
||||||
switch c.Command {
|
switch c.Command {
|
||||||
case CommandMove:
|
case rove.CommandType_move:
|
||||||
if _, err := bearing.FromString(c.Bearing); err != nil {
|
if _, err := bearing.FromString(c.Bearing); err != nil {
|
||||||
return fmt.Errorf("unknown bearing: %s", c.Bearing)
|
return fmt.Errorf("unknown bearing: %s", c.Bearing)
|
||||||
}
|
}
|
||||||
case CommandBroadcast:
|
case rove.CommandType_broadcast:
|
||||||
if len(c.Message) > 3 {
|
if len(c.Message) > 3 {
|
||||||
return fmt.Errorf("too many characters in message (limit 3): %d", len(c.Message))
|
return fmt.Errorf("too many characters in message (limit 3): %d", len(c.Message))
|
||||||
}
|
}
|
||||||
|
@ -442,9 +443,9 @@ func (w *World) Enqueue(rover string, commands ...Command) error {
|
||||||
return fmt.Errorf("invalid message character: %c", b)
|
return fmt.Errorf("invalid message character: %c", b)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case CommandStash:
|
case rove.CommandType_stash:
|
||||||
case CommandRepair:
|
case rove.CommandType_repair:
|
||||||
case CommandRecharge:
|
case rove.CommandType_recharge:
|
||||||
// Nothing to verify
|
// Nothing to verify
|
||||||
default:
|
default:
|
||||||
return fmt.Errorf("unknown command: %s", c.Command)
|
return fmt.Errorf("unknown command: %s", c.Command)
|
||||||
|
@ -508,19 +509,19 @@ func (w *World) ExecuteCommand(c *Command, rover string) (err error) {
|
||||||
log.Printf("Executing command: %+v for %s\n", *c, rover)
|
log.Printf("Executing command: %+v for %s\n", *c, rover)
|
||||||
|
|
||||||
switch c.Command {
|
switch c.Command {
|
||||||
case CommandMove:
|
case rove.CommandType_move:
|
||||||
if dir, err := bearing.FromString(c.Bearing); err != nil {
|
if dir, err := bearing.FromString(c.Bearing); err != nil {
|
||||||
return err
|
return err
|
||||||
} else if _, err := w.MoveRover(rover, dir); err != nil {
|
} else if _, err := w.MoveRover(rover, dir); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
case CommandStash:
|
case rove.CommandType_stash:
|
||||||
if _, err := w.RoverStash(rover); err != nil {
|
if _, err := w.RoverStash(rover); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
case CommandRepair:
|
case rove.CommandType_repair:
|
||||||
r, err := w.GetRover(rover)
|
r, err := w.GetRover(rover)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -532,12 +533,12 @@ func (w *World) ExecuteCommand(c *Command, rover string) (err error) {
|
||||||
r.AddLogEntryf("repaired self to %d", r.Integrity)
|
r.AddLogEntryf("repaired self to %d", r.Integrity)
|
||||||
w.Rovers[rover] = r
|
w.Rovers[rover] = r
|
||||||
}
|
}
|
||||||
case CommandRecharge:
|
case rove.CommandType_recharge:
|
||||||
_, err := w.RoverRecharge(rover)
|
_, err := w.RoverRecharge(rover)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
case CommandBroadcast:
|
case rove.CommandType_broadcast:
|
||||||
if err := w.RoverBroadcast(rover, c.Message); err != nil {
|
if err := w.RoverBroadcast(rover, c.Message); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,7 @@ import (
|
||||||
"github.com/mdiluz/rove/pkg/atlas"
|
"github.com/mdiluz/rove/pkg/atlas"
|
||||||
"github.com/mdiluz/rove/pkg/bearing"
|
"github.com/mdiluz/rove/pkg/bearing"
|
||||||
"github.com/mdiluz/rove/pkg/objects"
|
"github.com/mdiluz/rove/pkg/objects"
|
||||||
|
"github.com/mdiluz/rove/pkg/rove"
|
||||||
"github.com/mdiluz/rove/pkg/vector"
|
"github.com/mdiluz/rove/pkg/vector"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
)
|
)
|
||||||
|
@ -272,7 +273,7 @@ func TestWorld_RoverRepair(t *testing.T) {
|
||||||
assert.NoError(t, err, "couldn't get rover info")
|
assert.NoError(t, err, "couldn't get rover info")
|
||||||
assert.Equal(t, originalInfo.Integrity-1, newinfo.Integrity, "rover should have lost integrity")
|
assert.Equal(t, originalInfo.Integrity-1, newinfo.Integrity, "rover should have lost integrity")
|
||||||
|
|
||||||
err = world.ExecuteCommand(&Command{Command: CommandRepair}, a)
|
err = world.ExecuteCommand(&Command{Command: rove.CommandType_repair}, a)
|
||||||
assert.NoError(t, err, "Failed to repair rover")
|
assert.NoError(t, err, "Failed to repair rover")
|
||||||
|
|
||||||
newinfo, err = world.GetRover(a)
|
newinfo, err = world.GetRover(a)
|
||||||
|
@ -286,7 +287,7 @@ func TestWorld_RoverRepair(t *testing.T) {
|
||||||
assert.NoError(t, err, "Failed to stash")
|
assert.NoError(t, err, "Failed to stash")
|
||||||
assert.Equal(t, objects.SmallRock, o, "Failed to get correct object")
|
assert.Equal(t, objects.SmallRock, o, "Failed to get correct object")
|
||||||
|
|
||||||
err = world.ExecuteCommand(&Command{Command: CommandRepair}, a)
|
err = world.ExecuteCommand(&Command{Command: rove.CommandType_repair}, a)
|
||||||
assert.NoError(t, err, "Failed to repair rover")
|
assert.NoError(t, err, "Failed to repair rover")
|
||||||
|
|
||||||
newinfo, err = world.GetRover(a)
|
newinfo, err = world.GetRover(a)
|
||||||
|
|
|
@ -13,7 +13,6 @@ package rove
|
||||||
import (
|
import (
|
||||||
context "context"
|
context "context"
|
||||||
proto "github.com/golang/protobuf/proto"
|
proto "github.com/golang/protobuf/proto"
|
||||||
_ "google.golang.org/genproto/googleapis/api/annotations"
|
|
||||||
grpc "google.golang.org/grpc"
|
grpc "google.golang.org/grpc"
|
||||||
codes "google.golang.org/grpc/codes"
|
codes "google.golang.org/grpc/codes"
|
||||||
status "google.golang.org/grpc/status"
|
status "google.golang.org/grpc/status"
|
||||||
|
@ -34,23 +33,80 @@ const (
|
||||||
// of the legacy proto package is being used.
|
// of the legacy proto package is being used.
|
||||||
const _ = proto.ProtoPackageIsVersion4
|
const _ = proto.ProtoPackageIsVersion4
|
||||||
|
|
||||||
|
type CommandType int32
|
||||||
|
|
||||||
|
const (
|
||||||
|
CommandType_none CommandType = 0
|
||||||
|
// Move the rover in a direction, requires bearing
|
||||||
|
CommandType_move CommandType = 1
|
||||||
|
// Stashes item at current location in rover inventory
|
||||||
|
CommandType_stash CommandType = 2
|
||||||
|
// Repairs the rover using an inventory object
|
||||||
|
CommandType_repair CommandType = 3
|
||||||
|
// Waits a tick to add more charge to the rover
|
||||||
|
CommandType_recharge CommandType = 4
|
||||||
|
// Broadcasts a message to nearby rovers
|
||||||
|
CommandType_broadcast CommandType = 5
|
||||||
|
)
|
||||||
|
|
||||||
|
// Enum value maps for CommandType.
|
||||||
|
var (
|
||||||
|
CommandType_name = map[int32]string{
|
||||||
|
0: "none",
|
||||||
|
1: "move",
|
||||||
|
2: "stash",
|
||||||
|
3: "repair",
|
||||||
|
4: "recharge",
|
||||||
|
5: "broadcast",
|
||||||
|
}
|
||||||
|
CommandType_value = map[string]int32{
|
||||||
|
"none": 0,
|
||||||
|
"move": 1,
|
||||||
|
"stash": 2,
|
||||||
|
"repair": 3,
|
||||||
|
"recharge": 4,
|
||||||
|
"broadcast": 5,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
func (x CommandType) Enum() *CommandType {
|
||||||
|
p := new(CommandType)
|
||||||
|
*p = x
|
||||||
|
return p
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x CommandType) String() string {
|
||||||
|
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (CommandType) Descriptor() protoreflect.EnumDescriptor {
|
||||||
|
return file_rove_rove_proto_enumTypes[0].Descriptor()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (CommandType) Type() protoreflect.EnumType {
|
||||||
|
return &file_rove_rove_proto_enumTypes[0]
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x CommandType) Number() protoreflect.EnumNumber {
|
||||||
|
return protoreflect.EnumNumber(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use CommandType.Descriptor instead.
|
||||||
|
func (CommandType) EnumDescriptor() ([]byte, []int) {
|
||||||
|
return file_rove_rove_proto_rawDescGZIP(), []int{0}
|
||||||
|
}
|
||||||
|
|
||||||
type Command struct {
|
type Command struct {
|
||||||
state protoimpl.MessageState
|
state protoimpl.MessageState
|
||||||
sizeCache protoimpl.SizeCache
|
sizeCache protoimpl.SizeCache
|
||||||
unknownFields protoimpl.UnknownFields
|
unknownFields protoimpl.UnknownFields
|
||||||
|
|
||||||
// The command to execute
|
// The command type
|
||||||
// "move" - Move the rover in a direction, requires bearing
|
Command CommandType `protobuf:"varint,1,opt,name=command,proto3,enum=rove.CommandType" json:"command,omitempty"`
|
||||||
// "stash" - Stashes item at current location in rover inventory
|
// Types that are assignable to Data:
|
||||||
// "repair" - Repairs the rover using an inventory object
|
// *Command_Bearing
|
||||||
// "recharge" - Waits a tick to add more charge to the rover
|
// *Command_Message
|
||||||
// "broadcast" - Broadcasts a message to nearby rovers
|
Data isCommand_Data `protobuf_oneof:"data"`
|
||||||
Command string `protobuf:"bytes,1,opt,name=command,proto3" json:"command,omitempty"`
|
|
||||||
// A bearing, example: NE
|
|
||||||
Bearing string `protobuf:"bytes,2,opt,name=bearing,proto3" json:"bearing,omitempty"`
|
|
||||||
// A simple message, must be composed of printable ASCII glyphs (32-126)
|
|
||||||
// maximum of three characters
|
|
||||||
Message []byte `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *Command) Reset() {
|
func (x *Command) Reset() {
|
||||||
|
@ -85,27 +141,55 @@ func (*Command) Descriptor() ([]byte, []int) {
|
||||||
return file_rove_rove_proto_rawDescGZIP(), []int{0}
|
return file_rove_rove_proto_rawDescGZIP(), []int{0}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *Command) GetCommand() string {
|
func (x *Command) GetCommand() CommandType {
|
||||||
if x != nil {
|
if x != nil {
|
||||||
return x.Command
|
return x.Command
|
||||||
}
|
}
|
||||||
return ""
|
return CommandType_none
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *Command) GetData() isCommand_Data {
|
||||||
|
if m != nil {
|
||||||
|
return m.Data
|
||||||
|
}
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *Command) GetBearing() string {
|
func (x *Command) GetBearing() string {
|
||||||
if x != nil {
|
if x, ok := x.GetData().(*Command_Bearing); ok {
|
||||||
return x.Bearing
|
return x.Bearing
|
||||||
}
|
}
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *Command) GetMessage() []byte {
|
func (x *Command) GetMessage() []byte {
|
||||||
if x != nil {
|
if x, ok := x.GetData().(*Command_Message); ok {
|
||||||
return x.Message
|
return x.Message
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type isCommand_Data interface {
|
||||||
|
isCommand_Data()
|
||||||
|
}
|
||||||
|
|
||||||
|
type Command_Bearing struct {
|
||||||
|
// A bearing, example: NE
|
||||||
|
// Used with MOVE
|
||||||
|
Bearing string `protobuf:"bytes,2,opt,name=bearing,proto3,oneof"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type Command_Message struct {
|
||||||
|
// A simple message, must be composed of printable ASCII glyphs (32-126)
|
||||||
|
// maximum of three characters
|
||||||
|
// Used with BROADCAST
|
||||||
|
Message []byte `protobuf:"bytes,3,opt,name=message,proto3,oneof"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*Command_Bearing) isCommand_Data() {}
|
||||||
|
|
||||||
|
func (*Command_Message) isCommand_Data() {}
|
||||||
|
|
||||||
type CommandRequest struct {
|
type CommandRequest struct {
|
||||||
state protoimpl.MessageState
|
state protoimpl.MessageState
|
||||||
sizeCache protoimpl.SizeCache
|
sizeCache protoimpl.SizeCache
|
||||||
|
@ -950,119 +1034,118 @@ var File_rove_rove_proto protoreflect.FileDescriptor
|
||||||
|
|
||||||
var file_rove_rove_proto_rawDesc = []byte{
|
var file_rove_rove_proto_rawDesc = []byte{
|
||||||
0x0a, 0x0f, 0x72, 0x6f, 0x76, 0x65, 0x2f, 0x72, 0x6f, 0x76, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
|
0x0a, 0x0f, 0x72, 0x6f, 0x76, 0x65, 0x2f, 0x72, 0x6f, 0x76, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
|
||||||
0x6f, 0x12, 0x04, 0x72, 0x6f, 0x76, 0x65, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
|
0x6f, 0x12, 0x04, 0x72, 0x6f, 0x76, 0x65, 0x22, 0x76, 0x0a, 0x07, 0x43, 0x6f, 0x6d, 0x6d, 0x61,
|
||||||
0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
|
0x6e, 0x64, 0x12, 0x2b, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x01, 0x20,
|
||||||
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x57, 0x0a, 0x07, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64,
|
0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x72, 0x6f, 0x76, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x61,
|
||||||
0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
|
0x6e, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12,
|
||||||
0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x65,
|
0x1a, 0x0a, 0x07, 0x62, 0x65, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
|
||||||
0x61, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x65, 0x61,
|
0x48, 0x00, 0x52, 0x07, 0x62, 0x65, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x1a, 0x0a, 0x07, 0x6d,
|
||||||
0x72, 0x69, 0x6e, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18,
|
0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x07,
|
||||||
0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x64,
|
0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22,
|
||||||
0x0a, 0x0e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
|
0x64, 0x0a, 0x0e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
|
||||||
0x12, 0x27, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
|
0x74, 0x12, 0x27, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01,
|
||||||
0x0b, 0x32, 0x0d, 0x2e, 0x72, 0x6f, 0x76, 0x65, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
|
|
||||||
0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x29, 0x0a, 0x08, 0x63, 0x6f, 0x6d,
|
|
||||||
0x6d, 0x61, 0x6e, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x72, 0x6f,
|
|
||||||
0x76, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d,
|
|
||||||
0x61, 0x6e, 0x64, 0x73, 0x22, 0x11, 0x0a, 0x0f, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52,
|
|
||||||
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72,
|
|
||||||
0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
|
|
||||||
0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x37, 0x0a, 0x0c, 0x52, 0x61, 0x64, 0x61, 0x72, 0x52,
|
|
||||||
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e,
|
|
||||||
0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x72, 0x6f, 0x76, 0x65, 0x2e, 0x41,
|
|
||||||
0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22,
|
|
||||||
0x55, 0x0a, 0x0d, 0x52, 0x61, 0x64, 0x61, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
|
|
||||||
0x12, 0x14, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
|
|
||||||
0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x18,
|
|
||||||
0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07,
|
|
||||||
0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x6f,
|
|
||||||
0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x22, 0x25, 0x0a, 0x0f, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74,
|
|
||||||
0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
|
|
||||||
0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x3b, 0x0a,
|
|
||||||
0x10, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
|
|
||||||
0x65, 0x12, 0x27, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01,
|
|
||||||
0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x72, 0x6f, 0x76, 0x65, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e,
|
0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x72, 0x6f, 0x76, 0x65, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e,
|
||||||
0x74, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x38, 0x0a, 0x0d, 0x53, 0x74,
|
0x74, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x29, 0x0a, 0x08, 0x63, 0x6f,
|
||||||
0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x07, 0x61,
|
0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x72,
|
||||||
0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x72,
|
0x6f, 0x76, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x08, 0x63, 0x6f, 0x6d,
|
||||||
0x6f, 0x76, 0x65, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x07, 0x61, 0x63, 0x63,
|
0x6d, 0x61, 0x6e, 0x64, 0x73, 0x22, 0x11, 0x0a, 0x0f, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64,
|
||||||
0x6f, 0x75, 0x6e, 0x74, 0x22, 0x2d, 0x0a, 0x03, 0x4c, 0x6f, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x74,
|
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f,
|
||||||
0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12,
|
0x72, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
|
||||||
0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74,
|
0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x37, 0x0a, 0x0c, 0x52, 0x61, 0x64, 0x61, 0x72,
|
||||||
0x65, 0x78, 0x74, 0x22, 0xb7, 0x03, 0x0a, 0x0e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65,
|
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75,
|
||||||
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
|
0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x72, 0x6f, 0x76, 0x65, 0x2e,
|
||||||
0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x08, 0x70, 0x6f,
|
0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
|
||||||
0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x72,
|
0x22, 0x55, 0x0a, 0x0d, 0x52, 0x61, 0x64, 0x61, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
|
||||||
0x6f, 0x76, 0x65, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69,
|
0x65, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
|
||||||
0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x03, 0x20,
|
0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x6c, 0x65, 0x73,
|
||||||
0x01, 0x28, 0x05, 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e,
|
0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x18, 0x0a,
|
||||||
0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x69,
|
0x07, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07,
|
||||||
0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x70, 0x61,
|
0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x22, 0x25, 0x0a, 0x0f, 0x52, 0x65, 0x67, 0x69, 0x73,
|
||||||
0x63, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x63, 0x61, 0x70, 0x61,
|
0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
|
||||||
0x63, 0x69, 0x74, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x69, 0x74,
|
0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x3b,
|
||||||
0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x69,
|
0x0a, 0x10, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
|
||||||
0x74, 0x79, 0x12, 0x2a, 0x0a, 0x10, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x49, 0x6e, 0x74,
|
0x73, 0x65, 0x12, 0x27, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20,
|
||||||
0x65, 0x67, 0x72, 0x69, 0x74, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x6d, 0x61,
|
0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x72, 0x6f, 0x76, 0x65, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75,
|
||||||
0x78, 0x69, 0x6d, 0x75, 0x6d, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x69, 0x74, 0x79, 0x12, 0x16,
|
0x6e, 0x74, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x38, 0x0a, 0x0d, 0x53,
|
||||||
0x0a, 0x06, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06,
|
0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x07,
|
||||||
0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75,
|
0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e,
|
||||||
0x6d, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6d,
|
0x72, 0x6f, 0x76, 0x65, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x07, 0x61, 0x63,
|
||||||
0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x12, 0x39, 0x0a, 0x10,
|
0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x2d, 0x0a, 0x03, 0x4c, 0x6f, 0x67, 0x12, 0x12, 0x0a, 0x04,
|
||||||
0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73,
|
0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65,
|
||||||
0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x72, 0x6f, 0x76, 0x65, 0x2e, 0x43, 0x6f,
|
0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
|
||||||
0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x10, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x43,
|
0x74, 0x65, 0x78, 0x74, 0x22, 0xb7, 0x03, 0x0a, 0x0e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52,
|
||||||
0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x12, 0x35, 0x0a, 0x0e, 0x71, 0x75, 0x65, 0x75, 0x65,
|
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
|
||||||
0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32,
|
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x08, 0x70,
|
||||||
0x0d, 0x2e, 0x72, 0x6f, 0x76, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x0e,
|
0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e,
|
||||||
0x71, 0x75, 0x65, 0x75, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x12, 0x1d,
|
0x72, 0x6f, 0x76, 0x65, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x08, 0x70, 0x6f, 0x73,
|
||||||
0x0a, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x72,
|
0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x03,
|
||||||
0x6f, 0x76, 0x65, 0x2e, 0x4c, 0x6f, 0x67, 0x52, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x22, 0x15, 0x0a,
|
0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x69,
|
||||||
0x13, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71,
|
0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09,
|
||||||
0x75, 0x65, 0x73, 0x74, 0x22, 0xa1, 0x01, 0x0a, 0x14, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53,
|
0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x70,
|
||||||
0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a,
|
0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x63, 0x61, 0x70,
|
||||||
0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
|
0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x69,
|
||||||
0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x61, 0x64, 0x79,
|
0x74, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72,
|
||||||
0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x72, 0x65, 0x61, 0x64, 0x79, 0x12, 0x1a, 0x0a,
|
0x69, 0x74, 0x79, 0x12, 0x2a, 0x0a, 0x10, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x49, 0x6e,
|
||||||
0x08, 0x74, 0x69, 0x63, 0x6b, 0x52, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52,
|
0x74, 0x65, 0x67, 0x72, 0x69, 0x74, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x6d,
|
||||||
0x08, 0x74, 0x69, 0x63, 0x6b, 0x52, 0x61, 0x74, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x75, 0x72,
|
0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x69, 0x74, 0x79, 0x12,
|
||||||
0x72, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b,
|
0x16, 0x0a, 0x06, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52,
|
||||||
0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x12, 0x1b, 0x0a, 0x09, 0x6e,
|
0x06, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x69, 0x6d,
|
||||||
0x65, 0x78, 0x74, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
|
0x75, 0x6d, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d,
|
||||||
0x6e, 0x65, 0x78, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x22, 0x24, 0x0a, 0x06, 0x56, 0x65, 0x63, 0x74,
|
0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x12, 0x39, 0x0a,
|
||||||
0x6f, 0x72, 0x12, 0x0c, 0x0a, 0x01, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x78,
|
0x10, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64,
|
||||||
0x12, 0x0c, 0x0a, 0x01, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x79, 0x22, 0x35,
|
0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x72, 0x6f, 0x76, 0x65, 0x2e, 0x43,
|
||||||
0x0a, 0x07, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
|
0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x10, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x69, 0x6e, 0x67,
|
||||||
0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a,
|
0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x12, 0x35, 0x0a, 0x0e, 0x71, 0x75, 0x65, 0x75,
|
||||||
0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73,
|
0x65, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b,
|
||||||
0x65, 0x63, 0x72, 0x65, 0x74, 0x32, 0x91, 0x03, 0x0a, 0x04, 0x52, 0x6f, 0x76, 0x65, 0x12, 0x5d,
|
0x32, 0x0d, 0x2e, 0x72, 0x6f, 0x76, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52,
|
||||||
0x0a, 0x0c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x19,
|
0x0e, 0x71, 0x75, 0x65, 0x75, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x12,
|
||||||
0x2e, 0x72, 0x6f, 0x76, 0x65, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74,
|
0x1d, 0x0a, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x09, 0x2e,
|
||||||
0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x72, 0x6f, 0x76, 0x65,
|
0x72, 0x6f, 0x76, 0x65, 0x2e, 0x4c, 0x6f, 0x67, 0x52, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x22, 0x15,
|
||||||
0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73,
|
0x0a, 0x13, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65,
|
||||||
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x16, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x12, 0x0e, 0x2f,
|
0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xa1, 0x01, 0x0a, 0x14, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72,
|
||||||
0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x4f, 0x0a,
|
0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18,
|
||||||
0x08, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x15, 0x2e, 0x72, 0x6f, 0x76, 0x65,
|
0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
|
||||||
0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
|
0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x61, 0x64,
|
||||||
0x1a, 0x16, 0x2e, 0x72, 0x6f, 0x76, 0x65, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72,
|
0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x72, 0x65, 0x61, 0x64, 0x79, 0x12, 0x1a,
|
||||||
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x14, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0e,
|
0x0a, 0x08, 0x74, 0x69, 0x63, 0x6b, 0x52, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05,
|
||||||
0x22, 0x09, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x3a, 0x01, 0x2a, 0x12, 0x4b,
|
0x52, 0x08, 0x74, 0x69, 0x63, 0x6b, 0x52, 0x61, 0x74, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x75,
|
||||||
0x0a, 0x07, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x14, 0x2e, 0x72, 0x6f, 0x76, 0x65,
|
0x72, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52,
|
||||||
0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
|
0x0b, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x12, 0x1b, 0x0a, 0x09,
|
||||||
0x15, 0x2e, 0x72, 0x6f, 0x76, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65,
|
0x6e, 0x65, 0x78, 0x74, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,
|
||||||
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x13, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0d, 0x22, 0x08,
|
0x08, 0x6e, 0x65, 0x78, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x22, 0x24, 0x0a, 0x06, 0x56, 0x65, 0x63,
|
||||||
0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x3a, 0x01, 0x2a, 0x12, 0x43, 0x0a, 0x05, 0x52,
|
0x74, 0x6f, 0x72, 0x12, 0x0c, 0x0a, 0x01, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01,
|
||||||
0x61, 0x64, 0x61, 0x72, 0x12, 0x12, 0x2e, 0x72, 0x6f, 0x76, 0x65, 0x2e, 0x52, 0x61, 0x64, 0x61,
|
0x78, 0x12, 0x0c, 0x0a, 0x01, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x79, 0x22,
|
||||||
0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x72, 0x6f, 0x76, 0x65, 0x2e,
|
0x35, 0x0a, 0x07, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
|
||||||
0x52, 0x61, 0x64, 0x61, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x11, 0x82,
|
0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16,
|
||||||
0xd3, 0xe4, 0x93, 0x02, 0x0b, 0x22, 0x06, 0x2f, 0x72, 0x61, 0x64, 0x61, 0x72, 0x3a, 0x01, 0x2a,
|
0x0a, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
|
||||||
0x12, 0x47, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x13, 0x2e, 0x72, 0x6f, 0x76,
|
0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x2a, 0x55, 0x0a, 0x0b, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e,
|
||||||
0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
|
0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x6e, 0x6f, 0x6e, 0x65, 0x10, 0x00, 0x12,
|
||||||
0x14, 0x2e, 0x72, 0x6f, 0x76, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73,
|
0x08, 0x0a, 0x04, 0x6d, 0x6f, 0x76, 0x65, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x73, 0x74, 0x61,
|
||||||
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x12, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0c, 0x22, 0x07, 0x2f,
|
0x73, 0x68, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x72, 0x65, 0x70, 0x61, 0x69, 0x72, 0x10, 0x03,
|
||||||
0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x3a, 0x01, 0x2a, 0x42, 0x21, 0x5a, 0x1f, 0x67, 0x69, 0x74,
|
0x12, 0x0c, 0x0a, 0x08, 0x72, 0x65, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x10, 0x04, 0x12, 0x0d,
|
||||||
0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x64, 0x69, 0x6c, 0x75, 0x7a, 0x2f, 0x72,
|
0x0a, 0x09, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x10, 0x05, 0x32, 0xb1, 0x02,
|
||||||
0x6f, 0x76, 0x65, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x72, 0x6f, 0x76, 0x65, 0x62, 0x06, 0x70, 0x72,
|
0x0a, 0x04, 0x52, 0x6f, 0x76, 0x65, 0x12, 0x47, 0x0a, 0x0c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72,
|
||||||
0x6f, 0x74, 0x6f, 0x33,
|
0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x19, 0x2e, 0x72, 0x6f, 0x76, 0x65, 0x2e, 0x53, 0x65,
|
||||||
|
0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
|
||||||
|
0x74, 0x1a, 0x1a, 0x2e, 0x72, 0x6f, 0x76, 0x65, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53,
|
||||||
|
0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12,
|
||||||
|
0x3b, 0x0a, 0x08, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x15, 0x2e, 0x72, 0x6f,
|
||||||
|
0x76, 0x65, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65,
|
||||||
|
0x73, 0x74, 0x1a, 0x16, 0x2e, 0x72, 0x6f, 0x76, 0x65, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74,
|
||||||
|
0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x38, 0x0a, 0x07,
|
||||||
|
0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x14, 0x2e, 0x72, 0x6f, 0x76, 0x65, 0x2e, 0x43,
|
||||||
|
0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e,
|
||||||
|
0x72, 0x6f, 0x76, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70,
|
||||||
|
0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x32, 0x0a, 0x05, 0x52, 0x61, 0x64, 0x61, 0x72, 0x12,
|
||||||
|
0x12, 0x2e, 0x72, 0x6f, 0x76, 0x65, 0x2e, 0x52, 0x61, 0x64, 0x61, 0x72, 0x52, 0x65, 0x71, 0x75,
|
||||||
|
0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x72, 0x6f, 0x76, 0x65, 0x2e, 0x52, 0x61, 0x64, 0x61, 0x72,
|
||||||
|
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x35, 0x0a, 0x06, 0x53, 0x74,
|
||||||
|
0x61, 0x74, 0x75, 0x73, 0x12, 0x13, 0x2e, 0x72, 0x6f, 0x76, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74,
|
||||||
|
0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x72, 0x6f, 0x76, 0x65,
|
||||||
|
0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
|
||||||
|
0x00, 0x42, 0x21, 0x5a, 0x1f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
|
||||||
|
0x6d, 0x64, 0x69, 0x6c, 0x75, 0x7a, 0x2f, 0x72, 0x6f, 0x76, 0x65, 0x2f, 0x70, 0x6b, 0x67, 0x2f,
|
||||||
|
0x72, 0x6f, 0x76, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
@ -1077,49 +1160,52 @@ func file_rove_rove_proto_rawDescGZIP() []byte {
|
||||||
return file_rove_rove_proto_rawDescData
|
return file_rove_rove_proto_rawDescData
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var file_rove_rove_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
|
||||||
var file_rove_rove_proto_msgTypes = make([]protoimpl.MessageInfo, 15)
|
var file_rove_rove_proto_msgTypes = make([]protoimpl.MessageInfo, 15)
|
||||||
var file_rove_rove_proto_goTypes = []interface{}{
|
var file_rove_rove_proto_goTypes = []interface{}{
|
||||||
(*Command)(nil), // 0: rove.Command
|
(CommandType)(0), // 0: rove.CommandType
|
||||||
(*CommandRequest)(nil), // 1: rove.CommandRequest
|
(*Command)(nil), // 1: rove.Command
|
||||||
(*CommandResponse)(nil), // 2: rove.CommandResponse
|
(*CommandRequest)(nil), // 2: rove.CommandRequest
|
||||||
(*Error)(nil), // 3: rove.Error
|
(*CommandResponse)(nil), // 3: rove.CommandResponse
|
||||||
(*RadarRequest)(nil), // 4: rove.RadarRequest
|
(*Error)(nil), // 4: rove.Error
|
||||||
(*RadarResponse)(nil), // 5: rove.RadarResponse
|
(*RadarRequest)(nil), // 5: rove.RadarRequest
|
||||||
(*RegisterRequest)(nil), // 6: rove.RegisterRequest
|
(*RadarResponse)(nil), // 6: rove.RadarResponse
|
||||||
(*RegisterResponse)(nil), // 7: rove.RegisterResponse
|
(*RegisterRequest)(nil), // 7: rove.RegisterRequest
|
||||||
(*StatusRequest)(nil), // 8: rove.StatusRequest
|
(*RegisterResponse)(nil), // 8: rove.RegisterResponse
|
||||||
(*Log)(nil), // 9: rove.Log
|
(*StatusRequest)(nil), // 9: rove.StatusRequest
|
||||||
(*StatusResponse)(nil), // 10: rove.StatusResponse
|
(*Log)(nil), // 10: rove.Log
|
||||||
(*ServerStatusRequest)(nil), // 11: rove.ServerStatusRequest
|
(*StatusResponse)(nil), // 11: rove.StatusResponse
|
||||||
(*ServerStatusResponse)(nil), // 12: rove.ServerStatusResponse
|
(*ServerStatusRequest)(nil), // 12: rove.ServerStatusRequest
|
||||||
(*Vector)(nil), // 13: rove.Vector
|
(*ServerStatusResponse)(nil), // 13: rove.ServerStatusResponse
|
||||||
(*Account)(nil), // 14: rove.Account
|
(*Vector)(nil), // 14: rove.Vector
|
||||||
|
(*Account)(nil), // 15: rove.Account
|
||||||
}
|
}
|
||||||
var file_rove_rove_proto_depIdxs = []int32{
|
var file_rove_rove_proto_depIdxs = []int32{
|
||||||
14, // 0: rove.CommandRequest.account:type_name -> rove.Account
|
0, // 0: rove.Command.command:type_name -> rove.CommandType
|
||||||
0, // 1: rove.CommandRequest.commands:type_name -> rove.Command
|
15, // 1: rove.CommandRequest.account:type_name -> rove.Account
|
||||||
14, // 2: rove.RadarRequest.account:type_name -> rove.Account
|
1, // 2: rove.CommandRequest.commands:type_name -> rove.Command
|
||||||
14, // 3: rove.RegisterResponse.account:type_name -> rove.Account
|
15, // 3: rove.RadarRequest.account:type_name -> rove.Account
|
||||||
14, // 4: rove.StatusRequest.account:type_name -> rove.Account
|
15, // 4: rove.RegisterResponse.account:type_name -> rove.Account
|
||||||
13, // 5: rove.StatusResponse.position:type_name -> rove.Vector
|
15, // 5: rove.StatusRequest.account:type_name -> rove.Account
|
||||||
0, // 6: rove.StatusResponse.incomingCommands:type_name -> rove.Command
|
14, // 6: rove.StatusResponse.position:type_name -> rove.Vector
|
||||||
0, // 7: rove.StatusResponse.queuedCommands:type_name -> rove.Command
|
1, // 7: rove.StatusResponse.incomingCommands:type_name -> rove.Command
|
||||||
9, // 8: rove.StatusResponse.logs:type_name -> rove.Log
|
1, // 8: rove.StatusResponse.queuedCommands:type_name -> rove.Command
|
||||||
11, // 9: rove.Rove.ServerStatus:input_type -> rove.ServerStatusRequest
|
10, // 9: rove.StatusResponse.logs:type_name -> rove.Log
|
||||||
6, // 10: rove.Rove.Register:input_type -> rove.RegisterRequest
|
12, // 10: rove.Rove.ServerStatus:input_type -> rove.ServerStatusRequest
|
||||||
1, // 11: rove.Rove.Command:input_type -> rove.CommandRequest
|
7, // 11: rove.Rove.Register:input_type -> rove.RegisterRequest
|
||||||
4, // 12: rove.Rove.Radar:input_type -> rove.RadarRequest
|
2, // 12: rove.Rove.Command:input_type -> rove.CommandRequest
|
||||||
8, // 13: rove.Rove.Status:input_type -> rove.StatusRequest
|
5, // 13: rove.Rove.Radar:input_type -> rove.RadarRequest
|
||||||
12, // 14: rove.Rove.ServerStatus:output_type -> rove.ServerStatusResponse
|
9, // 14: rove.Rove.Status:input_type -> rove.StatusRequest
|
||||||
7, // 15: rove.Rove.Register:output_type -> rove.RegisterResponse
|
13, // 15: rove.Rove.ServerStatus:output_type -> rove.ServerStatusResponse
|
||||||
2, // 16: rove.Rove.Command:output_type -> rove.CommandResponse
|
8, // 16: rove.Rove.Register:output_type -> rove.RegisterResponse
|
||||||
5, // 17: rove.Rove.Radar:output_type -> rove.RadarResponse
|
3, // 17: rove.Rove.Command:output_type -> rove.CommandResponse
|
||||||
10, // 18: rove.Rove.Status:output_type -> rove.StatusResponse
|
6, // 18: rove.Rove.Radar:output_type -> rove.RadarResponse
|
||||||
14, // [14:19] is the sub-list for method output_type
|
11, // 19: rove.Rove.Status:output_type -> rove.StatusResponse
|
||||||
9, // [9:14] is the sub-list for method input_type
|
15, // [15:20] is the sub-list for method output_type
|
||||||
9, // [9:9] is the sub-list for extension type_name
|
10, // [10:15] is the sub-list for method input_type
|
||||||
9, // [9:9] is the sub-list for extension extendee
|
10, // [10:10] is the sub-list for extension type_name
|
||||||
0, // [0:9] is the sub-list for field type_name
|
10, // [10:10] is the sub-list for extension extendee
|
||||||
|
0, // [0:10] is the sub-list for field type_name
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() { file_rove_rove_proto_init() }
|
func init() { file_rove_rove_proto_init() }
|
||||||
|
@ -1309,18 +1395,23 @@ func file_rove_rove_proto_init() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
file_rove_rove_proto_msgTypes[0].OneofWrappers = []interface{}{
|
||||||
|
(*Command_Bearing)(nil),
|
||||||
|
(*Command_Message)(nil),
|
||||||
|
}
|
||||||
type x struct{}
|
type x struct{}
|
||||||
out := protoimpl.TypeBuilder{
|
out := protoimpl.TypeBuilder{
|
||||||
File: protoimpl.DescBuilder{
|
File: protoimpl.DescBuilder{
|
||||||
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||||||
RawDescriptor: file_rove_rove_proto_rawDesc,
|
RawDescriptor: file_rove_rove_proto_rawDesc,
|
||||||
NumEnums: 0,
|
NumEnums: 1,
|
||||||
NumMessages: 15,
|
NumMessages: 15,
|
||||||
NumExtensions: 0,
|
NumExtensions: 0,
|
||||||
NumServices: 1,
|
NumServices: 1,
|
||||||
},
|
},
|
||||||
GoTypes: file_rove_rove_proto_goTypes,
|
GoTypes: file_rove_rove_proto_goTypes,
|
||||||
DependencyIndexes: file_rove_rove_proto_depIdxs,
|
DependencyIndexes: file_rove_rove_proto_depIdxs,
|
||||||
|
EnumInfos: file_rove_rove_proto_enumTypes,
|
||||||
MessageInfos: file_rove_rove_proto_msgTypes,
|
MessageInfos: file_rove_rove_proto_msgTypes,
|
||||||
}.Build()
|
}.Build()
|
||||||
File_rove_rove_proto = out.File
|
File_rove_rove_proto = out.File
|
||||||
|
|
|
@ -11,168 +11,7 @@
|
||||||
"produces": [
|
"produces": [
|
||||||
"application/json"
|
"application/json"
|
||||||
],
|
],
|
||||||
"paths": {
|
"paths": {},
|
||||||
"/command": {
|
|
||||||
"post": {
|
|
||||||
"summary": "Send commands to rover",
|
|
||||||
"description": "Sending commands to this endpoint will queue them to be executed during the following ticks, in the order sent",
|
|
||||||
"operationId": "Rove_Command",
|
|
||||||
"responses": {
|
|
||||||
"200": {
|
|
||||||
"description": "A successful response.",
|
|
||||||
"schema": {
|
|
||||||
"$ref": "#/definitions/roveCommandResponse"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"default": {
|
|
||||||
"description": "An unexpected error response",
|
|
||||||
"schema": {
|
|
||||||
"$ref": "#/definitions/gatewayruntimeError"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"parameters": [
|
|
||||||
{
|
|
||||||
"name": "body",
|
|
||||||
"in": "body",
|
|
||||||
"required": true,
|
|
||||||
"schema": {
|
|
||||||
"$ref": "#/definitions/roveCommandRequest"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"tags": [
|
|
||||||
"Rove"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"/radar": {
|
|
||||||
"post": {
|
|
||||||
"summary": "Get radar information",
|
|
||||||
"description": "Gets the radar output for the given rover",
|
|
||||||
"operationId": "Rove_Radar",
|
|
||||||
"responses": {
|
|
||||||
"200": {
|
|
||||||
"description": "A successful response.",
|
|
||||||
"schema": {
|
|
||||||
"$ref": "#/definitions/roveRadarResponse"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"default": {
|
|
||||||
"description": "An unexpected error response",
|
|
||||||
"schema": {
|
|
||||||
"$ref": "#/definitions/gatewayruntimeError"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"parameters": [
|
|
||||||
{
|
|
||||||
"name": "body",
|
|
||||||
"in": "body",
|
|
||||||
"required": true,
|
|
||||||
"schema": {
|
|
||||||
"$ref": "#/definitions/roveRadarRequest"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"tags": [
|
|
||||||
"Rove"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"/register": {
|
|
||||||
"post": {
|
|
||||||
"summary": "Register an account",
|
|
||||||
"description": "Tries to register an account with the given name",
|
|
||||||
"operationId": "Rove_Register",
|
|
||||||
"responses": {
|
|
||||||
"200": {
|
|
||||||
"description": "A successful response.",
|
|
||||||
"schema": {
|
|
||||||
"$ref": "#/definitions/roveRegisterResponse"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"default": {
|
|
||||||
"description": "An unexpected error response",
|
|
||||||
"schema": {
|
|
||||||
"$ref": "#/definitions/gatewayruntimeError"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"parameters": [
|
|
||||||
{
|
|
||||||
"name": "body",
|
|
||||||
"in": "body",
|
|
||||||
"required": true,
|
|
||||||
"schema": {
|
|
||||||
"$ref": "#/definitions/roveRegisterRequest"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"tags": [
|
|
||||||
"Rove"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"/server-status": {
|
|
||||||
"get": {
|
|
||||||
"summary": "Server status",
|
|
||||||
"description": "Responds with various details about the current server status",
|
|
||||||
"operationId": "Rove_ServerStatus",
|
|
||||||
"responses": {
|
|
||||||
"200": {
|
|
||||||
"description": "A successful response.",
|
|
||||||
"schema": {
|
|
||||||
"$ref": "#/definitions/roveServerStatusResponse"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"default": {
|
|
||||||
"description": "An unexpected error response",
|
|
||||||
"schema": {
|
|
||||||
"$ref": "#/definitions/gatewayruntimeError"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"tags": [
|
|
||||||
"Rove"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"/status": {
|
|
||||||
"post": {
|
|
||||||
"summary": "Get rover information",
|
|
||||||
"description": "Gets information for the account's rover",
|
|
||||||
"operationId": "Rove_Status",
|
|
||||||
"responses": {
|
|
||||||
"200": {
|
|
||||||
"description": "A successful response.",
|
|
||||||
"schema": {
|
|
||||||
"$ref": "#/definitions/roveStatusResponse"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"default": {
|
|
||||||
"description": "An unexpected error response",
|
|
||||||
"schema": {
|
|
||||||
"$ref": "#/definitions/gatewayruntimeError"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"parameters": [
|
|
||||||
{
|
|
||||||
"name": "body",
|
|
||||||
"in": "body",
|
|
||||||
"required": true,
|
|
||||||
"schema": {
|
|
||||||
"$ref": "#/definitions/roveStatusRequest"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"tags": [
|
|
||||||
"Rove"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"definitions": {
|
"definitions": {
|
||||||
"gatewayruntimeError": {
|
"gatewayruntimeError": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
|
@ -222,33 +61,17 @@
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"command": {
|
"command": {
|
||||||
"type": "string",
|
"$ref": "#/definitions/roveCommandType",
|
||||||
"title": "The command to execute\n\"move\" - Move the rover in a direction, requires bearing\n\"stash\" - Stashes item at current location in rover inventory\n\"repair\" - Repairs the rover using an inventory object\n\"recharge\" - Waits a tick to add more charge to the rover\n\"broadcast\" - Broadcasts a message to nearby rovers"
|
"title": "The command type"
|
||||||
},
|
},
|
||||||
"bearing": {
|
"bearing": {
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"title": "A bearing, example: NE"
|
"title": "A bearing, example: NE\nUsed with MOVE"
|
||||||
},
|
},
|
||||||
"message": {
|
"message": {
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"format": "byte",
|
"format": "byte",
|
||||||
"title": "A simple message, must be composed of printable ASCII glyphs (32-126)\nmaximum of three characters"
|
"title": "A simple message, must be composed of printable ASCII glyphs (32-126)\nmaximum of three characters\nUsed with BROADCAST"
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"roveCommandRequest": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"account": {
|
|
||||||
"$ref": "#/definitions/roveAccount",
|
|
||||||
"title": "The account to execute these commands"
|
|
||||||
},
|
|
||||||
"commands": {
|
|
||||||
"type": "array",
|
|
||||||
"items": {
|
|
||||||
"$ref": "#/definitions/roveCommand"
|
|
||||||
},
|
|
||||||
"title": "The set of desired commands"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -256,6 +79,19 @@
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"title": "Empty placeholder"
|
"title": "Empty placeholder"
|
||||||
},
|
},
|
||||||
|
"roveCommandType": {
|
||||||
|
"type": "string",
|
||||||
|
"enum": [
|
||||||
|
"none",
|
||||||
|
"move",
|
||||||
|
"stash",
|
||||||
|
"repair",
|
||||||
|
"recharge",
|
||||||
|
"broadcast"
|
||||||
|
],
|
||||||
|
"default": "none",
|
||||||
|
"title": "- move: Move the rover in a direction, requires bearing\n - stash: Stashes item at current location in rover inventory\n - repair: Repairs the rover using an inventory object\n - recharge: Waits a tick to add more charge to the rover\n - broadcast: Broadcasts a message to nearby rovers"
|
||||||
|
},
|
||||||
"roveLog": {
|
"roveLog": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
|
@ -269,15 +105,6 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"roveRadarRequest": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"account": {
|
|
||||||
"$ref": "#/definitions/roveAccount",
|
|
||||||
"title": "The account for this request"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"roveRadarResponse": {
|
"roveRadarResponse": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
|
@ -298,15 +125,6 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"roveRegisterRequest": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"name": {
|
|
||||||
"type": "string",
|
|
||||||
"title": "The desired account name"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"roveRegisterResponse": {
|
"roveRegisterResponse": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
|
@ -345,15 +163,6 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"roveStatusRequest": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"account": {
|
|
||||||
"$ref": "#/definitions/roveAccount",
|
|
||||||
"title": "The account for this request"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"roveStatusResponse": {
|
"roveStatusResponse": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
|
|
|
@ -7,75 +7,62 @@ package rove;
|
||||||
|
|
||||||
option go_package = "github.com/mdiluz/rove/pkg/rove";
|
option go_package = "github.com/mdiluz/rove/pkg/rove";
|
||||||
|
|
||||||
import "google/api/annotations.proto";
|
|
||||||
|
|
||||||
service Rove {
|
service Rove {
|
||||||
// Server status
|
// Server status
|
||||||
//
|
//
|
||||||
// Responds with various details about the current server status
|
// Responds with various details about the current server status
|
||||||
rpc ServerStatus(ServerStatusRequest) returns (ServerStatusResponse) {
|
rpc ServerStatus(ServerStatusRequest) returns (ServerStatusResponse) {}
|
||||||
option (google.api.http) = {
|
|
||||||
get: "/server-status"
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
// Register an account
|
// Register an account
|
||||||
//
|
//
|
||||||
// Tries to register an account with the given name
|
// Tries to register an account with the given name
|
||||||
rpc Register(RegisterRequest) returns (RegisterResponse) {
|
rpc Register(RegisterRequest) returns (RegisterResponse) {}
|
||||||
option (google.api.http) = {
|
|
||||||
post: "/register"
|
|
||||||
body: "*"
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
// Send commands to rover
|
// Send commands to rover
|
||||||
//
|
//
|
||||||
// Sending commands to this endpoint will queue them to be executed during the following ticks, in the order sent
|
// Sending commands to this endpoint will queue them to be executed during the following ticks, in the order sent
|
||||||
rpc Command(CommandRequest) returns (CommandResponse) {
|
rpc Command(CommandRequest) returns (CommandResponse) {}
|
||||||
option (google.api.http) = {
|
|
||||||
post: "/command"
|
|
||||||
body: "*"
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get radar information
|
// Get radar information
|
||||||
//
|
//
|
||||||
// Gets the radar output for the given rover
|
// Gets the radar output for the given rover
|
||||||
rpc Radar(RadarRequest) returns (RadarResponse) {
|
rpc Radar(RadarRequest) returns (RadarResponse) {}
|
||||||
option (google.api.http) = {
|
|
||||||
post: "/radar"
|
|
||||||
body: "*"
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get rover information
|
// Get rover information
|
||||||
//
|
//
|
||||||
// Gets information for the account's rover
|
// Gets information for the account's rover
|
||||||
rpc Status(StatusRequest) returns (StatusResponse) {
|
rpc Status(StatusRequest) returns (StatusResponse) {}
|
||||||
option (google.api.http) = {
|
|
||||||
post: "/status"
|
|
||||||
body: "*"
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enum CommandType {
|
||||||
|
none = 0;
|
||||||
|
// Move the rover in a direction, requires bearing
|
||||||
|
move = 1;
|
||||||
|
// Stashes item at current location in rover inventory
|
||||||
|
stash = 2;
|
||||||
|
// Repairs the rover using an inventory object
|
||||||
|
repair = 3;
|
||||||
|
// Waits a tick to add more charge to the rover
|
||||||
|
recharge = 4;
|
||||||
|
// Broadcasts a message to nearby rovers
|
||||||
|
broadcast = 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
message Command {
|
message Command {
|
||||||
// The command to execute
|
// The command type
|
||||||
// "move" - Move the rover in a direction, requires bearing
|
CommandType command = 1;
|
||||||
// "stash" - Stashes item at current location in rover inventory
|
|
||||||
// "repair" - Repairs the rover using an inventory object
|
|
||||||
// "recharge" - Waits a tick to add more charge to the rover
|
|
||||||
// "broadcast" - Broadcasts a message to nearby rovers
|
|
||||||
string command = 1;
|
|
||||||
|
|
||||||
|
oneof data {
|
||||||
// A bearing, example: NE
|
// A bearing, example: NE
|
||||||
|
// Used with MOVE
|
||||||
string bearing = 2;
|
string bearing = 2;
|
||||||
|
|
||||||
// A simple message, must be composed of printable ASCII glyphs (32-126)
|
// A simple message, must be composed of printable ASCII glyphs (32-126)
|
||||||
// maximum of three characters
|
// maximum of three characters
|
||||||
|
// Used with BROADCAST
|
||||||
bytes message = 3;
|
bytes message = 3;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
message CommandRequest {
|
message CommandRequest {
|
||||||
// The account to execute these commands
|
// The account to execute these commands
|
||||||
|
|
Loading…
Add table
Reference in a new issue