Update of /cvsroot/playerstage/code/player/server/drivers/vectormap
In directory
sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22171/server/drivers/vectormap
Modified Files:
dbconn.cc dbconn.h postgis.cc
Log Message:
applied patch
[ 1889308 ] Player CVS: Big postgis/vectormap patch
Index: dbconn.cc
===================================================================
RCS file: /cvsroot/playerstage/code/player/server/drivers/vectormap/dbconn.cc,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** dbconn.cc 7 Dec 2007 04:31:45 -0000 1.4
--- dbconn.cc 15 Feb 2008 08:42:37 -0000 1.5
***************
*** 1,5 ****
! #include <stdio.h>
! #include <stdlib.h>
#include <iostream>
#include "dbconn.h"
#ifdef HAVE_GEOS
--- 1,8 ----
! #include <cstdio>
! #include <cstddef>
! #include <cstdlib>
#include <iostream>
+ #include <cassert>
+ #include <cctype>
#include "dbconn.h"
#ifdef HAVE_GEOS
***************
*** 23,30 ****
}
VectorMapInfoHolder PostgresConn::GetVectorMapInfo(vector<string> layerNames)
{
// Get the extent in the first query
! string query_string = "SELECT asbinary(extent(geom)) FROM (SELECT geom FROM
";
for (uint32_t ii=0; ii<layerNames.size(); ++ii)
--- 26,49 ----
}
+ uint32_t PostgresConn::Text2Bin(const char * text, unsigned char * bin,
uint32_t maxlen)
+ {
+ char numbuff[5];
+ uint32_t i;
+
+ for (i = 0; i < maxlen; i++)
+ {
+ if (!(text[0])) break;
+ strcpy(numbuff, "0x");
+ strncat(numbuff, text, 2);
+ bin[i] = strtoul(numbuff, NULL, 0);
+ text += 2;
+ }
+ return i;
+ }
+
VectorMapInfoHolder PostgresConn::GetVectorMapInfo(vector<string> layerNames)
{
// Get the extent in the first query
! string query_string = "SELECT GeometryFromText(astext(extent(geom))) FROM
(SELECT geom FROM ";
for (uint32_t ii=0; ii<layerNames.size(); ++ii)
***************
*** 41,67 ****
query_string += ") AS layer_extent;";
! //PGresult* res = PQexec(conn, query_string.c_str());
! PGresult* res = PQexecParams(conn,
! query_string.c_str(),
! 0,
! NULL,
! NULL,
! NULL,
! NULL,
! 1);
if (PQresultStatus(res) != PGRES_TUPLES_OK)
{
! cout << "Error performing select query on database!" << endl;
! cout << "No extent value found." << endl;
! cout << "GetVectorMapInfo() failed" << endl;
}
- uint8_t* wkb_temp = reinterpret_cast<uint8_t*>(PQgetvalue(res, 0, 0));
uint32_t length = PQgetlength(res, 0, 0);
! uint8_t* wkb = new uint8_t[length];
! memcpy(wkb, wkb_temp, length);
BoundingBox extent = BinaryToBBox(wkb, length);
! delete[] wkb;
// Get the srid in the second query
--- 60,79 ----
query_string += ") AS layer_extent;";
! PGresult * res = PQexec(conn, query_string.c_str());
if (PQresultStatus(res) != PGRES_TUPLES_OK)
{
! cerr << "Error performing select query on database!" << endl;
! cerr << "No extent value found." << endl;
! cerr << "GetVectorMapInfo() failed" << endl;
}
uint32_t length = PQgetlength(res, 0, 0);
! uint8_t * wkb = new uint8_t[length];
! assert(wkb);
! length = Text2Bin(PQgetvalue(res, 0, 0), wkb, length);
BoundingBox extent = BinaryToBBox(wkb, length);
! delete []wkb;
! PQclear(res);
// Get the srid in the second query
***************
*** 69,75 ****
if (PQresultStatus(res) != PGRES_TUPLES_OK)
{
! cout << "Error performing select query on database!" << endl;
! cout << "No srid value found." << endl;
! cout << "GetVectorMapInfo() failed" << endl;
}
--- 81,87 ----
if (PQresultStatus(res) != PGRES_TUPLES_OK)
{
! cerr << "Error performing select query on database!" << endl;
! cerr << "No srid value found." << endl;
! cerr << "GetVectorMapInfo() failed" << endl;
}
***************
*** 91,95 ****
// Retrieve the extent of the layer in binary form
! const char* query_template = "SELECT asbinary(extent(geom)) AS extent FROM
%s;";
char query_string[MAX_PSQL_STRING];
--- 103,107 ----
// Retrieve the extent of the layer in binary form
! const char* query_template = "SELECT GeometryFromText(astext(extent(geom)))
AS extent FROM %s;";
char query_string[MAX_PSQL_STRING];
***************
*** 97,122 ****
snprintf(query_string, MAX_PSQL_STRING, query_template, layer_name);
! //PGresult* res = PQexec(conn, query_string);
! PGresult* res = PQexecParams(conn,
! query_string,
! 0,
! NULL,
! NULL,
! NULL,
! NULL,
! 1);
if (PQresultStatus(res) != PGRES_TUPLES_OK)
{
! cout << "Error performing select query on database!" << endl;
! cout << "GetLayerInfo() failed" << endl;
}
info.name = layer_name;
- uint32_t length = PQgetlength(res, 0, 0);
- uint8_t* wkb = new uint8_t[length];
- memcpy(wkb, PQgetvalue(res, 0, 0), length);
info.extent = BinaryToBBox(wkb, length);
PQclear(res);
--- 109,128 ----
snprintf(query_string, MAX_PSQL_STRING, query_template, layer_name);
! PGresult* res = PQexec(conn, query_string);
if (PQresultStatus(res) != PGRES_TUPLES_OK)
{
! cerr << "Error performing select query on database!" << endl;
! cerr << "GetLayerInfo() failed" << endl;
}
info.name = layer_name;
+ uint32_t length = PQgetlength(res, 0, 0);
+ uint8_t * wkb = new uint8_t[length];
+ assert(wkb);
+ length = Text2Bin(PQgetvalue(res, 0, 0), wkb, length);
info.extent = BinaryToBBox(wkb, length);
+ delete []wkb;
PQclear(res);
***************
*** 132,153 ****
// need to get name count, name, wkb count, wkb
! const char* template_data = "SELECT name, asbinary(geom), attrib FROM %s;";
char query_data[MAX_PSQL_STRING];
memset(query_data, 0, sizeof(MAX_PSQL_STRING));
snprintf(query_data, MAX_PSQL_STRING, template_data, layer_name);
! //res = PQexec(conn, query_data);
! PGresult* res = PQexecParams(conn,
! query_data,
! 0,
! NULL,
! NULL,
! NULL,
! NULL,
! 1);
if (PQresultStatus(res) != PGRES_TUPLES_OK)
{
! cout << "Error performing select query on database!" << endl;
! cout << "GetLayerData() data failed, returned NULL" << endl;
}
--- 138,152 ----
// need to get name count, name, wkb count, wkb
! const char* template_data = "SELECT name, geom, attrib FROM %s ORDER BY
id;";
char query_data[MAX_PSQL_STRING];
memset(query_data, 0, sizeof(MAX_PSQL_STRING));
snprintf(query_data, MAX_PSQL_STRING, template_data, layer_name);
! PGresult* res = PQexec(conn, query_data);
!
if (PQresultStatus(res) != PGRES_TUPLES_OK)
{
! cerr << "Error performing select query on database!" << endl;
! cerr << "GetLayerData() data failed, returned NULL" << endl;
}
***************
*** 157,167 ****
{
FeatureDataHolder fd(string(PQgetvalue(res, i, 0)));
-
- uint8_t *wkb = reinterpret_cast<uint8_t *>(PQgetvalue(res, i, 1));
uint32_t length = PQgetlength(res, i, 1);
! fd.wkb.assign(wkb, &wkb[length]);
!
fd.attrib = string(PQgetvalue(res, i, 2));
!
data.features.push_back(fd);
}
--- 156,167 ----
{
FeatureDataHolder fd(string(PQgetvalue(res, i, 0)));
uint32_t length = PQgetlength(res, i, 1);
! uint8_t * wkb = new uint8_t[length];
! assert(wkb);
! length = Text2Bin(PQgetvalue(res, i, 1), wkb, length);
! fd.wkb.assign(wkb, wkb + length);
! delete []wkb;
fd.attrib = string(PQgetvalue(res, i, 2));
!
data.features.push_back(fd);
}
***************
*** 172,175 ****
--- 172,300 ----
}
+ int PostgresConn::WriteLayerData(LayerDataHolder & data)
+ {
+
+ const string delcmd = string("DELETE FROM ") + data.name + string(";");
+ const string inscmd = string("INSERT INTO ") + data.name + string(" (id,
name, geom, attrib) VALUES ($1::integer, $2, $3, $4);");
+ PGresult * res;
+ const player_vectormap_feature_data_t * feature;
+ char numbuff[16];
+ const char * params[4];
+
+ res = PQexec(conn, "BEGIN TRANSACTION;");
+ if (!res)
+ {
+ PLAYER_ERROR("Couldn't delete layer features");
+ return -1;
+ }
+ if (PQresultStatus(res) != PGRES_COMMAND_OK)
+ {
+ PLAYER_ERROR1("%s", PQresultErrorMessage(res));
+ PQclear(res);
+ return -1;
+ }
+ PQclear(res);
+ PLAYER_WARN1("[%s]", delcmd.c_str());
+ res = PQexec(conn, delcmd.c_str());
+ if (!res)
+ {
+ PLAYER_ERROR("Couldn't delete layer features");
+ res = PQexec(conn, "ROLLBACK;");
+ if (!res)
+ {
+ PLAYER_ERROR("Couldn't rollback transaction");
+ return -1;
+ }
+ if (PQresultStatus(res) != PGRES_COMMAND_OK) PLAYER_ERROR1("%s",
PQresultErrorMessage(res));
+ PQclear(res);
+ return -1;
+ }
+ if (PQresultStatus(res) != PGRES_COMMAND_OK)
+ {
+ PLAYER_ERROR1("%s", PQresultErrorMessage(res));
+ PQclear(res);
+ res = PQexec(conn, "ROLLBACK;");
+ if (!res)
+ {
+ PLAYER_ERROR("Couldn't rollback transaction");
+ return -1;
+ }
+ if (PQresultStatus(res) != PGRES_COMMAND_OK) PLAYER_ERROR1("%s",
PQresultErrorMessage(res));
+ PQclear(res);
+ return -1;
+ }
+ PQclear(res);
+ for (int i = 0; i < (int)(data.features.size()); i++)
+ {
+ feature = data.features[i].Convert();
+ char * wkb_buff = new char[((feature->wkb_count) * 2) + 1];
+ assert(wkb_buff);
+ char * ptr = wkb_buff;
+ for (uint32_t j = 0; j < (feature->wkb_count); j++)
+ {
+ snprintf(ptr, 3, "%02x", feature->wkb[j]);
+ ptr += 2;
+ }
+ for (int j = 0; wkb_buff[j]; j++) wkb_buff[j] = toupper(wkb_buff[j]);
+ snprintf(numbuff, sizeof numbuff, "%d", i + 1);
+ params[0] = numbuff;
+ params[1] = (feature->name[0]) ? feature->name : NULL;
+ params[2] = wkb_buff;
+ params[3] = (feature->attrib[0]) ? feature->attrib : NULL;
+ PLAYER_WARN5("[%s] [%s] [%s] [%s] [%s]", inscmd.c_str(), params[0],
((params[1]) ? (params[1]) : ""), params[2], ((params[3]) ? (params[3]) : ""));
+ PGresult * res = PQexecParams(conn,
+ inscmd.c_str(),
+ 4,
+ NULL,
+ params,
+ NULL,
+ NULL,
+ 0);
+ delete []wkb_buff;
+ if (!res)
+ {
+ PLAYER_ERROR("Couldn't insert layer feature to the database");
+ res = PQexec(conn, "ROLLBACK;");
+ if (!res)
+ {
+ PLAYER_ERROR("Couldn't rollback transaction");
+ return -1;
+ }
+ if (PQresultStatus(res) != PGRES_COMMAND_OK) PLAYER_ERROR1("%s",
PQresultErrorMessage(res));
+ PQclear(res);
+ return -1;
+ }
+ if (PQresultStatus(res) != PGRES_COMMAND_OK)
+ {
+ PLAYER_ERROR1("%s", PQresultErrorMessage(res));
+ PQclear(res);
+ res = PQexec(conn, "ROLLBACK;");
+ if (!res)
+ {
+ PLAYER_ERROR("Couldn't rollback transaction");
+ return -1;
+ }
+ if (PQresultStatus(res) != PGRES_COMMAND_OK) PLAYER_ERROR1("%s",
PQresultErrorMessage(res));
+ PQclear(res);
+ return -1;
+ }
+ PQclear(res);
+ }
+ res = PQexec(conn, "COMMIT TRANSACTION;");
+ if (!res)
+ {
+ PLAYER_ERROR("Couldn't commit transaction");
+ return -1;
+ }
+ if (PQresultStatus(res) != PGRES_COMMAND_OK)
+ {
+ PLAYER_ERROR1("%s", PQresultErrorMessage(res));
+ PQclear(res);
+ return -1;
+ }
+ PQclear(res);
+ return 0;
+ }
+
BoundingBox PostgresConn::BinaryToBBox(const uint8_t* wkb, uint32_t length)
{
***************
*** 177,181 ****
memset(&res, 0, sizeof(BoundingBox));
#ifdef HAVE_GEOS
! GEOSGeom polygon = NULL;
polygon = GEOSGeomFromWKB_buf(wkb, length);
if (polygon == NULL)
--- 302,306 ----
memset(&res, 0, sizeof(BoundingBox));
#ifdef HAVE_GEOS
! GEOSGeom polygon;
polygon = GEOSGeomFromWKB_buf(wkb, length);
if (polygon == NULL)
***************
*** 219,223 ****
res.x1 = xmax;
res.y1 = ymax;
!
#endif
return res;
--- 344,348 ----
res.x1 = xmax;
res.y1 = ymax;
! GEOSGeom_destroy(polygon);
#endif
return res;
***************
*** 232,236 ****
--- 357,363 ----
info.extent.y1 = extent.y1;
info.layers_count = layers.size();
+ if (info.layers) delete [](info.layers);
info.layers = new player_vectormap_layer_info_t[layers.size()];
+ assert(info.layers);
for (uint32_t ii=0; ii<layers.size(); ++ii)
{
***************
*** 242,254 ****
VectorMapInfoHolder::~VectorMapInfoHolder()
{
! // if (info.layers)
! // {
! // delete[] info.layers;
! // }
}
const player_vectormap_layer_info_t* LayerInfoHolder::Convert()
{
layer_info.name = strdup(name.c_str());
layer_info.name_count = name.size() + 1;
layer_info.extent.x0 = extent.x0;
--- 369,383 ----
VectorMapInfoHolder::~VectorMapInfoHolder()
{
! if (info.layers)
! {
! delete[] info.layers;
! }
}
const player_vectormap_layer_info_t* LayerInfoHolder::Convert()
{
+ if (layer_info.name) free(layer_info.name);
layer_info.name = strdup(name.c_str());
+ assert(layer_info.name);
layer_info.name_count = name.size() + 1;
layer_info.extent.x0 = extent.x0;
***************
*** 261,269 ****
--- 390,404 ----
const player_vectormap_feature_data_t* FeatureDataHolder::Convert()
{
+ if (feature_data.name) free(feature_data.name);
feature_data.name = strdup(name.c_str());
+ assert(feature_data.name);
feature_data.name_count = name.size() + 1;
+ if (feature_data.wkb) delete [](feature_data.wkb);
feature_data.wkb = new uint8_t[wkb.size()];
+ assert(feature_data.wkb);
feature_data.wkb_count = wkb.size();
+ if (feature_data.attrib) free(feature_data.attrib);
feature_data.attrib = strdup(attrib.c_str());
+ assert(feature_data.attrib);
feature_data.attrib_count = attrib.size() + 1;
///TODO: Make more efficient
***************
*** 277,297 ****
FeatureDataHolder::~FeatureDataHolder()
{
! // if (feature_data.wkb)
! // {
! // delete[] feature_data.wkb;
! // }
}
const player_vectormap_layer_data_t* LayerDataHolder::Convert()
{
layer_data.name = strdup(name.c_str());
layer_data.name_count = name.size()+1;
layer_data.features_count = features.size();
! layer_data.features = new player_vectormap_feature_data_t[features.size()];
! for (uint32_t ii=0; ii<features.size(); ++ii)
{
! layer_data.features[ii] = *(features[ii].Convert());
}
-
return &layer_data;
}
--- 412,441 ----
FeatureDataHolder::~FeatureDataHolder()
{
! if (feature_data.name) free(feature_data.name);
! if (feature_data.attrib) free(feature_data.attrib);
! if (feature_data.wkb)
! {
! delete[] feature_data.wkb;
! }
}
const player_vectormap_layer_data_t* LayerDataHolder::Convert()
{
+ if (layer_data.name) free(layer_data.name);
layer_data.name = strdup(name.c_str());
+ assert(layer_data.name);
layer_data.name_count = name.size()+1;
layer_data.features_count = features.size();
! if (layer_data.features) delete [](layer_data.features);
! layer_data.features = NULL;
! if (layer_data.features_count > 0)
{
! layer_data.features = new
player_vectormap_feature_data_t[layer_data.features_count];
! assert(layer_data.features);
! for (uint32_t ii=0; ii<layer_data.features_count; ++ii)
! {
! layer_data.features[ii] = *(features[ii].Convert());
! }
}
return &layer_data;
}
***************
*** 299,306 ****
LayerDataHolder::~LayerDataHolder()
{
! free(layer_data.name);
! // if (layer_data.features)
! // {
! // delete[] layer_data.features;
! // }
}
--- 443,450 ----
LayerDataHolder::~LayerDataHolder()
{
! if (layer_data.name) free(layer_data.name);
! if (layer_data.features)
! {
! delete[] layer_data.features;
! }
}
Index: dbconn.h
===================================================================
RCS file: /cvsroot/playerstage/code/player/server/drivers/vectormap/dbconn.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** dbconn.h 7 Dec 2007 04:31:45 -0000 1.5
--- dbconn.h 15 Feb 2008 08:42:37 -0000 1.6
***************
*** 7,10 ****
--- 7,12 ----
#include <vector>
#include <string>
+ #include <cstring>
+ #include <cstddef>
#define MAX_PSQL_STRING 256
***************
*** 20,29 ****
{
public:
! FeatureDataHolder(){};
! ~FeatureDataHolder();
FeatureDataHolder(string name)
! {
this->name = name;
! };
const player_vectormap_feature_data_t* Convert();
--- 22,46 ----
{
public:
! FeatureDataHolder() { memset(&feature_data, 0, sizeof feature_data); }
! FeatureDataHolder(const FeatureDataHolder & orig)
! {
! memset(&feature_data, 0, sizeof feature_data);
! name = orig.name;
! wkb = orig.wkb;
! attrib = orig.attrib;
! }
! virtual ~FeatureDataHolder();
FeatureDataHolder(string name)
! {
! memset(&feature_data, 0, sizeof feature_data);
this->name = name;
! }
! FeatureDataHolder(const player_vectormap_feature_data_t * feature)
! {
! memset(&feature_data, 0, sizeof feature_data);
! name = string(feature->name);
! attrib = string(feature->attrib);
! wkb.assign(feature->wkb, (feature->wkb) + (feature->wkb_count));
! }
const player_vectormap_feature_data_t* Convert();
***************
*** 38,50 ****
{
public:
! LayerInfoHolder(){memset(&layer_info,0,sizeof(layer_info));};
LayerInfoHolder(string name)
{
this->name = name;
- layer_info.name = strdup(name.c_str());
- layer_info.name_count = name.size() +1;
memset(&extent, 0, sizeof(extent));
};
! ~LayerInfoHolder()
{
free(layer_info.name);
--- 55,72 ----
{
public:
! LayerInfoHolder() { memset(&layer_info,0,sizeof(layer_info));
memset(&extent, 0, sizeof(extent)); };
! LayerInfoHolder(const LayerInfoHolder & orig)
! {
! memset(&layer_info,0,sizeof(layer_info));
! name = orig.name;
! extent = orig.extent;
! }
LayerInfoHolder(string name)
{
+ memset(&layer_info,0,sizeof(layer_info));
this->name = name;
memset(&extent, 0, sizeof(extent));
};
! virtual ~LayerInfoHolder()
{
free(layer_info.name);
***************
*** 61,73 ****
{
public:
! LayerDataHolder(){memset(&layer_data,0,sizeof(layer_data));};
LayerDataHolder(string name)
{
memset(&layer_data,0,sizeof(layer_data));
this->name = name;
! layer_data.name = strdup(name.c_str());
! layer_data.name_count = name.size() +1;
! };
! ~LayerDataHolder();
const player_vectormap_layer_data_t* Convert();
--- 83,109 ----
{
public:
! LayerDataHolder() { memset(&layer_data, 0, sizeof layer_data); }
! LayerDataHolder(const LayerDataHolder & orig)
! {
! memset(&layer_data, 0, sizeof layer_data);
! name = orig.name;
! features = orig.features;
! }
LayerDataHolder(string name)
{
memset(&layer_data,0,sizeof(layer_data));
this->name = name;
! }
! LayerDataHolder(const player_vectormap_layer_data_t * layer)
! {
! memset(&layer_data, 0, sizeof layer_data);
! name = string(layer->name);
! for (uint32_t ii = 0; ii < layer->features_count; ii++)
! {
! FeatureDataHolder fd(&(layer->features[ii]));
! features.push_back(fd);
! }
! }
! virtual ~LayerDataHolder();
const player_vectormap_layer_data_t* Convert();
***************
*** 81,87 ****
{
public:
! VectorMapInfoHolder(){};
! ~VectorMapInfoHolder();
! VectorMapInfoHolder(uint32_t srid, BoundingBox extent) { this->srid =
srid; this->extent = extent; };
const player_vectormap_info_t* Convert();
--- 117,132 ----
{
public:
! VectorMapInfoHolder() { memset(&info, 0, sizeof info); memset(&extent, 0,
sizeof extent); };
! VectorMapInfoHolder(const VectorMapInfoHolder & orig)
! {
! memset(&info, 0, sizeof info);
! srid = orig.srid; layers = orig.layers; extent = orig.extent;
! }
! virtual ~VectorMapInfoHolder();
! VectorMapInfoHolder(uint32_t srid, BoundingBox extent)
! {
! this->srid = srid; this->extent = extent;
! memset(&info, 0, sizeof info);
! };
const player_vectormap_info_t* Convert();
***************
*** 97,112 ****
public:
PostgresConn(){ conn = NULL; };
! ~PostgresConn(){ if (Connected()) Disconnect(); };
bool Connect(const char* dbname, const char* host, const char* user,
const char* password, const char* port);
bool Disconnect();
bool Connected() { return (conn != NULL) && (PQstatus(conn) !=
CONNECTION_BAD); };
- const char* ErrorMessage() { return strdup(PQerrorMessage(conn)); };
VectorMapInfoHolder GetVectorMapInfo(vector<string> layerNames);
LayerInfoHolder GetLayerInfo(const char *layer_name);
LayerDataHolder GetLayerData(const char *layer_name);
private:
BoundingBox BinaryToBBox(const uint8_t *binary, uint32_t length);
PGconn *conn;
--- 142,158 ----
public:
PostgresConn(){ conn = NULL; };
! virtual ~PostgresConn(){ if (Connected()) Disconnect(); };
bool Connect(const char* dbname, const char* host, const char* user,
const char* password, const char* port);
bool Disconnect();
bool Connected() { return (conn != NULL) && (PQstatus(conn) !=
CONNECTION_BAD); };
VectorMapInfoHolder GetVectorMapInfo(vector<string> layerNames);
LayerInfoHolder GetLayerInfo(const char *layer_name);
LayerDataHolder GetLayerData(const char *layer_name);
+ int WriteLayerData(LayerDataHolder & data);
private:
BoundingBox BinaryToBBox(const uint8_t *binary, uint32_t length);
+ uint32_t Text2Bin(const char * text, unsigned char * bin, uint32_t
maxlen);
PGconn *conn;
Index: postgis.cc
===================================================================
RCS file: /cvsroot/playerstage/code/player/server/drivers/vectormap/postgis.cc,v
retrieving revision 1.8
retrieving revision 1.9
diff -C2 -d -r1.8 -r1.9
*** postgis.cc 6 Feb 2008 18:46:03 -0000 1.8
--- postgis.cc 15 Feb 2008 08:42:37 -0000 1.9
***************
*** 71,75 ****
dbname "gis"
host "192.168.0.2"
! port "5433"
user "postgres"
password "secret"
--- 71,75 ----
dbname "gis"
host "192.168.0.2"
! port "5432"
user "postgres"
password "secret"
***************
*** 112,116 ****
#include <sys/types.h> // required by Darwin
! #include <stdlib.h>
#include <libplayercore/playercore.h>
#include <libplayercore/error.h>
--- 112,121 ----
#include <sys/types.h> // required by Darwin
! #include <cstdlib>
! #include <cstddef>
! #include <cstdio>
! #include <cstdarg>
! #include <string>
! #include <vector>
#include <libplayercore/playercore.h>
#include <libplayercore/error.h>
***************
*** 119,123 ****
#include <geos_c.h>
#endif
! #include <stdarg.h>
/** Dummy function passed as a function pointer GEOS when it is initialised.
GEOS uses this for logging. */
--- 124,129 ----
#include <geos_c.h>
#endif
!
! using namespace std;
/** Dummy function passed as a function pointer GEOS when it is initialised.
GEOS uses this for logging. */
***************
*** 143,147 ****
const char* password,
const char* port,
! vector<string> layerNames);
~PostGIS();
int Setup();
--- 149,153 ----
const char* password,
const char* port,
! vector<string> & layerNames);
~PostGIS();
int Setup();
***************
*** 210,214 ****
const char* password,
const char* port,
! vector<string> layerNames)
: Driver(cf, section, true, PLAYER_MSGQUEUE_DEFAULT_MAXLEN,
PLAYER_VECTORMAP_CODE)
{
--- 216,220 ----
const char* password,
const char* port,
! vector<string> & layerNames)
: Driver(cf, section, true, PLAYER_MSGQUEUE_DEFAULT_MAXLEN,
PLAYER_VECTORMAP_CODE)
{
***************
*** 220,224 ****
this->layerNames = layerNames;
this->conn = NULL;
!
}
--- 226,234 ----
this->layerNames = layerNames;
this->conn = NULL;
! #ifdef HAVE_GEOS
! PLAYER_MSG0(2, "Initialising GEOS");
! initGEOS(geosprint, geosprint);
! PLAYER_MSG0(2, "GEOS Initialised");
! #endif
}
***************
*** 226,229 ****
--- 236,243 ----
PostGIS::~PostGIS()
{
+ #ifdef HAVE_GEOS
+ PLAYER_MSG0(2, "Shutting down GEOS");
+ finishGEOS();
+ #endif
/*if (conn != NULL && conn->Connected())
{
***************
*** 244,253 ****
PLAYER_MSG0(2, "PostGIS vectormap initialising");
- #ifdef HAVE_GEOS
- PLAYER_MSG0(2, "Initialising GEOS");
- initGEOS(geosprint, geosprint);
- PLAYER_MSG0(2, "GEOS Initialised");
- #endif
-
conn = new PostgresConn();
conn->Connect(dbname, host, user, password, port);
--- 258,261 ----
***************
*** 256,260 ****
{
PLAYER_ERROR("Could not connect to Postgres database!");
- PLAYER_ERROR1("%s",conn->ErrorMessage());
return(1);
}
--- 264,267 ----
***************
*** 277,287 ****
{
delete conn;
! //conn == NULL;
}
!
! #ifdef HAVE_GEOS
! PLAYER_MSG0(2, "Shutting down GEOS");
! finishGEOS();
! #endif
PLAYER_MSG0(2, "PostGIS vectormap stopped");
return(0);
--- 284,290 ----
{
delete conn;
! conn = NULL;
}
!
PLAYER_MSG0(2, "PostGIS vectormap stopped");
return(0);
***************
*** 306,312 ****
PLAYER_MSGTYPE_RESP_ACK,
PLAYER_VECTORMAP_REQ_GET_MAP_INFO,
! (void*)response,
! 0,
! NULL);
return(0);
}
--- 309,313 ----
PLAYER_MSGTYPE_RESP_ACK,
PLAYER_VECTORMAP_REQ_GET_MAP_INFO,
! (void*)response);
return(0);
}
***************
*** 323,329 ****
PLAYER_MSGTYPE_RESP_ACK,
PLAYER_VECTORMAP_REQ_GET_LAYER_DATA,
! (void*)response,
! 0,
! NULL);
return(0);
--- 324,328 ----
PLAYER_MSGTYPE_RESP_ACK,
PLAYER_VECTORMAP_REQ_GET_LAYER_DATA,
! (void*)response);
return(0);
***************
*** 341,347 ****
PLAYER_MSGTYPE_RESP_ACK,
PLAYER_VECTORMAP_REQ_WRITE_LAYER,
! (void*)request,
! 0,
! NULL);
return(0);
}
--- 340,344 ----
PLAYER_MSGTYPE_RESP_ACK,
PLAYER_VECTORMAP_REQ_WRITE_LAYER,
! (void*)request);
return(0);
}
***************
*** 388,391 ****
void PostGIS::RequestLayerWrite(player_vectormap_layer_data_t* data)
{
! return;
}
--- 385,397 ----
void PostGIS::RequestLayerWrite(player_vectormap_layer_data_t* data)
{
! if (conn == NULL || conn->Connected() == false)
! {
! PLAYER_ERROR("PostGis::WriteLayerData() failed! No db connection.");
! }
!
! LayerDataHolder layer(data);
! if (conn->WriteLayerData(layer))
! {
! PLAYER_ERROR("PostGis::WriteLayerData() failed!");
! }
}
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Playerstage-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/playerstage-commit