/// Start the processing threads. virtual void start() { _socket_error = false; AsyncSocket<f8String>::start(); if (_pipelined) { if (_callback_thread.start()) _socket_error = true; } }
/// Start the processing threads. virtual void start() { _socket_error = false; if (_pmodel != pm_coro) AsyncSocket<f8String>::start(); if (_pmodel == pm_pipeline) { if (_callback_thread.start()) _socket_error = true; } }
/*! Wait till processing thead has finished. \return 0 on success */ int join() { return _pmodel == pm_pipeline ? _thread.join() : -1; }
/// Stop the processing thread and quit. virtual void quit() { _thread.kill(1); }
/// Start the processing thread. virtual void start() { _thread.start(); }
/// Stop the processing threads and quit. virtual void quit() { if (_pmodel == pm_pipeline) _callback_thread.kill(1); AsyncSocket<f8String>::quit(); }
/*! Wait till processing thead has finished. \return 0 on success */ int join() { return _thread.join(); }
/// Stop the logging thread. void stop() { _stopping = true; send(std::string()); _thread.join(); }
/// Kill the logging thread. void kill() { _thread.kill(0); }
/*! Ctor. \param flags ebitset flags */ Logger(const LogFlags flags) : _thread(ref(*this)), _flags(flags), _ofs(), _lines(), _sequence(), _osequence() { _stopping = false; _thread.start(); }
/// Start the timer thread. void start() { _thread.start(); }
/// Join timer thread. Wait till exits. void join() { _thread.join(); }
/*! Kill timer thread. \param sig signal to kill with */ void kill(const int sig=SIGKILL) { _thread.kill(sig); }
/*! Wait till processing thead has finished. \return 0 on success */ int join() { return _pipelined ? _thread.join() : -1; }