xref: /glogg/src/platformfilewatcher.cpp (revision 80bca0a387968c28827e5f6a97058c7bbfcfbd38) !
184b2179eSNicolas Bonnefon /*
2*80bca0a3SNicolas Bonnefon  * Copyright (C) 2010, 2014, 2015 Nicolas Bonnefon and other contributors
384b2179eSNicolas Bonnefon  *
484b2179eSNicolas Bonnefon  * This file is part of glogg.
584b2179eSNicolas Bonnefon  *
684b2179eSNicolas Bonnefon  * glogg is free software: you can redistribute it and/or modify
784b2179eSNicolas Bonnefon  * it under the terms of the GNU General Public License as published by
884b2179eSNicolas Bonnefon  * the Free Software Foundation, either version 3 of the License, or
984b2179eSNicolas Bonnefon  * (at your option) any later version.
1084b2179eSNicolas Bonnefon  *
1184b2179eSNicolas Bonnefon  * glogg is distributed in the hope that it will be useful,
1284b2179eSNicolas Bonnefon  * but WITHOUT ANY WARRANTY; without even the implied warranty of
1384b2179eSNicolas Bonnefon  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1484b2179eSNicolas Bonnefon  * GNU General Public License for more details.
1584b2179eSNicolas Bonnefon  *
1684b2179eSNicolas Bonnefon  * You should have received a copy of the GNU General Public License
1784b2179eSNicolas Bonnefon  * along with glogg.  If not, see <http://www.gnu.org/licenses/>.
1884b2179eSNicolas Bonnefon  */
1984b2179eSNicolas Bonnefon 
2084b2179eSNicolas Bonnefon #include "platformfilewatcher.h"
2184b2179eSNicolas Bonnefon 
2284b2179eSNicolas Bonnefon #include "log.h"
2384b2179eSNicolas Bonnefon 
24f09fa651SNicolas Bonnefon std::shared_ptr<PlatformFileWatcher::PlatformWatchTower> PlatformFileWatcher::watch_tower_;
2584b2179eSNicolas Bonnefon 
2684b2179eSNicolas Bonnefon PlatformFileWatcher::PlatformFileWatcher() : FileWatcher()
2784b2179eSNicolas Bonnefon {
2884b2179eSNicolas Bonnefon     // Caution, this is NOT thread-safe or re-entrant!
2984b2179eSNicolas Bonnefon     if ( !watch_tower_ )
3084b2179eSNicolas Bonnefon     {
3196bde7d5SNicolas Bonnefon         watch_tower_ = std::make_shared<PlatformWatchTower>();
3284b2179eSNicolas Bonnefon     }
3384b2179eSNicolas Bonnefon }
3484b2179eSNicolas Bonnefon 
3584b2179eSNicolas Bonnefon PlatformFileWatcher::~PlatformFileWatcher()
3684b2179eSNicolas Bonnefon {
3784b2179eSNicolas Bonnefon }
3884b2179eSNicolas Bonnefon 
3984b2179eSNicolas Bonnefon void PlatformFileWatcher::addFile( const QString& fileName )
4084b2179eSNicolas Bonnefon {
4184b2179eSNicolas Bonnefon     LOG(logDEBUG) << "FileWatcher::addFile " << fileName.toStdString();
4284b2179eSNicolas Bonnefon 
4384b2179eSNicolas Bonnefon     watched_file_name_ = fileName;
4484b2179eSNicolas Bonnefon 
4596bde7d5SNicolas Bonnefon     notification_ = std::make_shared<Registration>(
4684b2179eSNicolas Bonnefon             watch_tower_->addFile( fileName.toStdString(), [this, fileName] {
4784b2179eSNicolas Bonnefon                 emit fileChanged( fileName ); } ) );
4884b2179eSNicolas Bonnefon }
4984b2179eSNicolas Bonnefon 
5084b2179eSNicolas Bonnefon void PlatformFileWatcher::removeFile( const QString& fileName )
5184b2179eSNicolas Bonnefon {
5284b2179eSNicolas Bonnefon     LOG(logDEBUG) << "FileWatcher::removeFile " << fileName.toStdString();
5384b2179eSNicolas Bonnefon 
5484b2179eSNicolas Bonnefon     notification_ = nullptr;
5584b2179eSNicolas Bonnefon }
56*80bca0a3SNicolas Bonnefon 
57*80bca0a3SNicolas Bonnefon void PlatformFileWatcher::setPollingInterval( uint32_t interval_ms )
58*80bca0a3SNicolas Bonnefon {
59*80bca0a3SNicolas Bonnefon     watch_tower_->setPollingInterval( interval_ms );
60*80bca0a3SNicolas Bonnefon }
61