// Licensed to the Apache Software Foundation (ASF) under one or more
// contributor license agreements.  See the NOTICE file distributed with
// this work for additional information regarding copyright ownership.
// The ASF licenses this file to You under the Apache License, Version 2.0
// (the "License"); you may not use this file except in compliance with
// the License.  You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.


package cse.basic;

message BasicRequest {
    required AllBasicTypes request = 1;
}

message BasicResponse {
    required AllBasicTypes request = 1;
}

message AllBasicTypes {
    required double tdouble = 1;
    required float tfloat = 2;
    required int32 tint32 = 3;
    required int64 tint64 = 4;
    required uint32 tuint32 = 5;
    required uint64 tuint64 = 6;
    required sint32 tsint32 = 7;
    required sint64 tsint64 = 8;
    required fixed32 tfixed32 = 9;
    required fixed64 tfixed64 = 10;
    required sfixed32 tsfixed32 = 11;
    required sfixed64 tsfixed64 = 12;
    required bool tbool = 13;
    required string tstring = 14;
    required bytes tbytes = 15;
    
    enum EnumType {
        ONE = 0;
        TWO = 1;
    }
    required EnumType enumType = 16;
    
    // map<string, string> mapType = 17;
    //message MapFieldEntry {
        //required string key = 1;
        //required string value = 2;
    //}
    //repeated MapFieldEntry mapType = 17;

    repeated string tstringList = 17;
}

service Basic {
    rpc schalarType(BasicRequest) returns(BasicResponse);
}
