OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
cql_if.h
Go to the documentation of this file.
1 //
2 // Copyright (c) 2015 Juniper Networks, Inc. All rights reserved.
3 //
4 
5 #ifndef DATABASE_CASSANDRA_CQL_CQL_IF_H_
6 #define DATABASE_CASSANDRA_CQL_CQL_IF_H_
7 
8 #include <string>
9 #include <vector>
10 
11 #include <tbb/atomic.h>
12 #include <database/gendb_if.h>
14 #include <database/cassandra/cql/cql_types.h>
17 
18 class EventManager;
19 
20 namespace cass {
21 namespace cql {
22 
23 class CqlIf : public GenDb::GenDbIf {
24  public:
26  const std::vector<std::string> &cassandra_ips,
27  int cassandra_port,
28  const std::string &cassandra_user,
29  const std::string &cassandra_password,
30  bool use_ssl,
31  const std::string &ca_certs_path,
32  bool create_schema=false);
33  CqlIf();
34  virtual ~CqlIf();
35  // Init/Uninit
36  virtual bool Db_Init();
37  virtual void Db_Uninit();
38  virtual void Db_SetInitDone(bool);
39  // Tablespace
40  virtual bool Db_SetTablespace(const std::string &tablespace);
41  virtual bool Db_AddSetTablespace(const std::string &tablespace,
42  const std::string &replication_factor = "1");
43  // Column family
44  virtual bool Db_AddColumnfamily(const GenDb::NewCf &cf,
45  const std::string &compaction_strategy);
46  virtual bool Db_UseColumnfamily(const GenDb::NewCf &cf);
47  virtual bool Db_UseColumnfamily(const std::string &cfname);
48  // Index
49  virtual bool Db_CreateIndex(const std::string &cfname,
50  const std::string &column, const std::string &indexname,
52  // Column
53  virtual bool Db_AddColumn(std::auto_ptr<GenDb::ColList> cl,
54  GenDb::DbConsistency::type dconsistency,
56  virtual bool Db_AddColumnSync(std::auto_ptr<GenDb::ColList> cl,
57  GenDb::DbConsistency::type dconsistency);
58  // Read
59  virtual bool Db_GetRow(GenDb::ColList *out, const std::string &cfname,
60  const GenDb::DbDataValueVec &rowkey,
61  GenDb::DbConsistency::type dconsistency);
62  virtual bool Db_GetRow(GenDb::ColList *out, const std::string &cfname,
63  const GenDb::DbDataValueVec &rowkey,
64  GenDb::DbConsistency::type dconsistency,
65  const GenDb::ColumnNameRange &crange,
66  const GenDb::FieldNamesToReadVec &read_vec);
67  virtual bool Db_GetMultiRow(GenDb::ColListVec *out,
68  const std::string &cfname,
69  const std::vector<GenDb::DbDataValueVec> &v_rowkey);
70  virtual bool Db_GetMultiRow(GenDb::ColListVec *out,
71  const std::string &cfname,
72  const std::vector<GenDb::DbDataValueVec> &v_rowkey,
73  const GenDb::ColumnNameRange &crange);
74  virtual bool Db_GetMultiRow(GenDb::ColListVec *out,
75  const std::string &cfname,
76  const std::vector<GenDb::DbDataValueVec> &v_rowkey,
77  const GenDb::ColumnNameRange &crange,
78  const GenDb::FieldNamesToReadVec &read_vec,
79  GenDb::DbConsistency::type dconsistency =
81  virtual bool Db_GetRowAsync(const std::string &cfname,
82  const GenDb::DbDataValueVec &rowkey,
83  GenDb::DbConsistency::type dconsistency,
85  virtual bool Db_GetRowAsync(const std::string &cfname,
86  const GenDb::DbDataValueVec &rowkey,
87  GenDb::DbConsistency::type dconsistency, int task_id,
88  int task_instance, GenDb::GenDbIf::DbGetRowCb cb);
89  virtual bool Db_GetRowAsync(const std::string &cfname,
90  const GenDb::DbDataValueVec &rowkey,
91  const GenDb::ColumnNameRange &crange,
92  GenDb::DbConsistency::type dconsistency,
94  virtual bool Db_GetRowAsync(const std::string &cfname,
95  const GenDb::DbDataValueVec &rowkey,
96  const GenDb::ColumnNameRange &crange,
97  GenDb::DbConsistency::type dconsistency, int task_id,
98  int task_instance, GenDb::GenDbIf::DbGetRowCb cb);
99  virtual bool Db_GetRowAsync(const std::string &cfname,
100  const GenDb::DbDataValueVec &rowkey, const GenDb::ColumnNameRange &crange,
101  const GenDb::WhereIndexInfoVec &where_vec,
103  virtual bool Db_GetAllRows(GenDb::ColListVec *out,
104  const std::string &cfname, GenDb::DbConsistency::type dconsistency);
105  // Queue
106  virtual bool Db_GetQueueStats(uint64_t *queue_count,
107  uint64_t *enqueues) const;
108  virtual void Db_SetQueueWaterMark(bool high, size_t queue_count,
109  DbQueueWaterMarkCb cb);
110  virtual void Db_ResetQueueWaterMarks();
111  // Stats
112  virtual bool Db_GetStats(std::vector<GenDb::DbTableInfo> *vdbti,
113  GenDb::DbErrors *dbe);
114  virtual bool Db_GetCumulativeStats(std::vector<GenDb::DbTableInfo> *vdbti,
115  GenDb::DbErrors *dbe) const;
116  virtual bool Db_GetCqlMetrics(Metrics *metrics) const;
117  virtual bool Db_GetCqlStats(DbStats *db_stats) const;
118  // Connection
119  virtual std::vector<GenDb::Endpoint> Db_GetEndpoints() const;
120 
121  private:
123  std::auto_ptr<GenDb::ColList> row,
124  std::string cfname, GenDb::GenDbIf::DbAddColumnCb cb);
126  std::auto_ptr<GenDb::ColList> row,
127  std::string cfname, GenDb::GenDbIf::DbGetRowCb cb);
129  std::auto_ptr<GenDb::ColList> row,
130  std::string cfname, GenDb::GenDbIf::DbGetRowCb cb,
131  bool use_worker, int task_id, int task_instance);
132  void IncrementTableWriteStats(const std::string &table_name);
133  void IncrementTableWriteStats(const std::string &table_name,
134  uint64_t num_writes);
135  void IncrementTableWriteFailStats(const std::string &table_name);
136  void IncrementTableWriteFailStats(const std::string &table_name,
137  uint64_t num_writes);
139  const std::string &table_name);
140  void IncrementTableReadStats(const std::string &table_name);
141  void IncrementTableReadStats(const std::string &table_name,
142  uint64_t num_reads);
143  void IncrementTableReadFailStats(const std::string &table_name);
144  void IncrementTableReadFailStats(const std::string &table_name,
145  uint64_t num_reads);
147  const std::string &table_name);
148  void IncrementErrors(GenDb::IfErrors::Type err_type);
149 
150  boost::scoped_ptr<interface::CassLibrary> cci_;
151  boost::scoped_ptr<CqlIfImpl> impl_;
152  tbb::atomic<bool> initialized_;
153  std::vector<GenDb::Endpoint> endpoints_;
154  mutable tbb::mutex stats_mutex_;
158 };
159 
160 } // namespace cql
161 } // namespace cass
162 
163 #endif // DATABASE_CASSANDRA_CQL_CQL_IF_H_
void IncrementTableWriteStats(const std::string &table_name)
Definition: cql_if.cc:2991
boost::scoped_ptr< CqlIfImpl > impl_
Definition: cql_if.h:151
tbb::atomic< bool > initialized_
Definition: cql_if.h:152
virtual void Db_Uninit()
Definition: cql_if.cc:2552
tbb::mutex stats_mutex_
Definition: cql_if.h:154
virtual ~CqlIf()
Definition: cql_if.cc:2537
void OnAsyncRowGetCompletion(GenDb::DbOpResult::type drc, std::auto_ptr< GenDb::ColList > row, std::string cfname, GenDb::GenDbIf::DbGetRowCb cb)
Definition: cql_if.cc:2715
std::vector< FieldNamesToReadInfo > FieldNamesToReadVec
Definition: gendb_if.h:238
virtual bool Db_GetCumulativeStats(std::vector< GenDb::DbTableInfo > *vdbti, GenDb::DbErrors *dbe) const
Definition: cql_if.cc:2968
virtual bool Db_Init()
Definition: cql_if.cc:2541
virtual std::vector< GenDb::Endpoint > Db_GetEndpoints() const
Definition: cql_if.cc:3053
void IncrementTableReadBackPressureFailStats(const std::string &table_name)
Definition: cql_if.cc:3019
virtual bool Db_UseColumnfamily(const GenDb::NewCf &cf)
Definition: cql_if.cc:2619
virtual bool Db_CreateIndex(const std::string &cfname, const std::string &column, const std::string &indexname, const GenDb::ColIndexMode::type index_mode=GenDb::ColIndexMode::NONE)
Definition: cql_if.cc:2637
bool create_schema_
Definition: cql_if.h:157
void IncrementErrors(GenDb::IfErrors::Type err_type)
Definition: cql_if.cc:3047
bool use_prepared_for_insert_
Definition: cql_if.h:156
virtual bool Db_GetCqlMetrics(Metrics *metrics) const
Definition: cql_if.cc:2975
virtual bool Db_SetTablespace(const std::string &tablespace)
Definition: cql_if.cc:2588
virtual bool Db_GetAllRows(GenDb::ColListVec *out, const std::string &cfname, GenDb::DbConsistency::type dconsistency)
Definition: cql_if.cc:2931
virtual bool Db_GetStats(std::vector< GenDb::DbTableInfo > *vdbti, GenDb::DbErrors *dbe)
Definition: cql_if.cc:2961
void IncrementTableWriteBackPressureFailStats(const std::string &table_name)
Definition: cql_if.cc:3013
uint8_t type
Definition: load_balance.h:109
std::vector< DbDataValue > DbDataValueVec
Definition: gendb_if.h:100
virtual bool Db_AddSetTablespace(const std::string &tablespace, const std::string &replication_factor="1")
Definition: cql_if.cc:2571
void OnAsyncColumnAddCompletion(GenDb::DbOpResult::type drc, std::auto_ptr< GenDb::ColList > row, std::string cfname, GenDb::GenDbIf::DbAddColumnCb cb)
Definition: cql_if.cc:2651
virtual void Db_SetQueueWaterMark(bool high, size_t queue_count, DbQueueWaterMarkCb cb)
Definition: cql_if.cc:2951
boost::function< void(DbOpResult::type, std::auto_ptr< ColList >)> DbGetRowCb
Definition: gendb_if.h:256
virtual void Db_ResetQueueWaterMarks()
Definition: cql_if.cc:2956
virtual bool Db_GetMultiRow(GenDb::ColListVec *out, const std::string &cfname, const std::vector< GenDb::DbDataValueVec > &v_rowkey)
Definition: cql_if.cc:2870
std::vector< WhereIndexInfo > WhereIndexInfoVec
Definition: gendb_if.h:233
virtual bool Db_GetCqlStats(DbStats *db_stats) const
Definition: cql_if.cc:2979
GenDb::GenDbIfStats stats_
Definition: cql_if.h:155
boost::ptr_vector< ColList > ColListVec
Definition: gendb_if.h:208
std::vector< GenDb::Endpoint > endpoints_
Definition: cql_if.h:153
virtual bool Db_GetQueueStats(uint64_t *queue_count, uint64_t *enqueues) const
Definition: cql_if.cc:2945
void IncrementTableWriteFailStats(const std::string &table_name)
Definition: cql_if.cc:3002
boost::function< void(size_t)> DbQueueWaterMarkCb
Definition: gendb_if.h:253
virtual bool Db_AddColumnSync(std::auto_ptr< GenDb::ColList > cl, GenDb::DbConsistency::type dconsistency)
Definition: cql_if.cc:2749
virtual bool Db_AddColumnfamily(const GenDb::NewCf &cf, const std::string &compaction_strategy)
Definition: cql_if.cc:2598
void IncrementTableReadStats(const std::string &table_name)
Definition: cql_if.cc:3025
virtual bool Db_AddColumn(std::auto_ptr< GenDb::ColList > cl, GenDb::DbConsistency::type dconsistency, GenDb::GenDbIf::DbAddColumnCb cb)
Definition: cql_if.cc:2720
boost::scoped_ptr< interface::CassLibrary > cci_
Definition: cql_if.h:150
boost::function< void(DbOpResult::type)> DbAddColumnCb
Definition: gendb_if.h:254
void IncrementTableReadFailStats(const std::string &table_name)
Definition: cql_if.cc:3036
virtual bool Db_GetRowAsync(const std::string &cfname, const GenDb::DbDataValueVec &rowkey, GenDb::DbConsistency::type dconsistency, GenDb::GenDbIf::DbGetRowCb cb)
Definition: cql_if.cc:2793
virtual bool Db_GetRow(GenDb::ColList *out, const std::string &cfname, const GenDb::DbDataValueVec &rowkey, GenDb::DbConsistency::type dconsistency)
Definition: cql_if.cc:2838
static EventManager evm
virtual void Db_SetInitDone(bool)
Definition: cql_if.cc:2559