'src/internal',
'../include',
'../stack/include',
+ '../stack/include/internal',
'../../include',
'../logger/include',
'../../oc_logger/include',
+ '../connectivity/api',
+ '../security/include'
])
if 'CLIENT' in rd_mode:
/**
* Opens the RD publish database.
*
- * @param path to the database file.
- *
* @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.
#include "octypes.h"
#include "oic_malloc.h"
#include "oic_string.h"
+#include "ocstackinternal.h"
#ifdef RD_SERVER
#define TAG "OIC_RD_DATABASE"
-#define RD_PATH "RD.db"
static sqlite3 *gRDDB = NULL;
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))
{
}
int sqlRet;
- 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.");
- 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)
{
#include "rd_database.h"
+#include <stdlib.h>
#include <string.h>
#include "payload_logging.h"
#include "ocpayload.h"
{
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()
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.
*
#ifdef RD_SERVER
/**
+ * 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.
#ifdef RD_SERVER
-#define RD_PATH "RD.db"
+static const char *gRDPath = "RD.db";
static sqlite3 *gRDDB = NULL;
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);
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.");
}
- 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;
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;
}
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)
{
goto exit;
}