#include <stdint.h>
+#include <atomic>
+#include <mutex>
#include <string>
-
-#include <boost/thread.hpp>
+#include <thread>
#include <QObject>
+namespace sigrok {
+class Output;
+}
+
namespace pv {
class SigSession;
~StoreSession();
- std::pair<uint64_t, uint64_t> progress() const;
+ std::pair<int, int> progress() const;
const QString& error() const;
void cancel();
private:
- void store_proc(boost::shared_ptr<pv::data::LogicSnapshot> snapshot);
+ void store_proc(std::shared_ptr<pv::data::LogicSnapshot> snapshot);
-signals:
+Q_SIGNALS:
void progress_updated();
private:
- const std::string _file_name;
- const SigSession &_session;
+ const std::string file_name_;
+ const SigSession &session_;
+
+ std::shared_ptr<sigrok::Output> output_;
+
+ std::thread thread_;
+
+ std::atomic<bool> interrupt_;
- boost::thread _thread;
+ std::atomic<int> units_stored_, unit_count_;
- mutable boost::mutex _mutex;
- uint64_t _units_stored;
- uint64_t _unit_count;
- QString _error;
+ mutable std::mutex mutex_;
+ QString error_;
};
} // pv