syntax="proto2";
import "idl_options.proto";
option (idl_support) = true;
option cc_generic_services = true;
package test;

message EchoRequest {
    required string message = 1;
    optional int32 code = 2;
    optional bool close_fd = 3;
    optional int32 sleep_us = 4;
    optional int32 server_fail = 5;
};

message EchoResponse {
    required string message = 1;
    repeated int32 code_list = 2;
};

message ComboRequest {
    repeated EchoRequest requests = 1;
};

message BytesRequest {
    required bytes databytes = 1;
};

message BytesResponse {
    required bytes databytes = 1;
};

message ComboResponse {
    repeated EchoResponse responses = 1;
};

service EchoService {
    rpc Echo(EchoRequest) returns (EchoResponse);
    rpc ComboEcho(ComboRequest) returns (ComboResponse);
    rpc BytesEcho1(BytesRequest) returns (BytesResponse);
    rpc BytesEcho2(BytesRequest) returns (BytesResponse);
}

message HttpRequest {}
message HttpResponse {}
service DownloadService {
    rpc Download(HttpRequest) returns (HttpResponse);
    rpc DownloadFailed(HttpRequest) returns (HttpResponse);
}

service UserNamingService {
    rpc ListNames(HttpRequest) returns (HttpResponse);
    rpc Touch(HttpRequest) returns (HttpResponse);
};

enum State0 {
    STATE0_NUM_0 = 0;
    STATE0_NUM_1 = 1;
    STATE0_NUM_2 = 2;
};

enum State1 {
    STATE1_NUM_0 = 0;
    STATE1_NUM_1 = 1;
};

message Message1 {
    required State0 stat = 1;
};
message Message2 {
    required State1 stat = 1;
};
