// Generated File -- DO NOT MODIFY. #pragma once #include #include #include #include #include "{{file}}.h" #include "{{file}}.client.h" {% if package != None %} namespace {{package.cpp_namespace()}} { {% endif %} {% for interface in interfaces %} class {{interface.name}}ServerBase { public: {{interface.name}}ServerBase(z_cap_t {{interface.name}}_cap) : endpoint_({{interface.name}}_cap) {} {{interface.name}}ServerBase(const {{interface.name}}ServerBase&) = delete; {{interface.name}}ServerBase({{interface.name}}ServerBase&&) = delete; virtual ~{{interface.name}}ServerBase(); glcr::ErrorOr CreateClientCap(); glcr::ErrorOr<{{interface.name}}Client> CreateClient(); [[nodiscard]] Thread RunServer(); {% for method in interface.methods %} {% if method.request == None %} [[nodiscard]] virtual glcr::Status Handle{{method.name}}({{method.response}}&) = 0; {% elif method.response == None %} [[nodiscard]] virtual glcr::Status Handle{{method.name}}(const {{method.request}}&) = 0; {% else %} [[nodiscard]] virtual glcr::Status Handle{{method.name}}(const {{method.request}}&, {{method.response}}&) = 0; {% endif %} {% endfor %} private: z_cap_t endpoint_; friend void {{interface.name}}ServerBaseThreadBootstrap(void*); void ServerThread(); [[nodiscard]] glcr::Status HandleRequest(const glcr::ByteBuffer& request, const glcr::CapBuffer& req_caps, glcr::ByteBuffer& response, uint64_t& resp_length, glcr::CapBuffer& resp_caps); }; {% endfor %} {% if package != None %} } // namepace {{package.cpp_namespace()}} {% endif %}