From 3eb098c59208727fddc20db56f38ef21161e310e Mon Sep 17 00:00:00 2001
From: Pawel Wieczorek
Date: Wed, 24 Sep 2014 12:11:12 +0200
Subject: [PATCH] Add new libcynara-admin return code
Added code is:
CYNARA_ADMIN_API_OPERATION_FAILED
It is used to indicate failures during saving database to storage. This
patch also adds handling such situations.
Change-Id: I35b7d3334def8e688a180ddec6861c0f3bdd70d6
---
src/admin/logic/Logic.cpp | 3 +++
src/common/response/CodeResponse.h | 3 ++-
src/include/cynara-error.h | 7 +++++--
src/service/logic/Logic.cpp | 7 +++++++
4 files changed, 17 insertions(+), 3 deletions(-)
diff --git a/src/admin/logic/Logic.cpp b/src/admin/logic/Logic.cpp
index 72c40bf..0deccb9 100644
--- a/src/admin/logic/Logic.cpp
+++ b/src/admin/logic/Logic.cpp
@@ -96,6 +96,9 @@ int Logic::askCynaraAndInterpreteCodeResponse(Args... args) {
case CodeResponse::Code::NO_BUCKET:
LOGE("Trying to use unexisting bucket.");
return CYNARA_API_BUCKET_NOT_FOUND;
+ case CodeResponse::Code::FAILED:
+ LOGC("Cynara service answered: Operation failed.");
+ return CYNARA_API_OPERATION_FAILED;
default:
LOGE("Unexpected response code from server: [%d]",
static_cast(codeResponse->m_code));
diff --git a/src/common/response/CodeResponse.h b/src/common/response/CodeResponse.h
index 8544310..7a6020f 100644
--- a/src/common/response/CodeResponse.h
+++ b/src/common/response/CodeResponse.h
@@ -34,7 +34,8 @@ public:
enum Code {
OK,
NO_BUCKET,
- NOT_ALLOWED
+ NOT_ALLOWED,
+ FAILED
};
const Code m_code;
diff --git a/src/include/cynara-error.h b/src/include/cynara-error.h
index e8900b8..728fc2a 100644
--- a/src/include/cynara-error.h
+++ b/src/include/cynara-error.h
@@ -61,11 +61,14 @@
/*! \brief cynara service does not allow to perform requested operation */
#define CYNARA_API_OPERATION_NOT_ALLOWED -7
+/*! \brief cynara service failed to perform requested operation */
+#define CYNARA_API_OPERATION_FAILED -8
+
/*! \brief cynara service hasn't found requested bucket */
-#define CYNARA_API_BUCKET_NOT_FOUND -8
+#define CYNARA_API_BUCKET_NOT_FOUND -9
/*! \brief indicating an unknown error */
-#define CYNARA_API_UNKNOWN_ERROR -9
+#define CYNARA_API_UNKNOWN_ERROR -10
/** @}*/
diff --git a/src/service/logic/Logic.cpp b/src/service/logic/Logic.cpp
index 1787575..eeed387 100644
--- a/src/service/logic/Logic.cpp
+++ b/src/service/logic/Logic.cpp
@@ -23,6 +23,7 @@
#include
#include
#include
+#include
#include
#include
#include
@@ -129,6 +130,8 @@ void Logic::execute(RequestContextPtr context, InsertOrUpdateBucketRequestPtr re
try {
m_storage->addOrUpdateBucket(request->bucketId(), request->result());
onPoliciesChanged();
+ } catch (const DatabaseException &ex) {
+ code = CodeResponse::Code::FAILED;
} catch (const DefaultBucketSetNoneException &ex) {
code = CodeResponse::Code::NOT_ALLOWED;
}
@@ -142,6 +145,8 @@ void Logic::execute(RequestContextPtr context, RemoveBucketRequestPtr request) {
try {
m_storage->deleteBucket(request->bucketId());
onPoliciesChanged();
+ } catch (const DatabaseException &ex) {
+ code = CodeResponse::Code::FAILED;
} catch (const BucketNotExistsException &ex) {
code = CodeResponse::Code::NO_BUCKET;
} catch (const DefaultBucketDeletionException &ex) {
@@ -157,6 +162,8 @@ void Logic::execute(RequestContextPtr context, SetPoliciesRequestPtr request) {
m_storage->insertPolicies(request->policiesToBeInsertedOrUpdated());
m_storage->deletePolicies(request->policiesToBeRemoved());
onPoliciesChanged();
+ } catch (const DatabaseException &ex) {
+ code = CodeResponse::Code::FAILED;
} catch (const BucketNotExistsException &ex) {
code = CodeResponse::Code::NO_BUCKET;
}
--
2.7.4