paul@9 | 1 | #include "accessing.h" |
paul@9 | 2 | |
paul@9 | 3 | /* Reserve this mapping and return whether 'fileid' is associated with an |
paul@9 | 4 | accessor. */ |
paul@9 | 5 | |
paul@9 | 6 | bool Accessing::reserve(fileid_t fileid) |
paul@9 | 7 | { |
paul@9 | 8 | _lock.lock(); |
paul@9 | 9 | |
paul@9 | 10 | return _accessors.find(fileid) != _accessors.end(); |
paul@9 | 11 | } |
paul@9 | 12 | |
paul@9 | 13 | /* Return the accessor for 'fileid' and release this mapping. */ |
paul@9 | 14 | |
paul@9 | 15 | Accessor *Accessing::get(fileid_t fileid) |
paul@9 | 16 | { |
paul@9 | 17 | FileMapping::iterator entry = _accessors.find(fileid); |
paul@9 | 18 | Accessor *accessor; |
paul@9 | 19 | |
paul@9 | 20 | if (entry == _accessors.end()) |
paul@9 | 21 | accessor = NULL; |
paul@9 | 22 | else |
paul@9 | 23 | accessor = entry->second; |
paul@9 | 24 | |
paul@9 | 25 | _lock.unlock(); |
paul@9 | 26 | return accessor; |
paul@9 | 27 | } |
paul@9 | 28 | |
paul@9 | 29 | /* Associate 'fileid' with the given 'accessor' and release this mapping. */ |
paul@9 | 30 | |
paul@9 | 31 | void Accessing::set(fileid_t fileid, Accessor *accessor) |
paul@9 | 32 | { |
paul@9 | 33 | FileMapping::iterator entry = _accessors.find(fileid); |
paul@9 | 34 | |
paul@9 | 35 | if (entry == _accessors.end()) |
paul@9 | 36 | _accessors[fileid] = accessor; |
paul@9 | 37 | |
paul@9 | 38 | _lock.unlock(); |
paul@9 | 39 | } |
paul@9 | 40 | |
paul@9 | 41 | // vim: tabstop=4 expandtab shiftwidth=4 |