This file is indexed.

/usr/include/ossim/base/RWLock.h is in libossim-dev 2.2.2-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

 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
81
82
83
84
85
86
87
88
/**
* This code was derived from https://gist.github.com/mshockwave
*
*/
#ifndef ossimRWLockHEADER
#define ossimRWLockHEADER 1

#include <condition_variable>
#include <mutex>
#include <atomic>
#include <limits>

namespace ossim {

    /**
    * Code was derived from https://gist.github.com/mshockwave
    *
    * Has a pure c++11 implementation for read/write locks
    * allowing one to choose the locking technique to use.
    *
    * At the bottom we added typedefs so you do not have
    * to specify the template values.
    *
    *
    * Example:
    * @code
    *  ossim::RWLock mutex;
    *  // enter a section that just needs read only access 
    *  {
    *       ossim::ScopeReadLock  lock(mutex);
    *  }
    *  // enter some section that requires write
    *  {
    *      ossim::ScopeWriteLock  lock(mutex); 
    *  }
    * @endcode
    */
    class RWLock {
    private:
        std::mutex m_waitMutex;
        std::condition_variable m_waitConditional;
        std::atomic_int m_refCounter;
        const int MIN_INT;

    public:

        RWLock();

        void lockWrite();

        bool tryLockWrite();

        void unlockWrite();

        void lockRead();

        bool tryLockRead();

        void unlockRead();
    };


    class ScopeReadLock {
        RWLock& m_lock;
    public:
        ScopeReadLock(RWLock &lock) : m_lock(lock) {
            m_lock.lockRead();
        }

        ~ScopeReadLock() {
            m_lock.unlockRead();
        }
    };

    class ScopeWriteLock {
        RWLock& m_lock;
    public:
        ScopeWriteLock(RWLock& lock) : m_lock(lock) {
            m_lock.lockWrite();
        }

        ~ScopeWriteLock() {
            m_lock.unlockWrite();
        }
    };
};

#endif