File: node-persistent-cache.hpp

package info (click to toggle)
osm2pgsql 0.96.0%2Bds-2
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 2,304 kB
  • sloc: cpp: 11,462; python: 543; sh: 98; makefile: 17
file content (39 lines) | stat: -rw-r--r-- 968 bytes parent folder | download
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
#ifndef NODE_PERSISTENT_CACHE_H
#define NODE_PERSISTENT_CACHE_H

#include <memory>

#include <osmium/index/map/dense_file_array.hpp>
#include <osmium/osm/location.hpp>

#include "node-ram-cache.hpp"
#include "osmtypes.hpp"

struct options_t;
class reprojection;

class node_persistent_cache
{
public:
    node_persistent_cache(options_t const *options,
                          std::shared_ptr<node_ram_cache> ptr);
    ~node_persistent_cache();

    void set(osmid_t id, osmium::Location const &coord);
    osmium::Location get(osmid_t id);
    size_t get_list(osmium::WayNodeList *nodes);

private:
    // Dense node cache for unsigned IDs only
    using index_t =
        osmium::index::map::DenseFileArray<osmium::unsigned_object_id_type,
                                           osmium::Location>;

    std::shared_ptr<node_ram_cache> m_ram_cache;
    int m_fd;
    std::unique_ptr<index_t> m_index;
    bool m_remove_file;
    const char *m_fname;
};

#endif