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);
			}
		}
	}
Example #2
0
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;
}