// protoc -I echo/ echo/*.proto --go_out=plugins=grpc:echo

syntax = "proto3";

option go_package = "github.com/opencord/voltha-protos/go/afrouter";

package afrouter;

// For logging
import "voltha_protos/common.proto";

service Configuration {
   	rpc SetConnection (Conn) returns (Result) {}
	rpc SetAffinity(Affinity) returns (Result) {}
	rpc GetGoroutineCount(Empty) returns (Count) {}
	rpc UpdateLogLevel(common.Logging) returns (Empty) {}
	rpc GetLogLevels(common.LoggingComponent) returns (common.Loggings) {}
}

message Result {
	bool success = 1;
	string error = 2;
	string info = 3;
}

message Empty {
}

message Count {
    uint32 count = 1;
}

message Conn {
	string server = 1;
	string pkg = 2;
	string svc = 3;
	string cluster = 4;
	string backend = 5;
	string connection = 6;
	string addr = 7;
	uint64 port = 8;
}

message Affinity {
	string router = 1;
	string route = 2;
	string cluster = 3;
	string backend = 4;
	string id = 5;
}

