frb_search.protoΒΆ
syntax = "proto3";
package frb.search.v1;
// Currently, there isn't much documentation for RPCs.
// Comments in the .proto file are all we've got!
// If you're reading this, please feel free to make improvements :)
// Service definition
service FrbSearch {
// Returns the current status of the search engine
rpc GetStatus (GetStatusRequest) returns (GetStatusResponse);
// Returns metadata as a YAML string (empty if metadata not yet available)
rpc GetMetadata (GetMetadataRequest) returns (GetMetadataResponse);
// Write files to disk for specified beams and time range
rpc WriteFiles (WriteFilesRequest) returns (WriteFilesResponse);
// Subscribe to a stream of filenames. The connection can be closed by the client
// at any time, or by the server on shutdown or exception.
rpc SubscribeFiles (SubscribeFilesRequest) returns (stream SubscribeFilesResponse);
}
// Request message (currently empty, but extensible)
message GetStatusRequest {}
// Response message containing status metrics
message GetStatusResponse {
int64 num_connections = 1; // Total number of active TCP connections (summed over receivers)
int64 num_bytes = 2; // Total bytes received (summed over receivers)
int64 rb_start = 3; // First frame_id in ring buffer
int64 rb_reaped = 4; // (Last reaped frame_id) + 1
int64 rb_finalized = 5; // (Last finalized frame_id) + 1
int64 rb_end = 6; // (Last frame_id in ring buffer) + 1
int64 num_free_frames = 7; // Number of available frames in AssembledFrameAllocator
}
// Request message for GetMetadata
message GetMetadataRequest {
bool verbose = 1; // If true, include comments explaining each field
}
// Response message for GetMetadata
message GetMetadataResponse {
string yaml_string = 1; // Empty string if metadata not yet available
}
// Request message for WriteFiles
message WriteFilesRequest {
repeated int64 beams = 1; // List of beam IDs to write
int64 min_time_chunk_index = 2; // First time chunk index (inclusive)
int64 max_time_chunk_index = 3; // Last time chunk index (inclusive)
string filename_pattern = 4; // Pattern with (BEAM) and (CHUNK) placeholders
}
// Response message for WriteFiles
message WriteFilesResponse {
repeated string filename_list = 1; // List of filenames that will be written
}
// Request message for SubscribeFiles (currently empty, but extensible)
message SubscribeFilesRequest {}
// Response message for SubscribeFiles (streamed).
// An empty error_message indicates success; non-empty indicates an error.
message SubscribeFilesResponse {
string filename = 1; // A single filename (valid only if error_message is empty)
string error_message = 2; // Empty string indicates success; non-empty indicates error
}