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

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

message RegisterRequest {
	Service service = 1;
}

message RegisterReply {
	bool ok = 1;
 }

message RenewRequest {
	Service service = 1;
}

message RenewReply {
	bool ok = 1;
}

message DeregisterRequest {
	Service service = 1;
}

message DeregisterReply { 
	bool ok = 1;
}

message Service {
	string id = 1;
	string name = 2;
	string node = 3;
	string network = 4;
	string address = 5;
}

message GetServiceRequest {
	string name = 1;
}

message GetServiceReply {
	repeated Service services = 1; 
}

service SD {
	rpc Register(RegisterRequest) returns (RegisterReply);
	rpc Deregister(DeregisterRequest) returns (DeregisterReply);
	rpc Renew(RenewRequest) returns (RenewReply);
	rpc Get(GetServiceRequest) returns (GetServiceReply);
}
