bool activate(bool force = false) { if (force) { // wipe if forced clear(); } // return if namespaces already present if (spaces.size()!=0) return true; // read namespace list from config file NameConfig conf; if (!conf.fromFile()) { double now = Time::now(); static double last_shown = now-10; if (now-last_shown>3) { last_shown = now; fprintf(stderr,"warning: YARP name server(s) not configured, ports will be anonymous\n"); fprintf(stderr,"warning: check your namespace and settings with 'yarp detect'\n"); } return false; } Bottle ns = conf.getNamespaces(); // loop through namespaces for (int i=0; i<ns.size(); i++) { ConstString n = ns.get(i).asString(); NameConfig conf2; // read configuration of individual namespace if (!conf2.fromFile(n.c_str())) { fprintf(stderr, "Could not find namespace %s\n", n.c_str()); continue; } String mode = conf2.getMode(); Contact address = conf2.getAddress().addName(n); if (mode=="yarp"||mode=="//") { // add a yarp namespace NameSpace *ns = new YarpNameSpace(address); spaces.push_back(ns); } else if (mode=="ros") { // add a ros namespace NameSpace *ns = new RosNameSpace(address); spaces.push_back(ns); } else if (mode=="local") { NameSpace *ns = new YarpDummyNameSpace; spaces.push_back(ns); } else { // shrug YARP_SPRINTF1(Logger::get(),error, "cannot deal with namespace of type %s", mode.c_str()); return false; } } // cache flags scan(); return true; }
bool activate(bool force = false) { if (force) { clear(); } if (spaces.size()!=0) return true; NameConfig conf; if (!conf.fromFile()) { return false; } Bottle ns = conf.getNamespaces(); for (int i=0; i<ns.size(); i++) { ConstString n = ns.get(i).asString(); //printf("NAMESPACE %s\n", n.c_str()); NameConfig conf2; if (!conf2.fromFile(n.c_str())) { fprintf(stderr, "Could not find namespace %s\n", n.c_str()); continue; } String mode = conf2.getMode(); Contact address = conf2.getAddress().toContact().addName(n); //printf("ADDRESS %s\n", address.toString().c_str()); if (mode=="yarp"||mode=="//") { NameSpace *ns = new YarpNameSpace(address); spaces.push_back(ns); } else if (mode=="ros") { NameSpace *ns = new RosNameSpace(address); spaces.push_back(ns); } else { YARP_SPRINTF1(Logger::get(),error, "cannot deal with namespace of type %s", mode.c_str()); return false; } } scan(); return true; }