cmd: Switch code to use ndn-cxx
Implementation moved to ndn::chronoshare namespace
Change-Id: I1d7a46f03133a8e382f0a2bb272311fbd18c95c4
diff --git a/cmd/dump-db.cpp b/cmd/dump-db.cpp
index 3333507..cb78224 100644
--- a/cmd/dump-db.cpp
+++ b/cmd/dump-db.cpp
@@ -18,24 +18,31 @@
* See AUTHORS.md for complete list of ChronoShare authors and contributors.
*/
-#include "ccnx-wrapper.hpp"
#include "dispatcher.hpp"
-#include "fs-watcher.hpp"
-#include "logging.hpp"
+#include "sync-core.hpp"
+
+#include "core/logging.hpp"
+
+#include <ndn-cxx/util/string-helper.hpp>
#include <boost/lexical_cast.hpp>
-#include <boost/make_shared.hpp>
-using namespace boost;
-using namespace std;
-using namespace Ndnx;
+namespace ndn {
+namespace chronoshare {
_LOG_INIT(DumpDb);
+using std::cout;
+using std::cerr;
+using std::endl;
+using std::setw;
+
+namespace fs = boost::filesystem;
+
class StateLogDumper : public DbHelper
{
public:
- StateLogDumper(const filesystem::path& path)
+ StateLogDumper(const fs::path& path)
: DbHelper(path / ".chronoshare", "sync-log.db")
{
}
@@ -45,10 +52,10 @@
{
sqlite3_stmt* stmt;
sqlite3_prepare_v2(m_db,
- "SELECT hash(device_name, seq_no) FROM (SELECT * FROM SyncNodes ORDER BY device_name)",
+ "SELECT hash(device_name, seq_no) FROM(SELECT * FROM SyncNodes ORDER BY device_name)",
-1, &stmt, 0);
sqlite3_step(stmt);
- Hash hash(sqlite3_column_blob(stmt, 0), sqlite3_column_bytes(stmt, 0));
+ ndn::Buffer hash(sqlite3_column_blob(stmt, 0), sqlite3_column_bytes(stmt, 0));
sqlite3_finalize(stmt);
sqlite3_prepare_v2(m_db, "SELECT device_name, seq_no, last_known_locator, last_update "
@@ -57,7 +64,7 @@
-1, &stmt, 0);
cout.setf(std::ios::left, std::ios::adjustfield);
- cout << ">> SYNC NODES (" << hash.shortHash() << ") <<" << endl;
+ cout << ">> SYNC NODES(" << toHex(hash).substr(0, 8) << ") <<" << endl;
cout << "===================================================================================="
<< endl;
cout << setw(30) << "device_name"
@@ -68,12 +75,18 @@
while (sqlite3_step(stmt) == SQLITE_ROW) {
cout << setw(30)
- << lexical_cast<string>(Name(sqlite3_column_blob(stmt, 0), sqlite3_column_bytes(stmt, 0)))
+ << (Name(Block(sqlite3_column_blob(stmt, 0), (sqlite3_column_bytes(stmt, 0))))).toUri()
<< " | "; // device_name
cout << setw(6) << sqlite3_column_int64(stmt, 1) << " | "; // seq_no
- cout << setw(20)
- << lexical_cast<string>(Name(sqlite3_column_blob(stmt, 2), sqlite3_column_bytes(stmt, 2)))
- << " | "; // locator
+ cout << setw(20);
+ if (sqlite3_column_bytes(stmt, 2) > 0) {
+ cout << (Name(Block(sqlite3_column_blob(stmt, 2), (sqlite3_column_bytes(stmt, 2))))).toUri();
+ }
+ else {
+ cout << "NULL";
+ }
+ cout << " | "; // locator
+
if (sqlite3_column_bytes(stmt, 3) > 0) {
cout << setw(10) << sqlite3_column_text(stmt, 3) << endl;
}
@@ -88,7 +101,7 @@
DumpLog()
{
sqlite3_stmt* stmt;
- sqlite3_prepare_v2(m_db, "SELECT state_hash, last_update, state_id "
+ sqlite3_prepare_v2(m_db, "SELECT state_hash, last_update, state_id, last_update "
" FROM SyncLog "
" ORDER BY last_update",
-1, &stmt, 0);
@@ -104,7 +117,9 @@
while (sqlite3_step(stmt) == SQLITE_ROW) {
cout << setw(10)
- << Hash(sqlite3_column_blob(stmt, 0), sqlite3_column_bytes(stmt, 0)).shortHash()
+ << toHex(reinterpret_cast<const uint8_t*>(sqlite3_column_blob(stmt, 0)),
+ sqlite3_column_bytes(stmt, 0))
+ .substr(0, 8)
<< " | "; // state hash
sqlite3_stmt* stmt2;
@@ -118,8 +133,7 @@
sqlite3_bind_int64(stmt2, 1, sqlite3_column_int64(stmt, 2));
while (sqlite3_step(stmt2) == SQLITE_ROW) {
- cout << lexical_cast<string>(
- Name(sqlite3_column_blob(stmt2, 0), sqlite3_column_bytes(stmt2, 0)))
+ cout << (Name(Block(sqlite3_column_blob(stmt2, 0), (sqlite3_column_bytes(stmt2, 0))))).toUri()
<< "(" << sqlite3_column_int64(stmt2, 1) << "); ";
}
@@ -134,7 +148,7 @@
class ActionLogDumper : public DbHelper
{
public:
- ActionLogDumper(const filesystem::path& path)
+ ActionLogDumper(const fs::path& path)
: DbHelper(path / ".chronoshare", "action-log.db")
{
}
@@ -162,7 +176,7 @@
while (sqlite3_step(stmt) == SQLITE_ROW) {
cout << setw(30)
- << lexical_cast<string>(Name(sqlite3_column_blob(stmt, 0), sqlite3_column_bytes(stmt, 0)))
+ << (Name(Block(sqlite3_column_blob(stmt, 0), (sqlite3_column_bytes(stmt, 0))))).toUri()
<< " | "; // device_name
cout << setw(6) << sqlite3_column_int64(stmt, 1) << " | "; // seq_no
cout << setw(6) << (sqlite3_column_int(stmt, 2) == 0 ? "UPDATE" : "DELETE") << " | "; // action
@@ -171,7 +185,9 @@
if (sqlite3_column_int(stmt, 2) == 0) {
cout << setw(10)
- << Hash(sqlite3_column_blob(stmt, 5), sqlite3_column_bytes(stmt, 5)).shortHash()
+ << toHex(reinterpret_cast<const uint8_t*>(sqlite3_column_blob(stmt, 5)),
+ sqlite3_column_bytes(stmt, 5))
+ .substr(0, 8)
<< " | ";
cout << setw(7) << sqlite3_column_int64(stmt, 6) << " | "; // seg_num
}
@@ -179,8 +195,8 @@
cout << " | | ";
if (sqlite3_column_bytes(stmt, 7) > 0) {
- cout << setw(30) << lexical_cast<string>(
- Name(sqlite3_column_blob(stmt, 7), sqlite3_column_bytes(stmt, 7)))
+ cout << setw(30)
+ << (Name(Block(sqlite3_column_blob(stmt, 7), (sqlite3_column_bytes(stmt, 7))))).toUri()
<< " | "; // parent_device_name
cout << setw(5) << sqlite3_column_int64(stmt, 8); // seq_no
}
@@ -194,45 +210,50 @@
}
void
- DumpActionData(const Ccnx::Name& deviceName, int64_t seqno)
+ DumpActionData(const ndn::Name& deviceName, int64_t seqno)
{
sqlite3_stmt* stmt;
sqlite3_prepare_v2(m_db,
"SELECT action_content_object, action_name FROM ActionLog WHERE device_name = ? and seq_no = ?",
-1, &stmt, 0);
- Ccnx::CcnxCharbufPtr device_name = deviceName.toCcnxCharbuf();
- sqlite3_bind_blob(stmt, 1, device_name->buf(), device_name->length(), SQLITE_STATIC);
+ const ndn::Block nameBlock = deviceName.wireEncode();
+ sqlite3_bind_blob(stmt, 1, nameBlock.wire(), nameBlock.size(), SQLITE_STATIC);
sqlite3_bind_int64(stmt, 2, seqno);
cout << "Dumping action data for: [" << deviceName << ", " << seqno << "]" << endl;
if (sqlite3_step(stmt) == SQLITE_ROW) {
- PcoPtr pco = make_shared<ParsedContentObject>(reinterpret_cast<const unsigned char*>(
- sqlite3_column_blob(stmt, 0)),
- sqlite3_column_bytes(stmt, 0));
- Ccnx::Name actionName = Ccnx::Name(sqlite3_column_blob(stmt, 1), sqlite3_column_bytes(stmt, 0));
- if (pco) {
- ActionItemPtr action = deserializeMsg<ActionItem>(pco->content());
+ ndn::shared_ptr<ndn::Data> data = ndn::make_shared<ndn::Data>(
+ ndn::Block(reinterpret_cast<const uint8_t*>(sqlite3_column_blob(stmt, 0)),
+ sqlite3_column_bytes(stmt, 0)));
+ ndn::Name actionName =
+ Name(Block(sqlite3_column_blob(stmt, 1), (sqlite3_column_bytes(stmt, 1))));
+ if (data) {
+ ActionItemPtr action = deserializeMsg<ActionItem>(
+ ndn::Buffer(data->getContent().value(), data->getContent().value_size()));
if (action) {
- cout << "Action data size : " << pco->content().size() << endl;
+ cout << "Action data size : " << data->getContent().size() << endl;
cout << "Action data name : " << actionName << endl;
- string type = action->action() == ActionItem::UPDATE ? "UPDATE" : "DELETE";
+ std::string type = action->action() == ActionItem::UPDATE ? "UPDATE" : "DELETE";
cout << "Action Type = " << type << endl;
cout << "Timestamp = " << action->timestamp() << endl;
- string filename = action->filename();
+ std::string filename = action->filename();
cout << "Filename = " << filename << endl;
if (action->has_seg_num()) {
cout << "Segment number = " << action->seg_num() << endl;
}
if (action->has_file_hash()) {
- cout << "File hash = " << Hash(action->file_hash().c_str(), action->file_hash().size())
+ cout << "File hash = "
+ << toHex(reinterpret_cast<const uint8_t*>(action->file_hash().data()),
+ action->file_hash().size())
+ .substr(0, 8)
<< endl;
}
}
else {
- cerr << "Error! Failed to parse action from pco! " << endl;
+ cerr << "Error! Failed to parse action from data! " << endl;
}
}
else {
- cerr << "Error! Invalid pco! " << endl;
+ cerr << "Error! Invalid data! " << endl;
}
}
else {
@@ -245,7 +266,7 @@
class FileStateDumper : public DbHelper
{
public:
- FileStateDumper(const filesystem::path& path)
+ FileStateDumper(const fs::path& path)
: DbHelper(path / ".chronoshare", "file-state.db")
{
}
@@ -272,11 +293,14 @@
while (sqlite3_step(stmt) == SQLITE_ROW) {
cout << setw(40) << sqlite3_column_text(stmt, 0) << " | ";
cout << setw(30)
- << lexical_cast<string>(Name(sqlite3_column_blob(stmt, 1), sqlite3_column_bytes(stmt, 1)))
+ << Name(Block(sqlite3_column_blob(stmt, 1), (sqlite3_column_bytes(stmt, 1)))).toUri()
<< " | ";
cout << setw(6) << sqlite3_column_int64(stmt, 2) << " | ";
cout << setw(10)
- << Hash(sqlite3_column_blob(stmt, 3), sqlite3_column_bytes(stmt, 3)).shortHash() << " | ";
+ << toHex(reinterpret_cast<const uint8_t*>(sqlite3_column_blob(stmt, 3)),
+ sqlite3_column_bytes(stmt, 3))
+ .substr(0, 8)
+ << " | ";
cout << setw(6) << sqlite3_column_int64(stmt, 6) << " | ";
if (sqlite3_column_bytes(stmt, 7) == 0)
cout << setw(20) << "<NULL>"
@@ -297,13 +321,13 @@
int
main(int argc, char* argv[])
{
- if (argc != 3 && !(argc == 5 && string(argv[1]) == "action")) {
+ if (argc != 3 && !(argc == 5 && std::string(argv[1]) == "action")) {
cerr << "Usage: ./dump-db state|action|file|all <path-to-shared-folder>" << endl;
cerr << " or: ./dump-db action <path-to-shared-folder> <device-name> <seq-no>" << endl;
return 1;
}
- string type = argv[1];
+ std::string type = argv[1];
if (type == "state") {
StateLogDumper dumper(argv[2]);
dumper.DumpState();
@@ -312,7 +336,7 @@
else if (type == "action") {
ActionLogDumper dumper(argv[2]);
if (argc == 5) {
- dumper.DumpActionData(string(argv[3]), boost::lexical_cast<int64_t>(argv[4]));
+ dumper.DumpActionData(std::string(argv[3]), boost::lexical_cast<int64_t>(argv[4]));
}
else {
dumper.Dump();
@@ -345,6 +369,14 @@
return 1;
}
-
return 0;
}
+
+} // namespace chronoshare
+} // namespace ndn
+
+int
+main(int argc, char* argv[])
+{
+ return ndn::chronoshare::main(argc, argv);
+}