void ResourceWindow::onRefresh() { ErrorLogger* logger = ErrorLogger::Instance(); if(m_pManager->updateResource(m_pComputer->getName())) { YarpBroker broker; broker.init(); string strServer = m_pComputer->getName(); if(strServer[0] != '/') strServer = string("/") + strServer; // Processes list ProcessContainer processes; if(broker.getAllProcesses(strServer.c_str(), processes)) { m_pComputer->getProcesses().clear(); for(unsigned int i=0; i<processes.size(); i++) m_pComputer->getProcesses().push_back(processes[i]); } else logger->addError(broker.error()); updateWidget(); } m_pParent->reportErrors(); }
bool Manager::updateResource(GenericResource* resource) { YarpBroker broker; broker.init(); Computer* comp = dynamic_cast<Computer*>(resource); if(!comp || !strlen(comp->getName())) return false; if(compareString(comp->getName(), "localhost")) return false; yarp::os::SystemInfoSerializer info; string strServer = comp->getName(); if(strServer[0] != '/') strServer = string("/") + strServer; if(!broker.getSystemInfo(strServer.c_str(), info)) { logger->addError(broker.error()); comp->setAvailability(false); } else { comp->setAvailability(true); comp->getMemory().setTotalSpace(info.memory.totalSpace*1024); comp->getMemory().setFreeSpace(info.memory.freeSpace*1024); comp->getStorage().setTotalSpace(info.storage.totalSpace*1024); comp->getStorage().setFreeSpace(info.storage.freeSpace*1024); //comp->getNetwork().setIP4(info.network.ip4.c_str()); //comp->getNetwork().setIP6(info.network.ip6.c_str()); //comp->getNetwork().setMAC(info.network.mac.c_str()); comp->getProcessor().setArchitecture(info.processor.architecture.c_str()); comp->getProcessor().setCores(info.processor.cores); comp->getProcessor().setSiblings(info.processor.siblings); comp->getProcessor().setFrequency(info.processor.frequency); comp->getProcessor().setModel(info.processor.model.c_str()); LoadAvg load; load.loadAverageInstant = (double)info.load.cpuLoadInstant; load.loadAverage1 = info.load.cpuLoad1; load.loadAverage5 = info.load.cpuLoad5; load.loadAverage15 = info.load.cpuLoad15; comp->getProcessor().setCPULoad(load); comp->getPlatform().setName(info.platform.name.c_str()); comp->getPlatform().setDistribution(info.platform.distribution.c_str()); comp->getPlatform().setRelease(info.platform.release.c_str()); } return true; }
bool Manager::updateResources(void) { YarpBroker broker; broker.init(); // finding all available yarp ports vector<string> ports; broker.getAllPorts(ports); ResourcePContainer allresources = knowledge.getResources(); for(unsigned int i=0; i<allresources.size(); i++) { Computer* comp = dynamic_cast<Computer*>(allresources[i]); if(updateResource(comp)) { //set all as unavailable for(int i=0; i<comp->peripheralCount(); i++) { ResYarpPort* res = dynamic_cast<ResYarpPort*>(&comp->getPeripheralAt(i)); if(res) res->setAvailability(false); } // adding all available yarp ports as peripherals for(unsigned int i=0; i<ports.size(); i++) { ResYarpPort resport; resport.setName(ports[i].c_str()); resport.setPort(ports[i].c_str()); bool bfound = false; for(int i=0; i<comp->peripheralCount(); i++) { ResYarpPort* res = dynamic_cast<ResYarpPort*>(&comp->getPeripheralAt(i)); if(res && (string(res->getName()) == string(resport.getName()))) { res->setAvailability(true); bfound = true; break; } } if(!bfound) comp->addPeripheral(resport); } } } // end of for return true; }