summaryrefslogtreecommitdiff
path: root/src/cli_bin.cpp
diff options
context:
space:
mode:
authorAn-Cheng Huang <ancheng@vyatta.com>2011-03-17 11:48:54 -0700
committerAn-Cheng Huang <ancheng@vyatta.com>2011-03-17 11:48:54 -0700
commiteb9f5718d412022015bb65eb08c30785c79e79e6 (patch)
treebe0b6a9de27965e39c44c5c8a88adf9caa13abf8 /src/cli_bin.cpp
parentcda3f423c311fd30e8cc24e2de67d99baf352b2a (diff)
downloadvyatta-cfg-eb9f5718d412022015bb65eb08c30785c79e79e6.tar.gz
vyatta-cfg-eb9f5718d412022015bb65eb08c30785c79e79e6.zip
add config path abstraction and high-level caching
* part of the config backend cleanup/optimization work. * improves the performance of "load" (w/o commit) by ~55% and "show" by ~15%.
Diffstat (limited to 'src/cli_bin.cpp')
-rw-r--r--src/cli_bin.cpp25
1 files changed, 11 insertions, 14 deletions
diff --git a/src/cli_bin.cpp b/src/cli_bin.cpp
index 20da924..4d32c15 100644
--- a/src/cli_bin.cpp
+++ b/src/cli_bin.cpp
@@ -80,7 +80,7 @@ static const bool op_need_cfg_node_args[] = {
#define OP_need_cfg_node_args op_need_cfg_node_args[op_idx]
static void
-doSet(Cstore& cstore, const vector<string>& path_comps)
+doSet(Cstore& cstore, const Cpath& path_comps)
{
if (!cstore.validateSetPath(path_comps)) {
bye("invalid set path\n");
@@ -91,7 +91,7 @@ doSet(Cstore& cstore, const vector<string>& path_comps)
}
static void
-doDelete(Cstore& cstore, const vector<string>& path_comps)
+doDelete(Cstore& cstore, const Cpath& path_comps)
{
if (!cstore.deleteCfgPath(path_comps)) {
bye("delete failed\n");
@@ -99,7 +99,7 @@ doDelete(Cstore& cstore, const vector<string>& path_comps)
}
static void
-doActivate(Cstore& cstore, const vector<string>& path_comps)
+doActivate(Cstore& cstore, const Cpath& path_comps)
{
if (!cstore.validateActivatePath(path_comps)) {
bye("%s validate failed", OP_str);
@@ -110,7 +110,7 @@ doActivate(Cstore& cstore, const vector<string>& path_comps)
}
static void
-doDeactivate(Cstore& cstore, const vector<string>& path_comps)
+doDeactivate(Cstore& cstore, const Cpath& path_comps)
{
if (!cstore.validateDeactivatePath(path_comps)) {
bye("%s validate failed", OP_str);
@@ -121,7 +121,7 @@ doDeactivate(Cstore& cstore, const vector<string>& path_comps)
}
static void
-doRename(Cstore& cstore, const vector<string>& path_comps)
+doRename(Cstore& cstore, const Cpath& path_comps)
{
if (!cstore.validateRenameArgs(path_comps)) {
bye("invalid rename args\n");
@@ -132,7 +132,7 @@ doRename(Cstore& cstore, const vector<string>& path_comps)
}
static void
-doCopy(Cstore& cstore, const vector<string>& path_comps)
+doCopy(Cstore& cstore, const Cpath& path_comps)
{
if (!cstore.validateCopyArgs(path_comps)) {
bye("invalid copy args\n");
@@ -143,7 +143,7 @@ doCopy(Cstore& cstore, const vector<string>& path_comps)
}
static void
-doComment(Cstore& cstore, const vector<string>& path_comps)
+doComment(Cstore& cstore, const Cpath& path_comps)
{
if (!cstore.commentCfgPath(path_comps)) {
bye("comment cfg path failed\n");
@@ -151,7 +151,7 @@ doComment(Cstore& cstore, const vector<string>& path_comps)
}
static void
-doDiscard(Cstore& cstore, const vector<string>& args)
+doDiscard(Cstore& cstore, const Cpath& args)
{
if (args.size() > 0) {
OUTPUT_USER("Invalid discard command\n");
@@ -163,7 +163,7 @@ doDiscard(Cstore& cstore, const vector<string>& args)
}
static void
-doMove(Cstore& cstore, const vector<string>& path_comps)
+doMove(Cstore& cstore, const Cpath& path_comps)
{
if (!cstore.validateMoveArgs(path_comps)) {
bye("invalid move args\n");
@@ -174,7 +174,7 @@ doMove(Cstore& cstore, const vector<string>& path_comps)
}
typedef void (*OpFuncT)(Cstore& cstore,
- const vector<string>& path_comps);
+ const Cpath& path_comps);
OpFuncT OpFunc[] = {
&doSet,
&doDelete,
@@ -214,10 +214,7 @@ main(int argc, char **argv)
// actual CLI operations use the edit levels from environment, so pass true.
Cstore *cstore = Cstore::createCstore(true);
- vector<string> path_comps;
- for (int i = 1; i < argc; i++) {
- path_comps.push_back(argv[i]);
- }
+ Cpath path_comps(const_cast<const char **>(argv + 1), argc - 1);
// call the op function
OpFunc[op_idx](*cstore, path_comps);