void COutputHandler::finish() { std::set< COutputInterface *>::iterator it = mInterfaces.begin(); std::set< COutputInterface *>::iterator end = mInterfaces.end(); // This hack is necessary as the reverse iterator behaves strangely // under Visual C++ 6.0, i.e., removing an object advances the iterator. std::vector< COutputInterface * > ToBeRemoved; for (; it != end; ++it) { (*it)->finish(); // CTimesSeries and CReport are only used once. if (dynamic_cast< CReport * >(*it) != NULL || dynamic_cast< CTimeSeries * >(*it) != NULL) ToBeRemoved.push_back(*it); } std::vector< COutputInterface * >::iterator itRemove = ToBeRemoved.begin(); std::vector< COutputInterface * >::iterator endRemove = ToBeRemoved.end(); for (; itRemove != endRemove; ++itRemove) removeInterface(*itRemove); return; }
MM::VOID MM::PoolNodeBehavior::update(MM::Observable * observable, MM::VOID * aux, MM::UINT32 message, MM::VOID * object) { switch(message) { //pool node behavior is observing its type definition case MM::MSG_NEW_DRAIN: case MM::MSG_NEW_POOL: case MM::MSG_NEW_SOURCE: case MM::MSG_NEW_REF: case MM::MSG_NEW_GATE: addInterface((MM::Machine *) aux, (MM::Node *) object); break; //pool node behavior is observing its type definition case MM::MSG_DEL_DRAIN: case MM::MSG_DEL_POOL: case MM::MSG_DEL_SOURCE: case MM::MSG_DEL_REF: case MM::MSG_DEL_GATE: removeInterface((MM::Machine *) aux, (MM::Node *) object); break; default: //message not understood break; } }
void TestScene::error_CB(std::string msg) { cocos2d::Size visibleSize = cocos2d::Director::getInstance()->getVisibleSize(); //Error UI. created only when we need it. ErrorUI* errorui = new ErrorUI(); addInterface(ErrorUI::id,errorui); errorui->setPosition(cocos2d::Vec2(visibleSize.width * 0.5f, visibleSize.height * 0.67f)); errorui->setRefreshCallback([this, errorui](){ errorui->deactivate(); //removing UI from scene removeInterface(ErrorUI::id); //displaying navi m_ui[NavUI::id]->setEnabled(true); m_ui[NavUI::id]->setVisible(true); NavUI* nav = getInterface<NavUI>(NavUI::id); nav->setTitle(NavUI::id); }); errorui->setSkipCallback([this, errorui](){ errorui->deactivate(); //removing UI from scene removeInterface(ErrorUI::id); //displaying navi m_ui[NavUI::id]->setEnabled(true); m_ui[NavUI::id]->setVisible(true); NavUI* nav = getInterface<NavUI>(NavUI::id); nav->setTitle(NavUI::id); }); errorui->activate(msg); }
int main(int argc, char **argv){ if(argc < 3){ usage(argv[0]); exit(1); } int c = 0; char device[IFNAMSIZ] = { '\0' }; int vlanTag = 0; char vlanString[10] = {'\0' }; while((c = getopt(argc,argv,"i:v:r:h")) != -1){ switch(c){ case 'i': strncpy(device,optarg,sizeof(device) - 1); break; case 'r': strncpy(device,optarg,sizeof(device) - 1); removeInterface(device); exit(1); case 'v': strncpy(vlanString,optarg,sizeof(vlanString) - 1 ); vlanTag = atoi(optarg); break; case 'h': usage(argv[0]); exit(1); default: usage(argv[0]); exit(1); } } char vlanDevice[IFNAMSIZ] = {'\0' }; strcpy(vlanDevice,"vlan"); strcat(vlanDevice,vlanString); struct ifreq ifr; struct vlanreq vreq; int sock; if((sock = socket(AF_LOCAL, SOCK_DGRAM, 0)) < 0){ err(1,"Error: opening socket"); return -1; } bzero((char *)&vreq,sizeof(vreq)); strncpy(ifr.ifr_name,vlanDevice,sizeof(ifr.ifr_name)); vreq.vlr_tag = vlanTag; strncpy(vreq.vlr_parent,device,sizeof(vreq.vlr_parent)); ifr.ifr_data = (caddr_t)&vreq; int ret = ioctl(sock,SIOCIFCREATE,(caddr_t)&ifr); if(ret < 0){ err(1,"SIOCIFCREATE"); return -1; } ret = ioctl(sock,SIOCSETVLAN,(caddr_t)&ifr); if(ret < 0){ err(1,"SIOCSETVLAN"); return -1; } printf("Created vlan interface %s\n", vlanDevice); return 0; }