// protoc --go_out=. --go_opt=paths=source_relative \
//	--go-grpc_out=. --go-grpc_opt=paths=source_relative \
//	observer.proto

syntax = "proto3";
package proto;
option go_package = "github.com/go-gost/plugin/observer/proto";

message ObserveRequest {
	repeated Event events = 1;
}

message Event {
	string kind = 1;
	string service = 2;
	string client = 3;
	string type = 4;
	Stats stats = 5;
	ServiceStatus status = 6;
}

message ServiceStatus {
	string state = 1;
	string msg = 2;
}

message Stats {
	uint64 totalConns = 1;
	uint64 currentConns = 2;
	uint64 inputBytes = 3;
	uint64 outputBytes = 4;
	uint64 totalErrs = 5;
}


message ObserveReply {
	bool ok = 1;
}


service Observer {
	rpc Observe(ObserveRequest) returns (ObserveReply);
}
