~ubuntu-branches/ubuntu/oneiric/strigi/oneiric

« back to all changes in this revision

Viewing changes to src/daemon/eventlistener/inotifylistener.h

  • Committer: Package Import Robot
  • Author(s): Fathi Boudra
  • Date: 2011-09-20 08:50:25 UTC
  • mto: (1.1.20 upstream) (5.1.6 sid)
  • mto: This revision was merged to the branch mainline in revision 44.
  • Revision ID: package-import@ubuntu.com-20110920085025-wszfu6x8rshrjq0e
ImportĀ upstreamĀ versionĀ 0.7.6

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* This file is part of Strigi Desktop Search
2
 
 *
3
 
 * Copyright (C) 2006 Flavio Castelli <flavio.castelli@gmail.com>
4
 
 *
5
 
 * This library is free software; you can redistribute it and/or
6
 
 * modify it under the terms of the GNU Library General Public
7
 
 * License as published by the Free Software Foundation; either
8
 
 * version 2 of the License, or (at your option) any later version.
9
 
 *
10
 
 * This library is distributed in the hope that it will be useful,
11
 
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13
 
 * Library General Public License for more details.
14
 
 *
15
 
 * You should have received a copy of the GNU Library General Public License
16
 
 * along with this library; see the file COPYING.LIB.  If not, write to
17
 
 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18
 
 * Boston, MA 02110-1301, USA.
19
 
 */
20
 
#ifndef INOTIFYLISTENER_H
21
 
#define INOTIFYLISTENER_H
22
 
 
23
 
#include "fslistener.h"
24
 
#include "strigi_thread.h"
25
 
#include <map>
26
 
#include <vector>
27
 
 
28
 
class Event;
29
 
class PollingListener;
30
 
 
31
 
class InotifyEvent : public FsEvent
32
 
{
33
 
    public:
34
 
        InotifyEvent(int watchID, const std::string& watchName,
35
 
                     struct inotify_event* event);
36
 
 
37
 
        const std::string description();
38
 
        bool regardsDir();
39
 
 
40
 
        struct inotify_event* event() { return m_event;}
41
 
        char* name();
42
 
        int watchID() { return m_watchID;}
43
 
        std::string watchName() { return m_watchName;}
44
 
        
45
 
    private:
46
 
        struct inotify_event* m_event;
47
 
        std::string m_watchName;
48
 
        int m_watchID;
49
 
 
50
 
};
51
 
 
52
 
/*!
53
 
 * @class InotifyListener
54
 
 * @brief Uses linux kernel inotify facility in order to keep strigi's index updated. 
55
 
 */
56
 
class InotifyListener : public FsListener
57
 
{
58
 
    private:
59
 
        class Private;
60
 
        Private* p; 
61
 
    
62
 
    public:
63
 
        explicit InotifyListener(std::set<std::string>& indexedDirs);
64
 
 
65
 
        virtual ~InotifyListener();
66
 
 
67
 
        bool init();
68
 
 
69
 
    protected:
70
 
        void stopMonitoring();
71
 
 
72
 
        // event methods
73
 
        bool pendingEvent();
74
 
        FsEvent* retrieveEvent();
75
 
        bool isEventValid(FsEvent* event);
76
 
        bool isEventInteresting (FsEvent * event);
77
 
 
78
 
        void dirRemoved (std::string dir, std::vector<Event*>& events);
79
 
 
80
 
        // watches methods
81
 
        bool addWatch (const std::string& path);
82
 
 
83
 
        void clearWatches();
84
 
};
85
 
 
86
 
#endif