
/*
 * This file was automatically generated by sdbus-c++-xml2cpp; DO NOT EDIT!
 */

#ifndef __sdbuscpp__perftests_proxy_h__proxy__H__
#define __sdbuscpp__perftests_proxy_h__proxy__H__

#include <sdbus-c++/sdbus-c++.h>
#include <string>
#include <tuple>

namespace org {
namespace sdbuscpp {

class perftests_proxy
{
public:
    static constexpr const char* INTERFACE_NAME = "org.sdbuscpp.perftests";

protected:
    perftests_proxy(sdbus::IProxy& proxy)
        : proxy_(proxy)
    {
        proxy_.uponSignal("dataSignal").onInterface(INTERFACE_NAME).call([this](const std::string& data){ this->onDataSignal(data); });
    }

    ~perftests_proxy() = default;

    virtual void onDataSignal(const std::string& data) = 0;

public:
    void sendDataSignals(const uint32_t& numberOfSignals, const uint32_t& signalMsgSize)
    {
        proxy_.callMethod("sendDataSignals").onInterface(INTERFACE_NAME).withArguments(numberOfSignals, signalMsgSize);
    }

    std::string concatenateTwoStrings(const std::string& string1, const std::string& string2)
    {
        std::string result;
        proxy_.callMethod("concatenateTwoStrings").onInterface(INTERFACE_NAME).withArguments(string1, string2).storeResultsTo(result);
        return result;
    }

private:
    sdbus::IProxy& proxy_;
};

}} // namespaces

#endif
