void sendCallback(int fd, short eventType, void* args) { struct worker* worker = args; struct timeval timestamp, timediff, timeadd; gettimeofday(×tamp, NULL); timersub(×tamp, &(worker->last_write_time), &timediff); double diff = timediff.tv_usec * 1e-6 + timediff.tv_sec; struct int_dist* interarrival_dist = worker->config->interarrival_dist; int interarrival_time = 0; //Null interarrival_dist means no waiting if(interarrival_dist != NULL){ if(worker->interarrival_time <= 0){ interarrival_time = getIntQuantile(interarrival_dist); //In microseconds // printf("new interarrival_time %d\n", interarrival_time); worker->interarrival_time = interarrival_time; } else { interarrival_time = worker->interarrival_time; } if( interarrival_time/1.0e6 > diff){ return; } } worker->interarrival_time = -1; timeadd.tv_sec = 0; timeadd.tv_usec = interarrival_time; timeradd(&(worker->last_write_time), &timeadd, &(worker->last_write_time)); struct request* request = NULL; if(worker->incr_fix_queue_tail != worker->incr_fix_queue_head) { request = worker->incr_fix_queue[worker->incr_fix_queue_head]; worker->incr_fix_queue_head = (worker->incr_fix_queue_head + 1) % INCR_FIX_QUEUE_SIZE; // printf("fixing\n"); } else { // printf(")preload %d warmup key %d\n", worker->config->pre_load, worker->warmup_key); if(worker->config->pre_load == 1 && worker->warmup_key < 0) { return; } else { request = generateRequest(worker->config, worker); } } if(request->header.opcode == OP_SET){ // printf("Generated SET request of size %d\n", request->value_size); } if( !pushRequest(worker, request) ) { //Queue is full, bail // printf("Full queue\n"); deleteRequest(request); return; } sendRequest(request); }//End sendCallback()
void cMenuState::processEvents() { if ( mSelected ) { if ( mStillBlinking > sf::Time::Zero ) // if still blinking, then let's blink! { mMainMenu.setDrawHighlight((mStillBlinking.asMilliseconds()/100) % 2); mStillBlinking -= mClock.restart(); } else // blinking time over, let's actually do stuff! { switch (mAction) { case SAID::clear: { clearRequest(); break; } case SAID::push: { pushRequest(mParam); break; } } } return; } sf::Event event; while (mWindow.pollEvent(event)) { // Close window : exit if (event.type == sf::Event::Closed) { clearRequest(); } if ( event.type == sf::Event::JoystickMoved && event.joystickMove.axis == mJ.UpDownAxis && event.joystickMove.joystickId == mJ.ID) { float jPos = event.joystickMove.position; if ( jPos > gJoyThreshold && !mJoyMoved) { mMainMenu.move_down(); mJoyMoved = true; } if ( jPos < -gJoyThreshold && !mJoyMoved) { mMainMenu.move_up(); mJoyMoved = true; } if ( jPos > -gJoyThreshold && jPos < gJoyThreshold) mJoyMoved = false; } if ( event.type == sf::Event::JoystickButtonPressed && event.joystickButton.joystickId == mJ.ID) { if ( event.joystickButton.button == mJ.Fire ) menuChosen(); if ( event.joystickButton.button == mJ.UpButton ) { mMainMenu.move_up(); } if ( event.joystickButton.button == mJ.DownButton ) { mMainMenu.move_down(); } } if (event.type == sf::Event::KeyPressed) switch (event.key.code) { case sf::Keyboard::Up: { mMainMenu.move_up(); break; } case sf::Keyboard::Down: { mMainMenu.move_down(); break; } case sf::Keyboard::Return: { menuChosen(); break; } } } }