bool add(const char *name, yarp::os::Searchable& config) { //printf("ADDING %s\n", config.toString().c_str()); PolyDriver *pd = new PolyDriver(); YARP_ASSERT (pd!=NULL); bool result = pd->open(config); if (!result) { delete pd; return false; } drivers.push_back(pd); names.push_back(ConstString(name)); IService *service = NULL; pd->view(service); bool backgrounded = true; if (service!=NULL) { backgrounded = service->startService(); if (backgrounded) { // we don't need to poll this, so forget about the // service interface printf("group: service backgrounded\n"); service = NULL; } } needDrive.push_back(!backgrounded); needDriveSummary = needDriveSummary || (!backgrounded); Drivers::factory().add(new DriverLinkCreator(name,*pd)); return true; }
void add(DriverCreator *creator) { if (creator!=NULL) { delegates.push_back(creator); } }