Change-Id: I4afa1607ea9758747c212906a8ecf5b7f0099f72
Signed-off-by: Todd Malsbary <todd.malsbary@intel.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/16549
Tested-by: jenkins-iotivity <jenkins@iotivity.org>
Reviewed-by: Dan Mihai <Daniel.Mihai@microsoft.com>
Reviewed-by: Habib Virji <habib.virji@samsung.com>
'src/internal',
'../include',
'../stack/include',
'src/internal',
'../include',
'../stack/include',
+ '../stack/include/internal',
'../../include',
'../logger/include',
'../../oc_logger/include',
'../../include',
'../logger/include',
'../../oc_logger/include',
+ '../connectivity/api',
+ '../security/include'
])
if 'CLIENT' in rd_mode:
])
if 'CLIENT' in rd_mode:
/**
* Opens the RD publish database.
*
/**
* Opens the RD publish database.
*
- * @param path to the database file.
- *
* @return ::OC_STACK_OK in case of success or else other value.
*/
* @return ::OC_STACK_OK in case of success or else other value.
*/
-OCStackResult OCRDDatabaseInit(const char *path);
+OCStackResult OCRDDatabaseInit();
/**
* Stores in database the published resource.
/**
* Stores in database the published resource.
#include "octypes.h"
#include "oic_malloc.h"
#include "oic_string.h"
#include "octypes.h"
#include "oic_malloc.h"
#include "oic_string.h"
+#include "ocstackinternal.h"
#ifdef RD_SERVER
#define TAG "OIC_RD_DATABASE"
#ifdef RD_SERVER
#define TAG "OIC_RD_DATABASE"
static sqlite3 *gRDDB = NULL;
static sqlite3 *gRDDB = NULL;
OIC_LOG_V(ERROR, TAG, "SQLLite Error: %s : %d", errMsg, errCode);
}
OIC_LOG_V(ERROR, TAG, "SQLLite Error: %s : %d", errMsg, errCode);
}
-OCStackResult OCRDDatabaseInit(const char *path)
+OCStackResult OCRDDatabaseInit()
{
if (SQLITE_OK == sqlite3_config(SQLITE_CONFIG_LOG, errorCallback))
{
{
if (SQLITE_OK == sqlite3_config(SQLITE_CONFIG_LOG, errorCallback))
{
- sqlRet = sqlite3_open_v2(!path ? RD_PATH : path, &gRDDB, SQLITE_OPEN_READWRITE, NULL);
+ sqlRet = sqlite3_open_v2(OCRDDatabaseGetStorageFilename(), &gRDDB,
+ SQLITE_OPEN_READWRITE, NULL);
if (SQLITE_OK != sqlRet)
{
OIC_LOG(DEBUG, TAG, "RD database file did not open, as no table exists.");
OIC_LOG(DEBUG, TAG, "RD creating new table.");
if (SQLITE_OK != sqlRet)
{
OIC_LOG(DEBUG, TAG, "RD database file did not open, as no table exists.");
OIC_LOG(DEBUG, TAG, "RD creating new table.");
- sqlRet = sqlite3_open_v2(!path ? RD_PATH : path, &gRDDB,
+ sqlRet = sqlite3_open_v2(OCRDDatabaseGetStorageFilename(), &gRDDB,
SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL);
if (SQLITE_OK == sqlRet)
{
SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL);
if (SQLITE_OK == sqlRet)
{
#include <string.h>
#include "payload_logging.h"
#include "ocpayload.h"
#include <string.h>
#include "payload_logging.h"
#include "ocpayload.h"
{
remove("RD.db");
OCInit("127.0.0.1", 5683, OC_CLIENT_SERVER);
{
remove("RD.db");
OCInit("127.0.0.1", 5683, OC_CLIENT_SERVER);
- EXPECT_EQ(OC_STACK_OK, OCRDDatabaseInit(NULL));
+ EXPECT_EQ(OC_STACK_OK, OCRDDatabaseInit());
}
virtual void TearDown()
}
virtual void TearDown()
const OCClientResponse *response);
#endif
const OCClientResponse *response);
#endif
+#if defined(RD_SERVER)
+/**
+ * Returns the filename to be used for database persistent storage.
+ *
+ * @return the filename
+ */
+const char *OCRDDatabaseGetStorageFilename();
+#endif
+
/**
* Delete all of the dynamically allocated elements that were created for the resource attributes.
*
/**
* Delete all of the dynamically allocated elements that were created for the resource attributes.
*
+ * Sets the filename to be used for database persistent storage.
+ * @param filename [IN] the filename.
+ *
+ * @return ::OC_STACK_OK on success, some other value upon failure.
+ */
+OCStackResult OCRDDatabaseSetStorageFilename(const char *filename);
+
+/**
* Search the RD database for queries.
*
* @param interfaceType is the interface type that is queried.
* Search the RD database for queries.
*
* @param interfaceType is the interface type that is queried.
+static const char *gRDPath = "RD.db";
static sqlite3 *gRDDB = NULL;
static sqlite3 *gRDDB = NULL;
return OC_STACK_ERROR; \
}
return OC_STACK_ERROR; \
}
+OCStackResult OCRDDatabaseSetStorageFilename(const char *filename)
+{
+ if(!filename)
+ {
+ OIC_LOG(ERROR, TAG, "The persistent storage filename is invalid");
+ return OC_STACK_INVALID_PARAM;
+ }
+ gRDPath = filename;
+ return OC_STACK_OK;
+}
+
+const char *OCRDDatabaseGetStorageFilename()
+{
+ return gRDPath;
+}
+
static void errorCallback(void *arg, int errCode, const char *errMsg)
{
OC_UNUSED(arg);
static void errorCallback(void *arg, int errCode, const char *errMsg)
{
OC_UNUSED(arg);
OIC_LOG_V(ERROR, TAG, "SQLLite Error: %s : %d", errMsg, errCode);
}
OIC_LOG_V(ERROR, TAG, "SQLLite Error: %s : %d", errMsg, errCode);
}
-static OCStackResult initializeDatabase(const char *path)
+static OCStackResult initializeDatabase()
{
if (SQLITE_OK == sqlite3_config(SQLITE_CONFIG_LOG, errorCallback))
{
OIC_LOG_V(INFO, TAG, "SQLite debugging log initialized.");
}
{
if (SQLITE_OK == sqlite3_config(SQLITE_CONFIG_LOG, errorCallback))
{
OIC_LOG_V(INFO, TAG, "SQLite debugging log initialized.");
}
- sqlite3_open_v2(!path ? RD_PATH : path, &gRDDB, SQLITE_OPEN_READONLY, NULL);
+ sqlite3_open_v2(OCRDDatabaseGetStorageFilename(), &gRDDB, SQLITE_OPEN_READONLY, NULL);
if (!gRDDB)
{
return OC_STACK_ERROR;
if (!gRDDB)
{
return OC_STACK_ERROR;
static OCStackResult CheckResources(const char *interfaceType, const char *resourceType,
OCDiscoveryPayload *discPayload)
{
static OCStackResult CheckResources(const char *interfaceType, const char *resourceType,
OCDiscoveryPayload *discPayload)
{
- if (initializeDatabase(NULL) != OC_STACK_OK)
+ if (initializeDatabase() != OC_STACK_OK)
{
return OC_STACK_INTERNAL_SERVER_ERROR;
}
{
return OC_STACK_INTERNAL_SERVER_ERROR;
}
OIC_LOG_V(ERROR, TAG, "Payload is already allocated");
return OC_STACK_INTERNAL_SERVER_ERROR;
}
OIC_LOG_V(ERROR, TAG, "Payload is already allocated");
return OC_STACK_INTERNAL_SERVER_ERROR;
}
- if (initializeDatabase(NULL) != OC_STACK_OK)
+ if (initializeDatabase() != OC_STACK_OK)