From: Lukasz Wojciechowski Date: Thu, 31 Jul 2014 13:12:14 +0000 (+0200) Subject: Change enum to defines in libcynara-client X-Git-Tag: accepted/tizen/common/20140801.173752~6 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9adc695c9985c4d8223a877eac8ee1fa8631f64e;p=platform%2Fcore%2Fsecurity%2Fcynara.git Change enum to defines in libcynara-client This change makes client API functions compatible with return type. Change-Id: I3973b66e27060dbc4c9374840de5182bde314121 --- diff --git a/src/client/api/ApiInterface.h b/src/client/api/ApiInterface.h index c9d6daa..f268508 100644 --- a/src/client/api/ApiInterface.h +++ b/src/client/api/ApiInterface.h @@ -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 diff --git a/src/client/api/client-api.cpp b/src/client/api/client-api.cpp index 8b34981..186e043 100644 --- a/src/client/api/client-api.cpp +++ b/src/client/api/client-api.cpp @@ -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); } diff --git a/src/client/cache/CacheInterface.h b/src/client/cache/CacheInterface.h index 22c4cb9..f325a42 100644 --- a/src/client/cache/CacheInterface.h +++ b/src/client/cache/CacheInterface.h @@ -46,7 +46,7 @@ typedef std::shared_ptr 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: diff --git a/src/client/cache/CapacityCache.cpp b/src/client/cache/CapacityCache.cpp index 6b9f48e..f5a3df5 100644 --- a/src/client/cache/CapacityCache.cpp +++ b/src/client/cache/CapacityCache.cpp @@ -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; diff --git a/src/client/cache/CapacityCache.h b/src/client/cache/CapacityCache.h index b5c4a1f..39ca928 100644 --- a/src/client/cache/CapacityCache.h +++ b/src/client/cache/CapacityCache.h @@ -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; diff --git a/src/client/cache/NaiveInterpreter.h b/src/client/cache/NaiveInterpreter.h index 6b96d4b..9ae333f 100644 --- a/src/client/cache/NaiveInterpreter.h +++ b/src/client/cache/NaiveInterpreter.h @@ -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; } }; diff --git a/src/client/cache/PolicyGetter.cpp b/src/client/cache/PolicyGetter.cpp index e383f9f..8bf1a39 100644 --- a/src/client/cache/PolicyGetter.cpp +++ b/src/client/cache/PolicyGetter.cpp @@ -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(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 diff --git a/src/client/cache/PolicyGetter.h b/src/client/cache/PolicyGetter.h index fec6797..c653887 100644 --- a/src/client/cache/PolicyGetter.h +++ b/src/client/cache/PolicyGetter.h @@ -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) { diff --git a/src/client/logic/Logic.cpp b/src/client/logic/Logic.cpp index c2d9cb6..b3492ff 100644 --- a/src/client/logic/Logic.cpp +++ b/src/client/logic/Logic.cpp @@ -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; } diff --git a/src/client/logic/Logic.h b/src/client/logic/Logic.h index b2eb486..34ec54c 100644 --- a/src/client/logic/Logic.h +++ b/src/client/logic/Logic.h @@ -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 diff --git a/src/include/cynara-client.h b/src/include/cynara-client.h index 3ceeaa6..f984966 100644 --- a/src/include/cynara-client.h +++ b/src/include/cynara-client.h @@ -31,23 +31,20 @@ * @{ */ -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