#
# 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.
#

# We are only testing that generated code compiles, no correctness checking is done

exception moderate_disaster {
  1: i32 errorCode,
  2: string message
}

exception total_disaster {
  1: string message
  2: optional bool president_was_woken_up = false
}

struct struct_a {
  1: required i64 whatever
}

service a_serv {
    void voidfunc(),
    void void_with_1ex() throws(1: moderate_disaster err1)
    void void_with_2ex() throws(1: moderate_disaster err1, 2:total_disaster err2)

    string stringfunc()
    string stringfunc_1ex() throws(1: moderate_disaster err1)
    string stringfunc_2ex() throws(1: moderate_disaster err1, 2:total_disaster err2)

    i64 i64func()
    i64 i64func_1ex() throws(1: moderate_disaster err1)
    i64 i64func_2ex() throws(1: moderate_disaster err1, 2:total_disaster err2)

    list<string> list_of_strings_func()
    list<string> list_of_strings_func_1ex() throws(1: moderate_disaster err1)
    list<string> list_of_strings_func_2ex() throws(1: moderate_disaster err1, 2:total_disaster err2)

    map<i64,string> map_func()
    map<i64,string> map_func_1ex() throws(1: moderate_disaster err1)
    map<i64,string> map_func_2ex() throws(1: moderate_disaster err1, 2:total_disaster err2)

    struct_a struct_a_func()
    struct_a struct_a_func_1ex() throws(1: moderate_disaster err1)
    struct_a struct_a_func_2ex() throws(1: moderate_disaster err1, 2:total_disaster err2)

    void voidfunc_1int(1: i64 i),
    void void_with_1ex_1int(1: i64 i) throws(1: moderate_disaster err1)
    void void_with_2ex_1int(1: i64 i) throws(1: moderate_disaster err1, 2:total_disaster err2)

    string stringfunc_1int(1: i64 i)
    string stringfunc_1ex_1int(1: i64 i) throws(1: moderate_disaster err1)
    string stringfunc_2ex_1int(1: i64 i) throws(1: moderate_disaster err1, 2:total_disaster err2)

    i64 i64func_1int(1: i64 i)
    i64 i64func_1ex_1int(1: i64 i) throws(1: moderate_disaster err1)
    i64 i64func_2ex_1int(1: i64 i) throws(1: moderate_disaster err1, 2:total_disaster err2)

    list<string> list_of_strings_func_1int(1: i64 i)
    list<string> list_of_strings_func_1ex_1int(1: i64 i) throws(1: moderate_disaster err1)
    list<string> list_of_strings_func_2ex_1int(1: i64 i) throws(1: moderate_disaster err1, 2:total_disaster err2)

    map<i64,string> map_func_1int(1: i64 i)
    map<i64,string> map_func_1ex_1int(1: i64 i) throws(1: moderate_disaster err1)
    map<i64,string> map_func_2ex_1int(1: i64 i) throws(1: moderate_disaster err1, 2:total_disaster err2)

    struct_a struct_a_func_1int(1: i64 i)
    struct_a struct_a_func_1ex_1int(1: i64 i) throws(1: moderate_disaster err1)
    struct_a struct_a_func_2ex_1int(1: i64 i) throws(1: moderate_disaster err1, 2:total_disaster err2)

    void voidfunc_1int_1s(1: i64 i, 2: string s),
    void void_with_1ex_1int_1s(1: i64 i, 2: string s) throws(1: moderate_disaster err1)
    void void_with_2ex_1int_1s(1: i64 i, 2: string s) throws(1: moderate_disaster err1, 2:total_disaster err2)

    string stringfunc_1int_1s(1: i64 i, 2: string s)
    string stringfunc_1ex_1int_1s(1: i64 i, 2: string s) throws(1: moderate_disaster err1)
    string stringfunc_2ex_1int_1s(1: i64 i, 2: string s) throws(1: moderate_disaster err1, 2:total_disaster err2)

    i64 i64func_1int_1s(1: i64 i, 2: string s)
    i64 i64func_1ex_1int_1s(1: i64 i, 2: string s) throws(1: moderate_disaster err1)
    i64 i64func_2ex_1int_1s(1: i64 i, 2: string s) throws(1: moderate_disaster err1, 2:total_disaster err2)

    list<string> list_of_strings_func_1int_1s(1: i64 i, 2: string s)
    list<string> list_of_strings_func_1ex_1int_1s(1: i64 i, 2: string s) throws(1: moderate_disaster err1)
    list<string> list_of_strings_func_2ex_1int_1s(1: i64 i, 2: string s) throws(1: moderate_disaster err1, 2:total_disaster err2)

    map<i64,string> map_func_1int_1s(1: i64 i, 2: string s)
    map<i64,string> map_func_1ex_1int_1s(1: i64 i, 2: string s) throws(1: moderate_disaster err1)
    map<i64,string> map_func_2ex_1int_1s(1: i64 i, 2: string s) throws(1: moderate_disaster err1, 2:total_disaster err2)

    struct_a struct_a_func_1int_1s(1: i64 i, 2: string s)
    struct_a struct_a_func_1ex_1int_1s(1: i64 i, 2: string s) throws(1: moderate_disaster err1)
    struct_a struct_a_func_2ex_1int_1s(1: i64 i, 2: string s) throws(1: moderate_disaster err1, 2:total_disaster err2)

    struct_a struct_a_func_1struct_a(1: struct_a st)
}

service container_test_parent {
  void parent_only_func(1: set<i32> s)
}

service container_test extends container_test_parent {
  void child_only_func(1: set<i32> s)
}
