示例#1
0
shared_ptr<Data>
Db::getSubTreeData(size_t level, const NonNegativeInteger& seqNo)
{
  sqlite3_stmt* statement;
  sqlite3_prepare_v2(m_db,
                     "SELECT data FROM cTrees WHERE level=? AND seqNo=?",
                     -1, &statement, nullptr);
  sqlite3_bind_int(statement, 1, level);
  sqlite3_bind_int(statement, 2, seqNo);

  if (sqlite3_step(statement) == SQLITE_ROW) {
    auto result = make_shared<Data>(sqlite3_column_block(statement, 0));
    sqlite3_finalize(statement);
    return result;
  }

  sqlite3_prepare_v2(m_db,
                     "SELECT data FROM pTrees WHERE level=? AND seqNo=?",
                     -1, &statement, nullptr);
  sqlite3_bind_int(statement, 1, level);
  sqlite3_bind_int(statement, 2, seqNo);

  shared_ptr<Data> result;
  if (sqlite3_step(statement) == SQLITE_ROW)
    result = make_shared<Data>(sqlite3_column_block(statement, 0));

  sqlite3_finalize(statement);
  return result;
}
示例#2
0
std::pair<shared_ptr<Leaf>, shared_ptr<Data>>
Db::getLeaf(const NonNegativeInteger& seqNo)
{
  sqlite3_stmt* statement;
  sqlite3_prepare_v2(m_db,
                     "SELECT dataName, signerSeqNo, timestamp, cert\
                      FROM leaves WHERE dataSeqNo=?",
                     -1, &statement, nullptr);

  sqlite3_bind_int(statement, 1, seqNo);

  if (sqlite3_step(statement) == SQLITE_ROW) {
    auto leaf = make_shared<Leaf>(Name(sqlite3_column_block(statement, 0)),
                                  sqlite3_column_int(statement, 2),
                                  seqNo,
                                  sqlite3_column_int(statement, 1));

    shared_ptr<Data> data;
    if (sqlite3_column_bytes(statement, 3) != 0) {
      data = make_shared<Data>(sqlite3_column_block(statement, 3));
    }
    sqlite3_finalize(statement);
    return std::make_pair(leaf, data);
  }
  else {
    sqlite3_finalize(statement);
    return std::make_pair(nullptr, nullptr);
  }
}
示例#3
0
std::vector<shared_ptr<Data>>
Db::getPendingSubTrees()
{
  sqlite3_stmt* statement;
  sqlite3_prepare_v2(m_db,
                     "SELECT data FROM pTrees ORDER BY level DESC",
                     -1, &statement, nullptr);

  std::vector<shared_ptr<Data>> datas;
  while (sqlite3_step(statement) == SQLITE_ROW)
    datas.push_back(make_shared<Data>(sqlite3_column_block(statement, 0)));

  sqlite3_finalize(statement);
  return datas;
}
示例#4
0
文件: pib-db.cpp 项目: CSUL/ndn-tools
Name
PibDb::getDefaultIdentity() const
{
  sqlite3_stmt* statement;
  sqlite3_prepare_v2(m_database,
                     "SELECT identity FROM identities WHERE is_default=1",
                     -1, &statement, nullptr);

  Name identity = NON_EXISTING_IDENTITY;
  if (sqlite3_step(statement) == SQLITE_ROW && sqlite3_column_bytes(statement, 0) != 0) {
    identity = Name(sqlite3_column_block(statement, 0));
  }
  sqlite3_finalize(statement);
  return identity;
}
示例#5
0
文件: pib-db.cpp 项目: CSUL/ndn-tools
shared_ptr<IdentityCertificate>
PibDb::getMgmtCertificate() const
{
  sqlite3_stmt* statement;
  sqlite3_prepare_v2(m_database, "SELECT local_management_cert FROM mgmt", -1, &statement, nullptr);

  shared_ptr<IdentityCertificate> certificate;
  if (sqlite3_step(statement) == SQLITE_ROW) {
    certificate = make_shared<IdentityCertificate>();
    certificate->wireDecode(sqlite3_column_block(statement, 0));
  }

  sqlite3_finalize(statement);
  return certificate;
}
示例#6
0
文件: pib-db.cpp 项目: CSUL/ndn-tools
vector<Name>
PibDb::listIdentities() const
{
  vector<Name> identities;

  sqlite3_stmt* statement;
  sqlite3_prepare_v2(m_database, "SELECT identity FROM identities", -1, &statement, nullptr);

  identities.clear();
  while (sqlite3_step(statement) == SQLITE_ROW) {
    Name name(sqlite3_column_block(statement, 0));
    identities.push_back(name);
  }
  sqlite3_finalize(statement);

  return identities;
}
示例#7
0
文件: pib-db.cpp 项目: CSUL/ndn-tools
Name
PibDb::getDefaultCertNameOfKey(const Name& keyName) const
{
  sqlite3_stmt* statement;
  sqlite3_prepare_v2(m_database,
                     "SELECT certificate_name\
                      FROM certificates JOIN keys ON certificates.key_id=keys.id\
                      WHERE keys.key_name=? AND certificates.is_default=1",
                     -1, &statement, nullptr);
  sqlite3_bind_block(statement, 1, keyName.wireEncode(), SQLITE_TRANSIENT);

  Name certName = NON_EXISTING_CERTIFICATE;
  if (sqlite3_step(statement) == SQLITE_ROW && sqlite3_column_bytes(statement, 0) != 0) {
    certName = Name(sqlite3_column_block(statement, 0));
  }
  sqlite3_finalize(statement);
  return certName;
}
示例#8
0
文件: pib-db.cpp 项目: CSUL/ndn-tools
shared_ptr<IdentityCertificate>
PibDb::getCertificate(const Name& certificateName) const
{
  sqlite3_stmt* statement;
  sqlite3_prepare_v2(m_database,
                     "SELECT certificate_data FROM certificates WHERE certificate_name=?",
                     -1, &statement, nullptr);
  sqlite3_bind_block(statement, 1, certificateName.wireEncode(), SQLITE_TRANSIENT);

  shared_ptr<IdentityCertificate> certificate;
  if (sqlite3_step(statement) == SQLITE_ROW) {
    certificate = make_shared<IdentityCertificate>();
    certificate->wireDecode(sqlite3_column_block(statement, 0));
  }

  sqlite3_finalize(statement);
  return certificate;
}
示例#9
0
文件: pib-db.cpp 项目: CSUL/ndn-tools
Name
PibDb::getDefaultKeyNameOfIdentity(const Name& identity) const
{
  sqlite3_stmt* statement;
  sqlite3_prepare_v2(m_database,
                     "SELECT key_name FROM keys JOIN identities ON keys.identity_id=identities.id\
                      WHERE identities.identity=? AND keys.is_default=1",
                     -1, &statement, nullptr);
  sqlite3_bind_block(statement, 1, identity.wireEncode(), SQLITE_TRANSIENT);

  Name keyName = NON_EXISTING_KEY;
  if (sqlite3_step(statement) == SQLITE_ROW && sqlite3_column_bytes(statement, 0) != 0) {
    keyName = Name(sqlite3_column_block(statement, 0));
  }

  sqlite3_finalize(statement);
  return keyName;
}
示例#10
0
文件: pib-db.cpp 项目: CSUL/ndn-tools
vector<Name>
PibDb::listKeyNamesOfIdentity(const Name& identity) const
{
  vector<Name> keyNames;

  sqlite3_stmt* statement;
  sqlite3_prepare_v2(m_database,
                     "SELECT key_name FROM keys JOIN identities ON keys.identity_id=identities.id\
                      WHERE identities.identity=?",
                     -1, &statement, nullptr);
  sqlite3_bind_block(statement, 1, identity.wireEncode(), SQLITE_TRANSIENT);

  keyNames.clear();
  while (sqlite3_step(statement) == SQLITE_ROW) {
    Name keyName(sqlite3_column_block(statement, 0));
    keyNames.push_back(keyName);
  }

  sqlite3_finalize(statement);
  return keyNames;
}
示例#11
0
文件: pib-db.cpp 项目: CSUL/ndn-tools
vector<Name>
PibDb::listCertNamesOfKey(const Name& keyName) const
{
  vector<Name> certNames;

  sqlite3_stmt* statement;
  sqlite3_prepare_v2(m_database,
                     "SELECT certificate_name\
                      FROM certificates JOIN keys ON certificates.key_id=keys.id\
                      WHERE keys.key_name=?",
                     -1, &statement, nullptr);
  sqlite3_bind_block(statement, 1, keyName.wireEncode(), SQLITE_TRANSIENT);

  certNames.clear();
  while (sqlite3_step(statement) == SQLITE_ROW) {
    Name name(sqlite3_column_block(statement, 0));
    certNames.push_back(name);
  }
  sqlite3_finalize(statement);

  return certNames;
}