
Because of a side-effect import, we have the possibility of pulling in several unnecessary packages that are used by the plugin and not at runtime to implement protobuf structures. Setting these imports to `weak` prevents this from happening, reducing the total import set, reducing memory usage and binary size. Signed-off-by: Stephen J Day <stephen.day@docker.com>
57 lines
1.8 KiB
Protocol Buffer
57 lines
1.8 KiB
Protocol Buffer
syntax = "proto3";
|
|
|
|
package containerd.services.events.v1;
|
|
|
|
import weak "github.com/containerd/containerd/protobuf/plugin/fieldpath.proto";
|
|
import weak "gogoproto/gogo.proto";
|
|
import "google/protobuf/any.proto";
|
|
import "google/protobuf/empty.proto";
|
|
import "google/protobuf/timestamp.proto";
|
|
|
|
option go_package = "github.com/containerd/containerd/api/services/events/v1;events";
|
|
|
|
service Events {
|
|
// Publish an event to a topic.
|
|
//
|
|
// The event will be packed into a timestamp envelope with the namespace
|
|
// introspected from the context. The envelope will then be dispatched.
|
|
rpc Publish(PublishRequest) returns (google.protobuf.Empty);
|
|
|
|
// Forward sends an event that has already been packaged into an envelope
|
|
// with a timestamp and namespace.
|
|
//
|
|
// This is useful if earlier timestamping is required or when fowarding on
|
|
// behalf of another component, namespace or publisher.
|
|
rpc Forward(ForwardRequest) returns (google.protobuf.Empty);
|
|
|
|
// Subscribe to a stream of events, possibly returning only that match any
|
|
// of the provided filters.
|
|
//
|
|
// Unlike many other methods in containerd, subscribers will get messages
|
|
// from all namespaces unless otherwise specified. If this is not desired,
|
|
// a filter can be provided in the format 'namespace==<namespace>' to
|
|
// restrict the received events.
|
|
rpc Subscribe(SubscribeRequest) returns (stream Envelope);
|
|
}
|
|
|
|
message PublishRequest {
|
|
string topic = 1;
|
|
google.protobuf.Any event = 2;
|
|
}
|
|
|
|
message ForwardRequest {
|
|
Envelope envelope = 1;
|
|
}
|
|
|
|
message SubscribeRequest {
|
|
repeated string filters = 1;
|
|
}
|
|
|
|
message Envelope {
|
|
option (containerd.plugin.fieldpath) = true;
|
|
google.protobuf.Timestamp timestamp = 1 [(gogoproto.stdtime) = true, (gogoproto.nullable) = false];
|
|
string namespace = 2;
|
|
string topic = 3;
|
|
google.protobuf.Any event = 4;
|
|
}
|