RTT::base::InputPortInterface* Task::createInputPort(::std::string const & port_name, ::std::string const & type_name){ RTT::base::PortInterface *pi = getPort(port_name); if(pi){ // Port exists. Returns success. log(Info) << "Port " << port_name << " is already registered." << endlog(); return 0; } RTT::types::TypeInfo* type = getType(type_name); if (!type){ return NULL; } /* Create input port */ RTT::base::InputPortInterface *in_port = type->inputPort(port_name); if (!in_port) { log(Error) << "An error occurred during input port generation." << endlog(); return NULL; } ports()->addEventPort(in_port->getName(), *(in_port) ); return in_port; }
bool Logger::createLoggingPort(const std::string& portname, const std::string& typestr, std::vector<logger::StreamMetadata> const& metadata) { RTT::types::TypeInfoRepository::shared_ptr ti = RTT::types::TypeInfoRepository::Instance(); RTT::types::TypeInfo* type = ti->type(typestr); if (! type) { cerr << "cannot find " << typestr << " in the type info repository" << endl; return false; } RTT::base::PortInterface *pi = ports()->getPort(portname); if(pi) { cerr << "port with name " << portname << " already exists" << endl; return false; } RTT::base::InputPortInterface *ip= type->inputPort(portname); return addLoggingPort(ip, portname, metadata); }