File: dataset_deliverer.cpp

package info (click to toggle)
mapnik 2.0.0%2Bds1-3
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 35,496 kB
  • sloc: cpp: 91,793; python: 6,051; xml: 3,528; sh: 848; makefile: 70; lisp: 10
file content (56 lines) | stat: -rw-r--r-- 1,413 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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include "dataset_deliverer.h"
#include "basiccurl.h"
#include <sstream>

osm_dataset * dataset_deliverer::dataset=NULL;
std::string dataset_deliverer::last_bbox = "";
std::string dataset_deliverer::last_filename = "";

osm_dataset* dataset_deliverer::load_from_file(const string& file,
                        const string& parser)
{
  // Only actually load from file if we haven't done so already
  if(dataset == NULL)
  {
    dataset = new osm_dataset;
    if(dataset->load(file.c_str(),parser)==false)
        return NULL;
    atexit(dataset_deliverer::release);
    last_filename = file;
  }
  else if(file != last_filename)
  {
    dataset = new osm_dataset;
    if(dataset->load(file.c_str(),parser)==false)
        return NULL;
    last_filename = file;
  }
  return dataset;
}

osm_dataset* dataset_deliverer::load_from_url
  (const string& url,const string& bbox,const string& parser)
{
  
  if(dataset==NULL)
  {
    dataset = new osm_dataset;
    if(dataset->load_from_url(url.c_str(),bbox,parser)==false)
      return NULL;
    atexit(dataset_deliverer::release);
    last_bbox = bbox;
  }
  else if (bbox != last_bbox)
  {
#ifdef MAPNIK_DEBUG
    cerr<<"BBOXES ARE DIFFERENT: " << last_bbox<<","<<bbox<<endl;
#endif

    // Reload the dataset  
    dataset->clear();
    if(dataset->load_from_url(url.c_str(),bbox,parser)==false)
      return NULL;
    last_bbox = bbox;  
  }
  return dataset;  
}