X-Git-Url: https://git.carlh.net/gitweb/?p=dcpomatic.git;a=blobdiff_plain;f=src%2Flib%2Fupdate_checker.h;h=f0ea9798c36d87936c2bc716393e4a488f2b7432;hp=b0eb62273719ecab4bda6231066ac982ae3863ee;hb=c103d8c1306e5fb3937b3a6c430a3fff32653fa3;hpb=0df83d7ba261cdbb5be62db34dae7b972e05ddd9 diff --git a/src/lib/update_checker.h b/src/lib/update_checker.h index b0eb62273..f0ea9798c 100644 --- a/src/lib/update_checker.h +++ b/src/lib/update_checker.h @@ -1,26 +1,29 @@ /* - Copyright (C) 2014 Carl Hetherington + Copyright (C) 2014-2021 Carl Hetherington - This program is free software; you can redistribute it and/or modify + This file is part of DCP-o-matic. + + DCP-o-matic is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - This program is distributed in the hope that it will be useful, + DCP-o-matic is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + along with DCP-o-matic. If not, see . */ -/** @file src/lib/update.h + +/** @file src/lib/update_checker.h * @brief UpdateChecker class. */ + #include "signaller.h" #include #include @@ -28,17 +31,22 @@ #include #include + struct update_checker_test; -/** Class to check for the existance of an update for DCP-o-matic on a remote server */ -class UpdateChecker : public Signaller, public boost::noncopyable + +/** Class to check for the existence of an update for DCP-o-matic on a remote server */ +class UpdateChecker : public Signaller { public: ~UpdateChecker (); + UpdateChecker (UpdateChecker const &); + UpdateChecker& operator= (UpdateChecker const &); + void run (); - enum State { + enum class State { YES, ///< there is an update FAILED, ///< the check failed, so we don't know NO, ///< there is no update @@ -57,18 +65,12 @@ public: return _stable; } - /** @return new test version, if there is one and Config is set to look for it */ + /** @return new test version, if there is one */ boost::optional test () { boost::mutex::scoped_lock lm (_data_mutex); return _test; } - /** @return true if the last signal emission was the first */ - bool last_emit_was_first () const { - boost::mutex::scoped_lock lm (_data_mutex); - return _emits == 1; - } - size_t write_callback (void *, size_t, size_t); boost::signals2::signal StateChanged; @@ -87,20 +89,19 @@ private: void set_state (State); void thread (); - char* _buffer; - int _offset; - CURL* _curl; + std::vector _buffer; + int _offset = 0; + CURL* _curl = nullptr; /** mutex to protect _state, _stable, _test and _emits */ mutable boost::mutex _data_mutex; State _state; boost::optional _stable; boost::optional _test; - int _emits; - boost::thread* _thread; + boost::thread _thread; boost::mutex _process_mutex; boost::condition _condition; - int _to_do; - bool _terminate; + int _to_do = 0; + bool _terminate = false; };