-
Ramin Yaghoubzadeh authored
ipaaca -> ipaaca.protobuf 2. C++ version, early development stage (committing as a backup)
Ramin Yaghoubzadeh authoredipaaca -> ipaaca.protobuf 2. C++ version, early development stage (committing as a backup)
ipaaca-test-main.cc 3.41 KiB
#include <ipaaca.h>
#include <typeinfo>
//#include <rsc/logging/Logger.h>
//#include <rsc/logging/LoggerFactory.h>
// //rsc::logging::LoggerFactory::getInstance().reconfigure(rsc::logging::Logger::LEVEL_ALL);
#ifdef MAKE_RECEIVER
//boost::mutex mtx;
using namespace ipaaca;
class Testo {
protected:
std::string _name;
public:
inline Testo(const std::string& name="Testo"): _name(name) { }
inline void handleIUEvent(EventPtr event)
{
std::cout << _name << " received a ";
std::string type = event->getType();
if (type == "ipaaca::IUPayloadUpdate") {
std::cout << *boost::static_pointer_cast<IUPayloadUpdate>(event->getData()) << std::endl;
} else if (type == "ipaaca::IULinkUpdate") {
std::cout << *boost::static_pointer_cast<IULinkUpdate>(event->getData()) << std::endl;
} else {
std::cout << type << " (Unhandled type!)" << std::endl;
}
}
};
int main() {
initialize_ipaaca_rsb();
ListenerPtr listener = Factory::getInstance().createListener( Scope("/tutorial/converter"));
Testo t("TESTO");
HandlerPtr event_handler = HandlerPtr(new EventFunctionHandler(boost::bind(&Testo::handleIUEvent, boost::ref(t), _1)));
listener->addHandler( event_handler );
while(true) {
boost::this_thread::sleep(boost::posix_time::milliseconds(100));
}
return EXIT_SUCCESS;
}
#else
#ifdef MAKE_SENDER
using namespace ipaaca;
int main() {
initialize_ipaaca_rsb();
//Informer<ipaaca::IUPayloadUpdate>::Ptr pinformer = Factory::getInstance().createInformer<ipaaca::IUPayloadUpdate> ( Scope("/tutorial/converter"));
//Informer<ipaaca::IULinkUpdate>::Ptr linformer = Factory::getInstance().createInformer<ipaaca::IULinkUpdate> ( Scope("/tutorial/converter"));
Informer<AnyType>::Ptr informer = Factory::getInstance().createInformer<AnyType> ( Scope("/tutorial/converter"));
IUPayloadUpdate* pup = new ipaaca::IUPayloadUpdate();
Informer<ipaaca::IUPayloadUpdate>::DataPtr pdata(pup);
pup->uid = "2000";
pup->revision = 3;
pup->writer_name = "Comp1_OB";
pup->is_delta = true;
pup->new_items["new_key"] = "new_value";
pup->new_items["another_key"] = "some_info";
pup->keys_to_remove.push_back("old_key");
informer->publish(pdata);
IULinkUpdate* lup = new ipaaca::IULinkUpdate();
Informer<ipaaca::IULinkUpdate>::DataPtr ldata(lup);
lup->uid = "2001";
lup->revision = 4;
lup->writer_name = "Comp2_IB";
lup->is_delta = true;
lup->new_links["SLL"].insert("2000");
lup->new_links["grin"].insert("1002");
lup->links_to_remove["grin"].insert("1001");
informer->publish(ldata);
std::cout << "Done." << std::endl;
return EXIT_SUCCESS;
}
#else
//
// TESTS
//
using namespace ipaaca;
int main() {
//try{
initialize_ipaaca_rsb();
IU::ref iu = IU::create();
std::cout << "payload.get(\"TEST\") = \"" << iu->payload.get("TEST") << "\"" << std::endl;
std::cout << "payload[\"TEST\"] = \"" << (std::string) iu->payload["TEST"] << "\"" << std::endl;
iu->payload["TEST"] = "123.5-WAS-SET";
std::cout << "payload[\"TEST\"] = \"" << (std::string) iu->payload["TEST"] << "\"" << std::endl;
std::string s = "The string \"" + iu->payload["TEST"].to_str() + "\" is the new value.";
std::cout << "Concatenation test: " << s << std::endl;
std::cout << "Interpreted as long value: " << iu->payload["TEST"].to_int() << std::endl;
std::cout << "Interpreted as double value: " << iu->payload["TEST"].to_float() << std::endl;
//} catch (std::exception& e) {
// std::cout << e.what() << std::endl;
//}
}
#endif
#endif