File: filecache.cpp

package info (click to toggle)
kio-mtp 0.75%2Bgit20140304-2
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 420 kB
  • ctags: 67
  • sloc: cpp: 1,436; makefile: 5; sh: 1
file content (80 lines) | stat: -rw-r--r-- 2,203 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
/*
    Cache for recent files accessed.
    Copyright (C) 2012  Philipp Schmidt <philschmidt@gmx.net>

    This program 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,
    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.,
    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/


#include "filecache.h"

#include <KDebug>

#include <QTimer>

FileCache::FileCache ( QObject* parent ) : QObject ( parent )
{
}

uint32_t FileCache::queryPath ( const QString& path, int timeToLive )
{
    kDebug(KIO_MTP) << "Querying" << path;

    QPair< QDateTime, uint32_t > item = cache.value ( path );

    if ( item.second != 0 )
    {
        QDateTime dateTime = QDateTime::currentDateTime();

        if ( item.first > dateTime )
        {
            kDebug(KIO_MTP) << "Found item with ttl:" << item.first << "- now:" << dateTime;

            item.first = dateTime.addSecs ( timeToLive );
            
            kDebug(KIO_MTP) << "Reset item ttl:" << item.first;

            cache.insert ( path, item );

            return item.second;
        }
        else
        {
            kDebug(KIO_MTP) << "Item too old (" << item.first << "), removed. Current Time: " << dateTime;

            cache.remove( path );
            return 0;
        }
    }

    return 0;
}

void FileCache::addPath ( const QString& path, uint32_t id, int timeToLive )
{
    QDateTime dateTime = QDateTime::currentDateTime();
    dateTime = dateTime.addSecs ( timeToLive );

    QPair< QDateTime, uint32_t > item ( dateTime, id );
    
    cache.insert ( path, item );
}

void FileCache::removePath ( const QString& path )
{
    cache.remove( path );
}

#include "filecache.moc"