OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
db_partition.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2013 Juniper Networks, Inc. All rights reserved.
3  */
4 
5 #ifndef ctrlplane_db_partition_h
6 #define ctrlplane_db_partition_h
7 
8 #include <boost/function.hpp>
9 
10 #include "base/util.h"
11 #include "db/db_table.h"
12 #include "db/db_table_partition.h"
13 
14 class DB;
15 class DBClient;
16 class DBTablePartBase;
17 
18 // Database shard interface.
19 // Each shard handles the full pipeline of DB update processing.
20 class DBPartition {
21 public:
22  typedef boost::function<void(void)> Callback;
23 
24  explicit DBPartition(DB *db, int partition_id);
25  ~DBPartition();
26 
27  // Enqueue a request at the start of the DB processing pipeline.
28  // Returns false if the client should stop enqueuing updates.
29  bool EnqueueRequest(DBTablePartBase *tpart, DBClient *client,
30  DBRequest *req);
31 
32  void EnqueueRemove(DBTablePartBase *tpart, DBEntryBase *db_entry);
33 
34  // Enqueue table on change list.
35  void OnTableChange(DBTablePartBase *tpart);
36  bool IsDBQueueEmpty() const;
37  void SetQueueDisable(bool disable);
38 
39  long request_queue_len() const;
40  uint64_t total_request_count() const;
41  uint64_t max_request_queue_len() const;
42  int task_id() const;
43 
44 private:
45  class WorkQueue;
46  class QueueRunner;
47 
48  DB *db_;
49  std::unique_ptr<WorkQueue> work_queue_;
51 
53 };
54 
55 #endif
static int db_partition_task_id_
Definition: db_partition.h:50
uint64_t total_request_count() const
int task_id() const
Definition: db.h:24
bool IsDBQueueEmpty() const
uint64_t max_request_queue_len() const
bool EnqueueRequest(DBTablePartBase *tpart, DBClient *client, DBRequest *req)
std::unique_ptr< WorkQueue > work_queue_
Definition: db_partition.h:49
void SetQueueDisable(bool disable)
DISALLOW_COPY_AND_ASSIGN(DBPartition)
long request_queue_len() const
DBPartition(DB *db, int partition_id)
void EnqueueRemove(DBTablePartBase *tpart, DBEntryBase *db_entry)
boost::function< void(void)> Callback
Definition: db_partition.h:22
void OnTableChange(DBTablePartBase *tpart)