void PocoTaskQueue::threadRun(){ Jargon::Advanced::Task_ptr task; while( ! m_shouldStop ){ m_taskQueue.pop(task); if( task == NULL ){ return; } processTask(task); } if( m_shouldFlush ){ while( m_taskQueue.try_pop(task) ){ if( task == NULL ){ return; } processTask(task); } } }
void Client::handle_read(const boost::system::error_code& e, const size_t size) { if(!e) { std::istream bufReader(&_buf); std::string buf; std::getline(bufReader, buf, '\n'); char packetType; bufReader >> packetType; switch((Packet::PacketType)packetType) { case Packet::Task: { Packet::PacketTask pt; { boost::archive::text_iarchive tia(bufReader); tia >> pt; } std::cout << "new task!" << std::endl; ProcessResults pr = processTask(pt.programs()); Packet::PacketTaskAchieved pta(pr.scores, pr.newPrograms); { std::ostream bufWriter(&_responseBuf); { boost::archive::text_oarchive toa(bufWriter); toa << pta; } bufWriter << "\n"; // the end delimiter } boost::asio::write(_sock, _responseBuf); } break; case Packet::Stop: _state = Quitting; return; break; default: // if the packetType is not recognized break; } }
void ProducerThread::run() { processTask(); }
int main() { greeting(); processTask(); return 0; }