blob: 42e7b6b457bb9e7a7a4f724c74c2a22d4c319112 [file] [log] [blame]
// Copyright 2018 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
syntax = "proto3";
package dockyard_proto;
// The dockyard service definition.
service Dockyard {
// Sends initial set up data.
rpc Init(InitRequest) returns (InitReply) {}
// Ask the Dockyard what the ID is for the given path.
rpc GetDockyardIdsForPaths(DockyardPaths) returns (DockyardIds) {}
// Sends a single JSON inspection message.
rpc SendInspectJson(stream InspectJson) returns (stream EmptyMessage) {}
// Sends a single sample.
rpc SendSample(stream RawSample) returns (stream EmptyMessage) {}
// Sends a list of samples.
rpc SendSamples(stream RawSamples) returns (stream EmptyMessage) {}
}
// Introduction from the Harvester to the Dockyard.
message InitRequest {
// Device name (e.g. a four word string).
string device_name = 1;
// Use `dockyard::DOCKYARD_VERSION` for this value.
uint32 version = 2;
// Current time on the device, in nanoseconds.
uint64 device_time_ns = 3;
// The Fuchsia OS revision (generally a git hash).
string fuchsia_version = 4;
}
// Introduction from the Dockyard to the Harvester
message InitReply {
// The `dockyard::DOCKYARD_VERSION`. The version will be checked by the
// Dockyard. Sending this version to the Harvester is for reporting in the
// log.
uint32 version = 1;
}
// A non-message. Used for stream protocols to say that nothing is returned.
message EmptyMessage {}
// A path is a colon separated label. E.g. "cpu:0:busy_time". Paths are
// converted to an ID to reduce cpu, memory, and bandwidth usage.
message DockyardPaths {
repeated string path = 1;
}
// A dockyard ID is an integer reference to a dockyard path (e.g. in a
// |DockyardPathMessage|).
message DockyardIds {
repeated uint64 id = 1;
}
// Sample data going from the Harvester to the Dockyard. This message defines
// a type for use by other messages. It is not intended to be used on its own.
message Sample {
uint64 key = 1;
uint64 value = 2;
}
// Sample data going from the Harvester to the Dockyard. A single sample with a
// time stamp.
// |time| is in nanoseconds.
message RawSample {
uint64 time = 1;
Sample sample = 2;
}
// Sample data going from the Harvester to the Dockyard. A list of samples with
// a common timestamp. This is an optimization over sending a burst of separate
// samples with `RawSample`.
// |time| is in nanoseconds.
message RawSamples {
uint64 time = 1;
repeated Sample sample = 2;
}
// Component inspection data in JSON format.
// |time| is in nanoseconds.
// |id| is a dockyard ID for a path, as returned by GetDockyardIdsForPaths()
// |json| is a JSON format utf-8 string.
message InspectJson {
uint64 time = 1;
uint64 dockyard_id = 2;
string json = 3;
}