void Session::run(void) { try { Thread::setPriority(Concurrency::Scheduler::POLICY_RR, 1); } catch (...) { } sendReply(220, "DUNE FTP server ready."); Poll poll; poll.add(*m_sock); poll.add(*m_sock_data); while (!isStopping()) { if (m_timer.overflow()) break; try { if (!poll.poll(1.0)) continue; if (!poll.wasTriggered(*m_sock)) continue; int rv = m_sock->read(m_bfr, sizeof(m_bfr)); if (rv <= 0) break; for (int i = 0; i < rv; ++i) { if (m_parser.parse(m_bfr[i])) { handleCommand(m_parser.getCode(), m_parser.getParameters()); m_timer.reset(); } } } catch (...) { break; } } closeControlConnection(); }