Change enum to defines in libcynara-client 33/25233/2
authorLukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Thu, 31 Jul 2014 13:12:14 +0000 (15:12 +0200)
committerLukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Thu, 31 Jul 2014 15:48:29 +0000 (17:48 +0200)
This change makes client API functions compatible with return type.

Change-Id: I3973b66e27060dbc4c9374840de5182bde314121

src/client/api/ApiInterface.h
src/client/api/client-api.cpp
src/client/cache/CacheInterface.h
src/client/cache/CapacityCache.cpp
src/client/cache/CapacityCache.h
src/client/cache/NaiveInterpreter.h
src/client/cache/PolicyGetter.cpp
src/client/cache/PolicyGetter.h
src/client/logic/Logic.cpp
src/client/logic/Logic.h
src/include/cynara-client.h

index c9d6daa..f268508 100644 (file)
@@ -33,8 +33,8 @@ public:
     ApiInterface() = default;
     virtual ~ApiInterface() = default;
 
-    virtual cynara_api_result check(const std::string &client, const std::string &session,
-        const std::string &user, const std::string &privilege) = 0;
+    virtual int check(const std::string &client, const std::string &session,
+                      const std::string &user, const std::string &privilege) = 0;
 };
 
 } // namespace Cynara
index 8b34981..186e043 100644 (file)
@@ -45,12 +45,12 @@ CYNARA_API
 int cynara_initialize(cynara **pp_cynara, const cynara_configuration *p_conf UNUSED)
 {
     if (!pp_cynara)
-        return cynara_api_result::CYNARA_API_INVALID_PARAM;
+        return CYNARA_API_INVALID_PARAM;
 
     try {
         *pp_cynara = new cynara(new Cynara::Logic);
     } catch (const std::bad_alloc &ex) {
-        return cynara_api_result::CYNARA_API_OUT_OF_MEMORY;
+        return CYNARA_API_OUT_OF_MEMORY;
     }
 
     init_log();
@@ -59,7 +59,7 @@ int cynara_initialize(cynara **pp_cynara, const cynara_configuration *p_conf UNU
 
     LOGD("Cynara client initialized");
 
-    return cynara_api_result::CYNARA_API_SUCCESS;
+    return CYNARA_API_SUCCESS;
 }
 
 CYNARA_API
@@ -67,7 +67,7 @@ int cynara_finish(cynara *p_cynara)
 {
     delete p_cynara;
 
-    return cynara_api_result::CYNARA_API_SUCCESS;
+    return CYNARA_API_SUCCESS;
 }
 
 CYNARA_API
@@ -75,9 +75,9 @@ int cynara_check(cynara *p_cynara, const char *client, const char *client_sessio
     const char *privilege)
 {
     if(!p_cynara || !p_cynara->impl)
-        return cynara_api_result::CYNARA_API_INVALID_PARAM;
+        return CYNARA_API_INVALID_PARAM;
     if(!client || !client_session || !user || !privilege)
-        return cynara_api_result::CYNARA_API_INVALID_PARAM;
+        return CYNARA_API_INVALID_PARAM;
 
     return p_cynara->impl->check(client, client_session, user, privilege);
 }
index 22c4cb9..f325a42 100644 (file)
@@ -46,7 +46,7 @@ typedef std::shared_ptr<ResultGetterInterface> ResultGetterInterfacePtr;
 
 class ResultGetterInterface {
 public:
-    virtual cynara_api_result requestResult(const PolicyKey &key, PolicyResult &result) noexcept = 0;
+    virtual int requestResult(const PolicyKey &key, PolicyResult &result) noexcept = 0;
     virtual ~ResultGetterInterface() = default;
 };
 
@@ -54,7 +54,7 @@ class InterpreterInterface {
 public:
     virtual bool isCacheable(const PolicyResult &result) noexcept = 0;
     virtual bool isUsable(const PolicyResult &result) noexcept = 0;
-    virtual cynara_api_result toResult(const PolicyResult &result) noexcept = 0;
+    virtual int toResult(const PolicyResult &result) noexcept = 0;
 
     virtual ~InterpreterInterface() = default;
 };
@@ -62,13 +62,16 @@ public:
 class PluginCache {
 public:
     PluginCache(ResultGetterInterfacePtr getter) : m_getter(getter) {}
-    virtual cynara_api_result get(const std::string &session, const PolicyKey &key) = 0;
+    virtual int get(const std::string &session, const PolicyKey &key) = 0;
+
     void registerPlugin(const PolicyType policyType, InterpreterInterfacePtr plugin) {
         m_plugins[policyType] = plugin;
     }
+
     virtual void clear(void) {
         m_plugins.clear();
     }
+
     virtual ~PluginCache() = default;
 
 protected:
index 6b9f48e..f5a3df5 100644 (file)
@@ -28,7 +28,7 @@
 
 namespace Cynara {
 
-cynara_api_result CapacityCache::get(const std::string &session, const PolicyKey &key) {
+int CapacityCache::get(const std::string &session, const PolicyKey &key) {
     //This can be very time heavy. This part is welcomed to be optimized.
     if (session != m_session) {
         LOGD("Session changed from %s to %s.", m_session.c_str(), session.c_str());
@@ -54,7 +54,7 @@ cynara_api_result CapacityCache::get(const std::string &session, const PolicyKey
         if (pluginIt == m_plugins.end()) {
             LOGE("No plugin registered for given PolicyType : %" PRIu16,
                     resultIt->second.first.policyType());
-            return cynara_api_result::CYNARA_API_ACCESS_DENIED;
+            return CYNARA_API_ACCESS_DENIED;
         }
 
         //Is it still usable?
@@ -100,10 +100,10 @@ void CapacityCache::evict(void) {
     m_keyValue.erase(value_it);
 }
 
-cynara_api_result CapacityCache::update(const PolicyKey &key) {
-    cynara_api_result ret;
+int CapacityCache::update(const PolicyKey &key) {
+    int ret;
     PolicyResult result;
-    if ((ret = m_getter->requestResult(key, result)) != cynara_api_result::CYNARA_API_SUCCESS) {
+    if ((ret = m_getter->requestResult(key, result)) != CYNARA_API_SUCCESS) {
         LOGE("Error fetching new entry.");
         return ret;
     }
@@ -114,7 +114,7 @@ cynara_api_result CapacityCache::update(const PolicyKey &key) {
     if (pluginIt == m_plugins.end()) {
         LOGE("No registered plugin for given PolicyType: %" PRIu16,
                 result.policyType());
-        return cynara_api_result::CYNARA_API_ACCESS_DENIED;
+        return CYNARA_API_ACCESS_DENIED;
     }
     auto plugin = pluginIt->second;
 
index b5c4a1f..39ca928 100644 (file)
@@ -39,8 +39,7 @@ public:
         PluginCache(getter),
         m_capacity(capacity) {}
 
-    cynara_api_result get(const std::string &session,
-                          const PolicyKey &key);
+    int get(const std::string &session, const PolicyKey &key);
     void clear(void);
 
 private:
@@ -51,7 +50,7 @@ private:
 
     static std::string keyToString(const PolicyKey &key);
     void evict(void);
-    cynara_api_result update(const PolicyKey &key);
+    int update(const PolicyKey &key);
 
     std::size_t m_capacity;
     std::string m_session;
index 6b96d4b..9ae333f 100644 (file)
@@ -34,11 +34,11 @@ class NaiveInterpreter : public InterpreterInterface {
     bool isCacheable(const PolicyResult &result UNUSED) noexcept {
         return true;
     }
-    cynara_api_result toResult(const PolicyResult &result) noexcept {
+    int toResult(const PolicyResult &result) noexcept {
         if (result.policyType() == PredefinedPolicyType::ALLOW)
-            return cynara_api_result::CYNARA_API_SUCCESS;
+            return CYNARA_API_SUCCESS;
         else
-            return cynara_api_result::CYNARA_API_ACCESS_DENIED;
+            return CYNARA_API_ACCESS_DENIED;
     }
 };
 
index e383f9f..8bf1a39 100644 (file)
@@ -33,7 +33,7 @@
 
 namespace Cynara {
 
-cynara_api_result PolicyGetter::requestResult(const PolicyKey &key, PolicyResult &result) noexcept {
+int PolicyGetter::requestResult(const PolicyKey &key, PolicyResult &result) noexcept {
     ProtocolFrameSequenceNumber sequenceNumber = generateSequenceNumber();
 
     //Ask cynara service
@@ -43,12 +43,12 @@ cynara_api_result PolicyGetter::requestResult(const PolicyKey &key, PolicyResult
         ResponsePtr response = m_socketClient->askCynaraServer(request);
         if (!response) {
             LOGW("Disconnected by cynara server.");
-            return cynara_api_result::CYNARA_API_SERVICE_NOT_AVAILABLE;
+            return CYNARA_API_SERVICE_NOT_AVAILABLE;
         }
         checkResponse = std::dynamic_pointer_cast<CheckResponse>(response);
         if (!checkResponse) {
             LOGC("Critical error. Casting Response to CheckResponse failed.");
-            return cynara_api_result::CYNARA_API_ACCESS_DENIED;
+            return CYNARA_API_ACCESS_DENIED;
         }
 
         LOGD("checkResponse: policyType = %" PRIu16 ", metadata = %s",
@@ -56,11 +56,11 @@ cynara_api_result PolicyGetter::requestResult(const PolicyKey &key, PolicyResult
              checkResponse->m_resultRef.metadata().c_str());
     } catch (const ServerConnectionErrorException &ex) {
         LOGE("Cynara service not available.");
-        return cynara_api_result::CYNARA_API_SERVICE_NOT_AVAILABLE;
+        return CYNARA_API_SERVICE_NOT_AVAILABLE;
     }
 
     result = checkResponse->m_resultRef;
-    return cynara_api_result::CYNARA_API_SUCCESS;
+    return CYNARA_API_SUCCESS;
 }
 
 } // namespace Cynara
index fec6797..c653887 100644 (file)
@@ -34,7 +34,7 @@ namespace Cynara {
 class PolicyGetter : public ResultGetterInterface {
 public:
     PolicyGetter(const SocketClientPtr &socketClient) : m_socketClient(socketClient) {}
-    cynara_api_result requestResult(const PolicyKey &key, PolicyResult &result) noexcept;
+    int requestResult(const PolicyKey &key, PolicyResult &result) noexcept;
 
 private:
     ProtocolFrameSequenceNumber generateSequenceNumber(void) {
index c2d9cb6..b3492ff 100644 (file)
@@ -48,13 +48,13 @@ Logic::Logic() {
     m_cache->registerPlugin(PredefinedPolicyType::BUCKET, naiveInterpreter);
 }
 
-cynara_api_result Logic::check(const std::string &client, const std::string &session,
-                               const std::string &user, const std::string &privilege) noexcept
+int Logic::check(const std::string &client, const std::string &session, const std::string &user,
+                 const std::string &privilege) noexcept
 {
     PolicyKey key(client, user, privilege);
 
     auto ret = m_cache->get(session, key);
-    if (ret == cynara_api_result::CYNARA_API_SERVICE_NOT_AVAILABLE)
+    if (ret == CYNARA_API_SERVICE_NOT_AVAILABLE)
         onDisconnected();
     return ret;
 }
index b2eb486..34ec54c 100644 (file)
@@ -40,8 +40,8 @@ public:
     Logic();
     virtual ~Logic() = default;
 
-    virtual cynara_api_result check(const std::string &client, const std::string &session,
-        const std::string &user, const std::string &privilege) noexcept;
+    virtual int check(const std::string &client, const std::string &session,
+                      const std::string &user, const std::string &privilege) noexcept;
 };
 
 } // namespace Cynara
index 3ceeaa6..f984966 100644 (file)
  * @{
 */
 
-enum cynara_api_result
-{
 /*! \brief   indicating the result of the one specific API is successful or access is allowed */
-       CYNARA_API_SUCCESS,
+#define CYNARA_API_SUCCESS 0
 
 /*! \brief   indicating that access that was checked is denied */
-       CYNARA_API_ACCESS_DENIED,
+#define CYNARA_API_ACCESS_DENIED -1
 
 /*! \brief   indicating system is running out of memory state */
-       CYNARA_API_OUT_OF_MEMORY,
+#define CYNARA_API_OUT_OF_MEMORY -2
 
 /*! \brief   indicating the API's parameter is malformed */
-       CYNARA_API_INVALID_PARAM,
+#define CYNARA_API_INVALID_PARAM -3
 
 /*! \brief   service not available */
-       CYNARA_API_SERVICE_NOT_AVAILABLE
-};
+#define CYNARA_API_SERVICE_NOT_AVAILABLE -4
 /** @}*/
 
 #ifdef __cplusplus