Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions common/c-api/dbconnector.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,16 @@ SWSSResult SWSSDBConnector_new_named(const char *dbName, uint32_t timeout_ms, ui
SWSSTry(*outDb = (SWSSDBConnector) new DBConnector(string(dbName), timeout_ms, isTcpConn));
}

SWSSResult SWSSDBConnector_new_keyed(const char *dbName, uint32_t timeout_ms, uint8_t isTcpConn,
const char *containerName, const char *netns, SWSSDBConnector *outDb) {
SWSSTry({
SonicDBKey key;
key.containerName = string(containerName);
key.netns = string(netns);
*outDb = (SWSSDBConnector) new DBConnector(string(dbName), timeout_ms, isTcpConn, key);
});
}

SWSSResult SWSSDBConnector_free(SWSSDBConnector db) {
SWSSTry(delete (DBConnector *)db);
}
Expand Down
4 changes: 4 additions & 0 deletions common/c-api/dbconnector.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,10 @@ SWSSResult SWSSDBConnector_new_unix(int32_t dbId, const char *sock_path, uint32_
// Pass 0 to timeout for infinity
SWSSResult SWSSDBConnector_new_named(const char *dbName, uint32_t timeout_ms, uint8_t isTcpConn, SWSSDBConnector *outDb);

// Pass 0 to timeout for infinity
SWSSResult SWSSDBConnector_new_keyed(const char *dbName, uint32_t timeout_ms, uint8_t isTcpConn,
const char *containerName, const char *netns, SWSSDBConnector *outDb);

SWSSResult SWSSDBConnector_free(SWSSDBConnector db);

// Outputs 0 when key doesn't exist, 1 when key was deleted
Expand Down
8 changes: 7 additions & 1 deletion tests/c_api_ut.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,12 @@ TEST(c_api, DBConnector) {
EXPECT_STREQ(SWSSStrRef_c_str((SWSSStrRef)val), "myval");
SWSSString_free(val);

// test new_keyed - empty containerName and netns should be identical to new_named
SWSSDBConnector_new_keyed("TEST_DB", 1000, true, "", "", &db);
SWSSDBConnector_get(db, "mykey", &val);
EXPECT_STREQ(SWSSStrRef_c_str((SWSSStrRef)val), "myval");
SWSSString_free(val);

SWSSDBConnector_exists(db, "mykey", &exists);
EXPECT_TRUE(exists);

Expand Down Expand Up @@ -536,4 +542,4 @@ TEST(c_api, Logger) {
EXPECT_STREQ(LOG_LEVEL_FOR_TEST, "DEBUG");
cout << "Checking log output for " << LOG_NAME_FOR_TEST << endl;
EXPECT_STREQ(LOG_OUTPUT_FOR_TEST, "STDOUT");
}
}
Loading