From 0d9ddae97572aafcca0e3944c076d74c86e20472 Mon Sep 17 00:00:00 2001 From: Stefan Sayer Date: Wed, 1 Aug 2007 16:40:56 +0000 Subject: [PATCH] added functions to add and set credit, and _list function to easily use with xmlrpc2di git-svn-id: http://svn.berlios.de/svnroot/repos/sems/trunk@417 8eb893ce-cfd4-0310-b710-fb5ebe64c474 --- apps/examples/tutorial/cc_acc/CCAcc.cpp | 32 +++++++++++++++++++++---- apps/examples/tutorial/cc_acc/CCAcc.h | 5 ++++ 2 files changed, 33 insertions(+), 4 deletions(-) diff --git a/apps/examples/tutorial/cc_acc/CCAcc.cpp b/apps/examples/tutorial/cc_acc/CCAcc.cpp index 3790539b..c421b90d 100644 --- a/apps/examples/tutorial/cc_acc/CCAcc.cpp +++ b/apps/examples/tutorial/cc_acc/CCAcc.cpp @@ -31,8 +31,8 @@ CCAcc* CCAcc::instance() } CCAcc::CCAcc() { - // add some sample credits - credits["12345"] = 100; + // add some sample credits... + // credits["12345"] = 100; } CCAcc::~CCAcc() { } @@ -41,10 +41,20 @@ void CCAcc::invoke(const string& method, const AmArg& args, AmArg& ret) { if(method == "getCredit"){ ret.push(getCredit(args.get(0).asCStr())); - } - else if(method == "subtractCredit"){ + } else if(method == "subtractCredit"){ ret.push(subtractCredit(args.get(0).asCStr(), args.get(1).asInt())); + } else if(method == "addCredit"){ + ret.push(addCredit(args.get(0).asCStr(), + args.get(1).asInt())); + } else if(method == "setCredit"){ + ret.push(setCredit(args.get(0).asCStr(), + args.get(1).asInt())); + } else if(method == "_list"){ + ret.push("getCredit"); + ret.push("subtractCredit"); + ret.push("setCredit"); + ret.push("addCredit"); } else throw AmDynInvoke::NotImplemented(method); @@ -64,6 +74,20 @@ int CCAcc::getCredit(string pin) { return res; } +int CCAcc::setCredit(string pin, int amount) { + credits_mut.lock(); + credits[pin] = amount; + credits_mut.unlock(); + return amount; +} + +int CCAcc::addCredit(string pin, int amount) { + credits_mut.lock(); + int res = (credits[pin] += amount); + credits_mut.unlock(); + return res; +} + int CCAcc::subtractCredit(string pin, int amount) { credits_mut.lock(); map::iterator it = credits.find(pin); diff --git a/apps/examples/tutorial/cc_acc/CCAcc.h b/apps/examples/tutorial/cc_acc/CCAcc.h index 00769cf7..57ab8546 100644 --- a/apps/examples/tutorial/cc_acc/CCAcc.h +++ b/apps/examples/tutorial/cc_acc/CCAcc.h @@ -12,6 +12,11 @@ class CCAcc : public AmDynInvoke int getCredit(string pin); /** returns remaining credit */ int subtractCredit(string pin, int amount); + + /** adds some amount */ + int addCredit(string pin, int amount); + /** sets the value to some amount */ + int setCredit(string pin, int amount); map credits; // as this is used from various sessions,