LINUX.ORG.RU

protobuf - описать сетевые интерфейсы

 , ,


0

1

Приветствую

Раньше не имел дел с protobuf, теперь понадобилось вытягивать интерфейсы со всеми наиболее важными атрибутами. Создал вот такой proto-файл:

message PortRequest {
  string name = 1;
}

message PortReply {
  string name = 1;
  int32 ifindex = 2;
  int32 type = 3;
  bytes hw_address = 4;
  ...
}

message PortsReply {
  repeated PortReply Ports = 1;
}

service PortsService {
  rpc GetPort(stream PortRequest) returns (stream PortReply) {}
}

Хотелось бы еще добавить GetPorts для получения всех интерфейсов, но не уверен как это описать в схеме? Нужно ли добавлять новый request, или можно как-то использовать PortRequest?

Буду признателен за подсказки, спасибо!

★★

Последнее исправление: cruz7 (всего исправлений: 1)

может сделать только GetPorts, а GetPort будет его подмножеством. Поменять Request и Response соответственно (добавить repeated)

phoenix ★★★★
()
Ответ на: комментарий от phoenix

может сделать только GetPorts, а GetPort будет его подмножеством.

Не совсем понял, как сделать GetPort подмножеством? Покажите на примере.

Поменять Request и Response соответственно (добавить repeated)

Гм.. а зачем в request добавлять repeated?

cruz7 ★★
() автор топика
Последнее исправление: cruz7 (всего исправлений: 1)
Ответ на: комментарий от cruz7

ну смотри, ты хочешь GetPorts() чтобы получить все интерфейсы. Можно сделать так:

message PortRequest {
  repeated string names = 1;
  optional bool return_all = 2; // как вариант, можно просто вернуть все, если  name пустой
}

message Port {
  string name = 1;
  int32 ifindex = 2;
  int32 type = 3;
  bytes hw_address = 4;
  ...
}

message PortsReply {
  repeated Port ports = 1;
}

Теперь GetPorts({return_all=true}) вернет все, а GetPorts({name=eth0}) вернет eth0

phoenix ★★★★
()
Ответ на: комментарий от phoenix

это псевдосинтаксис, вдохновением которому послужил textproto, но идея вроде должна быть понятна?

Да, спасибо за снятие с тормоза :)

cruz7 ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.