16#include <yarp/os/idl/WireTypes.h> 
   19        public yarp::os::Portable
 
   23    bool write(yarp::os::ConnectionWriter& connection) 
const override;
 
   24    bool read(yarp::os::ConnectionReader& connection) 
override;
 
 
   38    yarp::os::idl::WireWriter writer(connection);
 
   39    if (!writer.writeListHeader(2)) {
 
   42    if (!writer.writeTag(
"get_answer", 1, 2)) {
 
 
   50    yarp::os::idl::WireReader reader(connection);
 
   51    if (!reader.readListReturn()) {
 
 
   62        public yarp::os::Portable
 
   66    bool write(yarp::os::ConnectionWriter& connection) 
const override;
 
   67    bool read(yarp::os::ConnectionReader& connection) 
override;
 
 
   77        m_rightAnswer{rightAnswer}
 
 
   84    yarp::os::idl::WireWriter writer(connection);
 
   85    if (!writer.writeListHeader(3)) {
 
   88    if (!writer.writeTag(
"set_answer", 1, 2)) {
 
 
   99    yarp::os::idl::WireReader reader(connection);
 
  100    if (!reader.readListReturn()) {
 
 
  111        public yarp::os::Portable
 
  115    bool write(yarp::os::ConnectionWriter& connection) 
const override;
 
  116    bool read(yarp::os::ConnectionReader& connection) 
override;
 
 
  133    yarp::os::idl::WireWriter writer(connection);
 
  134    if (!writer.writeListHeader(3)) {
 
  137    if (!writer.writeTag(
"add_int", 1, 2)) {
 
  140    if (!writer.writeI32(
m_x)) {
 
 
  148    yarp::os::idl::WireReader reader(connection);
 
  149    if (!reader.readListReturn()) {
 
 
  160        public yarp::os::Portable
 
  164    bool write(yarp::os::ConnectionWriter& connection) 
const override;
 
  165    bool read(yarp::os::ConnectionReader& connection) 
override;
 
 
  179    yarp::os::idl::WireWriter writer(connection);
 
  180    if (!writer.writeListHeader(1)) {
 
  183    if (!writer.writeTag(
"start", 1, 1)) {
 
 
  191    yarp::os::idl::WireReader reader(connection);
 
  192    if (!reader.readListReturn()) {
 
 
  203        public yarp::os::Portable
 
  207    bool write(yarp::os::ConnectionWriter& connection) 
const override;
 
  208    bool read(yarp::os::ConnectionReader& connection) 
override;
 
 
  222    yarp::os::idl::WireWriter writer(connection);
 
  223    if (!writer.writeListHeader(1)) {
 
  226    if (!writer.writeTag(
"stop", 1, 1)) {
 
 
  234    yarp::os::idl::WireReader reader(connection);
 
  235    if (!reader.readListReturn()) {
 
 
  246        public yarp::os::Portable
 
  250    bool write(yarp::os::ConnectionWriter& connection) 
const override;
 
  251    bool read(yarp::os::ConnectionReader& connection) 
override;
 
 
  265    yarp::os::idl::WireWriter writer(connection);
 
  266    if (!writer.writeListHeader(2)) {
 
  269    if (!writer.writeTag(
"is_running", 1, 2)) {
 
 
  277    yarp::os::idl::WireReader reader(connection);
 
  278    if (!reader.readListReturn()) {
 
 
  291    yarp().setOwner(*
this);
 
 
  297    if (!
yarp().canWrite()) {
 
  298        yError(
"Missing server method '%s'?", 
"std::int32_t IRpcServer::get_answer()");
 
  300    bool ok = 
yarp().write(helper, helper);
 
 
  307    if (!
yarp().canWrite()) {
 
  308        yError(
"Missing server method '%s'?", 
"bool IRpcServer::set_answer(const std::int32_t rightAnswer)");
 
  310    bool ok = 
yarp().write(helper, helper);
 
 
  317    if (!
yarp().canWrite()) {
 
  318        yError(
"Missing server method '%s'?", 
"std::int32_t IRpcServer::add_int(const std::int32_t x)");
 
  320    bool ok = 
yarp().write(helper, helper);
 
 
  327    if (!
yarp().canWrite()) {
 
  328        yError(
"Missing server method '%s'?", 
"bool IRpcServer::start()");
 
  330    bool ok = 
yarp().write(helper, helper);
 
 
  337    if (!
yarp().canWrite()) {
 
  338        yError(
"Missing server method '%s'?", 
"bool IRpcServer::stop()");
 
  340    bool ok = 
yarp().write(helper, helper);
 
 
  347    if (!
yarp().canWrite()) {
 
  348        yError(
"Missing server method '%s'?", 
"bool IRpcServer::is_running()");
 
  350    bool ok = 
yarp().write(helper, helper);
 
 
  357    bool showAll = (functionName == 
"--all");
 
  358    std::vector<std::string> helpString;
 
  360        helpString.emplace_back(
"*** Available commands:");
 
  361        helpString.emplace_back(
"get_answer");
 
  362        helpString.emplace_back(
"set_answer");
 
  363        helpString.emplace_back(
"add_int");
 
  364        helpString.emplace_back(
"start");
 
  365        helpString.emplace_back(
"stop");
 
  366        helpString.emplace_back(
"is_running");
 
  367        helpString.emplace_back(
"help");
 
  369        if (functionName == 
"get_answer") {
 
  370            helpString.emplace_back(
"std::int32_t get_answer() ");
 
  371            helpString.emplace_back(
"Get answer from server ");
 
  372            helpString.emplace_back(
"@return the answer ");
 
  374        if (functionName == 
"set_answer") {
 
  375            helpString.emplace_back(
"bool set_answer(const std::int32_t rightAnswer) ");
 
  376            helpString.emplace_back(
"Set value for future answers. ");
 
  377            helpString.emplace_back(
"@param rightAnswer new answer ");
 
  378            helpString.emplace_back(
"@return true if connection was successful ");
 
  380        if (functionName == 
"add_int") {
 
  381            helpString.emplace_back(
"std::int32_t add_int(const std::int32_t x) ");
 
  382            helpString.emplace_back(
"Add one integer to future answers. ");
 
  383            helpString.emplace_back(
"@param x value to add ");
 
  384            helpString.emplace_back(
"@return new value ");
 
  386        if (functionName == 
"start") {
 
  387            helpString.emplace_back(
"bool start() ");
 
  388            helpString.emplace_back(
"Start service ");
 
  389            helpString.emplace_back(
"@return true if service started correctly ");
 
  391        if (functionName == 
"stop") {
 
  392            helpString.emplace_back(
"bool stop() ");
 
  393            helpString.emplace_back(
"Stop service ");
 
  394            helpString.emplace_back(
"@return true if service stopped correctly ");
 
  396        if (functionName == 
"is_running") {
 
  397            helpString.emplace_back(
"bool is_running() ");
 
  398            helpString.emplace_back(
"Check is service is running ");
 
  399            helpString.emplace_back(
"@return true/false if service is/is not running ");
 
  401        if (functionName == 
"help") {
 
  402            helpString.emplace_back(
"std::vector<std::string> help(const std::string& functionName = \"--all\")");
 
  403            helpString.emplace_back(
"Return list of available commands, or help message for a specific function");
 
  404            helpString.emplace_back(
"@param functionName name of command for which to get a detailed description. If none or '--all' is provided, print list of available commands");
 
  405            helpString.emplace_back(
"@return list of strings (one string per line)");
 
  408    if (helpString.empty()) {
 
  409        helpString.emplace_back(
"Command not found");
 
 
  417    yarp::os::idl::WireReader reader(connection);
 
  418    reader.expectAccept();
 
  419    if (!reader.readListHeader()) {
 
  424    std::string tag = reader.readTag();
 
  425    bool direct = (tag == 
"__direct__");
 
  427        tag = reader.readTag();
 
  429    while (!reader.isError()) {
 
  430        if (tag == 
"get_answer") {
 
  432            yarp::os::idl::WireWriter writer(reader);
 
  433            if (!writer.isNull()) {
 
  434                if (!writer.writeListHeader(1)) {
 
  444        if (tag == 
"set_answer") {
 
  445            std::int32_t rightAnswer;
 
  446            if (!reader.readI32(rightAnswer)) {
 
  451            yarp::os::idl::WireWriter writer(reader);
 
  452            if (!writer.isNull()) {
 
  453                if (!writer.writeListHeader(1)) {
 
  463        if (tag == 
"add_int") {
 
  465            if (!reader.readI32(
x)) {
 
  470            yarp::os::idl::WireWriter writer(reader);
 
  471            if (!writer.isNull()) {
 
  472                if (!writer.writeListHeader(1)) {
 
  482        if (tag == 
"start") {
 
  484            yarp::os::idl::WireWriter writer(reader);
 
  485            if (!writer.isNull()) {
 
  486                if (!writer.writeListHeader(1)) {
 
  498            yarp::os::idl::WireWriter writer(reader);
 
  499            if (!writer.isNull()) {
 
  500                if (!writer.writeListHeader(1)) {
 
  510        if (tag == 
"is_running") {
 
  512            yarp::os::idl::WireWriter writer(reader);
 
  513            if (!writer.isNull()) {
 
  514                if (!writer.writeListHeader(1)) {
 
  525            std::string functionName;
 
  526            if (!reader.readString(functionName)) {
 
  527                functionName = 
"--all";
 
  529            auto help_strings = 
help(functionName);
 
  530            yarp::os::idl::WireWriter writer(reader);
 
  531            if (!writer.isNull()) {
 
  532                if (!writer.writeListHeader(2)) {
 
  535                if (!writer.writeTag(
"many", 1, 0)) {
 
  538                if (!writer.writeListBegin(BOTTLE_TAG_INT32, 
static_cast<uint32_t
>(help_strings.size()))) {
 
  541                for (
const auto& help_string : help_strings) {
 
  542                    if (!writer.writeString(help_string)) {
 
  546                if (!writer.writeListEnd()) {
 
  553        if (reader.noMore()) {
 
  557        std::string next_tag = reader.readTag();
 
  558        if (next_tag == 
"") {
 
  561        tag.append(
"_").append(next_tag);
 
 
IRpcServer_add_int_helper(const std::int32_t x)
 
bool write(yarp::os::ConnectionWriter &connection) const override
 
bool read(yarp::os::ConnectionReader &connection) override
 
static thread_local std::int32_t s_return_helper
 
bool read(yarp::os::ConnectionReader &connection) override
 
bool write(yarp::os::ConnectionWriter &connection) const override
 
static thread_local std::int32_t s_return_helper
 
IRpcServer_get_answer_helper()
 
IRpcServer_is_running_helper()
 
bool read(yarp::os::ConnectionReader &connection) override
 
bool write(yarp::os::ConnectionWriter &connection) const override
 
static thread_local bool s_return_helper
 
std::int32_t m_rightAnswer
 
IRpcServer_set_answer_helper(const std::int32_t rightAnswer)
 
bool write(yarp::os::ConnectionWriter &connection) const override
 
bool read(yarp::os::ConnectionReader &connection) override
 
static thread_local bool s_return_helper
 
bool write(yarp::os::ConnectionWriter &connection) const override
 
IRpcServer_start_helper()
 
bool read(yarp::os::ConnectionReader &connection) override
 
static thread_local bool s_return_helper
 
bool read(yarp::os::ConnectionReader &connection) override
 
bool write(yarp::os::ConnectionWriter &connection) const override
 
static thread_local bool s_return_helper
 
virtual bool stop()
Stop service.
 
virtual bool set_answer(const std::int32_t rightAnswer)
Set value for future answers.
 
virtual std::int32_t get_answer()
Get answer from server.
 
virtual std::int32_t add_int(const std::int32_t x)
Add one integer to future answers.
 
virtual bool is_running()
Check is service is running.
 
virtual std::vector< std::string > help(const std::string &functionName="--all")
 
bool read(yarp::os::ConnectionReader &connection) override
 
virtual bool start()
Start service.
 
Copyright (C) 2008 RobotCub Consortium.