syntax = "proto3"; /* Файл содержит описание сервиса шины данных с необходимыми структурами. */ package parserin; option go_package = "./netapi"; // GoBus -- сервис шины данных service GoBus { // Public -- создаёт запись в открытом разделе хранилище rpc Public(PublicRequest) returns (DefaultResponse) {} // SendSync -- синхронный запрос в топик rpc SendSync(SyncRequest) returns (SyncResponse){} // Subscribe -- подписка по шаблону rpc Subscribe(SubscribeRequest) returns (stream SyncResponse){} // SubscribeBuffer -- подписка по шаблону с буфером на выход rpc SubscribeBuffer (BuffRequest) returns (stream BuffResponse){} // Get -- возвращает значения топиков по шаблону rpc Get(SubscribeRequest) returns (SyncResponse){} } // BuffRequest -- запрос на буферизованную подписку message BuffRequest{ string Sample = 1; // Шаблон топиков на подписку string ClientName = 2; // Уникальное имя клиента int32 MsgSumSizeLimit = 3; // Предел суммарного количества сообщений int32 MsgSaveSecondLimit = 4; // Предел в секундах как долго хранить буфер с момента последнего доступа } // BuffResponse -- ответ на буферизованную подписку message BuffResponse{ bool IsLost = 1; // Признак, что часть данных была потеряна bytes Msg = 2; // Сообщение из буфера } // GetRequest -- ответ на запрос топиков по шаблону message GetRequest{ repeated bytes Msg = 1; // Список сообщений в ответе } // SubscribeRequest -- запрос на подписку топиков по шаблону message SubscribeRequest{ string Sample = 1; // Шаблон топиков на подписку string ClientName = 2; // Уникальное имя клиента } // SyncRequest -- синхронный запрос в шину данных message SyncRequest{ int32 Source = 1; // Источник данных (0 -- клиент, другое -- реплика) string Topic = 2; // Где опубликовать запрос bytes Msg = 3; // Байтовое представление сообщения } // TopicMsg -- сообщение топика (внутри шины данных) message TopicMsg{ int32 Source = 1; // Источник данных (0 -- клиент, другое -- реплика) string Topic = 2; // Где опубликовать запрос bytes Msg = 3; // Байтовое представление сообщения } // SyncResponse -- ответ на синхронный запрос message SyncResponse{ bytes Msg = 1; // Содержимое ответа на синхроныый запрос } // PublicRequest -- запрос на публикацию сообщения message PublicRequest { int32 Source = 1; // Источник данных (0 -- клиент, другое -- для реплики) string Topic = 2; // Куда опубликовать сообщение bytes Msg = 3; // Байтовое представление сообщения string Uuid = 4; // Уникальная метка сообщения repeated int32 RepliesList = 5; // Список реплик, на которых сообщение уже опубликовано } // DefaultResponse -- возвращаемое значение по умолчанию (ничего не содержит) message DefaultResponse { }