int Logic::callApiFunction(std::function<int(ApiInterface *api)> apiCall) {
FileLock lock(m_lockable);
if (lock.tryLock() == true) {
- m_offlineLogic->acquireDatabase();
LOGI("Admin uses offline API");
return apiCall(m_offlineLogic);
} else {
int OfflineLogic::setPolicies(const ApiInterface::PoliciesByBucket &insertOrUpdate,
const ApiInterface::KeysByBucket &remove) {
try {
+ acquireDatabase();
m_storage->insertPolicies(insertOrUpdate);
m_storage->deletePolicies(remove);
onPoliciesChanged();
int OfflineLogic::insertOrUpdateBucket(const PolicyBucketId &bucket,
const PolicyResult &policyResult) {
try {
+ acquireDatabase();
m_storage->addOrUpdateBucket(bucket, policyResult);
onPoliciesChanged();
} catch (const DefaultBucketSetNoneException &) {
int OfflineLogic::removeBucket(const PolicyBucketId &bucket) {
try {
+ acquireDatabase();
m_storage->deleteBucket(bucket);
onPoliciesChanged();
} catch (const BucketNotExistsException &) {
int OfflineLogic::adminCheck(const PolicyBucketId &startBucket, bool recursive,
const PolicyKey &key, PolicyResult &result) {
try {
+ acquireDatabase();
result = m_storage->checkPolicy(key, startBucket, recursive);
} catch (const BucketNotExistsException &ex) {
return CYNARA_API_BUCKET_NOT_FOUND;
int OfflineLogic::listPolicies(const PolicyBucketId &bucket, const PolicyKey &filter,
std::vector<Policy> &policies) {
try {
+ acquireDatabase();
policies = m_storage->listPolicies(bucket, filter);
} catch (const BucketNotExistsException &ex) {
return CYNARA_API_BUCKET_NOT_FOUND;
int OfflineLogic::erasePolicies(const PolicyBucketId &startBucket, bool recursive,
const PolicyKey &filter) {
try {
+ acquireDatabase();
m_storage->erasePolicies(startBucket, recursive, filter);
onPoliciesChanged();
} catch (const BucketNotExistsException &) {
public:
OfflineLogic();
- void acquireDatabase(void);
-
int setPolicies(const ApiInterface::PoliciesByBucket &insertOrUpdate,
const ApiInterface::KeysByBucket &remove);
int insertOrUpdateBucket(const PolicyBucketId &bucket,
const PolicyKey &filter);
protected:
+ void acquireDatabase(void);
void onPoliciesChanged(void);
private: