From 606b235439e87beeb2e676b19182b9b5104ed431 Mon Sep 17 00:00:00 2001 From: Aleksander Zdyb Date: Mon, 14 Jul 2014 12:57:46 +0200 Subject: [PATCH] Move parseMetadata() and parsePolicyType() to StorageDeserializer These static methods better fit in a more general Cynara::StorageDeserializer instead of Cynara::BucketDeserializer Change-Id: I2bad160683ac34b68d993dc7b10e8ec7ba1b1d1c --- src/service/storage/BucketDeserializer.cpp | 29 +++----------------------- src/service/storage/BucketDeserializer.h | 6 ------ src/service/storage/StorageDeserializer.cpp | 32 +++++++++++++++++++++++++---- src/service/storage/StorageDeserializer.h | 4 +++- 4 files changed, 34 insertions(+), 37 deletions(-) diff --git a/src/service/storage/BucketDeserializer.cpp b/src/service/storage/BucketDeserializer.cpp index c40cd8d..914f766 100644 --- a/src/service/storage/BucketDeserializer.cpp +++ b/src/service/storage/BucketDeserializer.cpp @@ -22,6 +22,7 @@ #include #include +#include #include #include @@ -45,8 +46,8 @@ PolicyCollection BucketDeserializer::loadPolicies(void) { try { std::size_t beginToken = 0; auto policyKey = parseKey(line, beginToken); - auto policyType = parsePolicyType(line, beginToken); - auto metadata = parseMetadata(line, beginToken); + auto policyType = StorageDeserializer::parsePolicyType(line, beginToken); + auto metadata = StorageDeserializer::parseMetadata(line, beginToken); PolicyResult policyResult(policyType, metadata); policies.push_back(std::make_shared(policyKey, policyResult)); } catch (const BucketRecordCorruptedException &ex) { @@ -73,28 +74,4 @@ PolicyKey BucketDeserializer::parseKey(const std::string &line, std::size_t &beg return PolicyKey(keyFeatures[0], keyFeatures[1], keyFeatures[2]); } -PolicyType BucketDeserializer::parsePolicyType(const std::string &line, std::size_t &beginToken) { - PolicyType policyType; - try { - size_t newBegin = 0; - policyType = std::stoi(line.substr(beginToken), &newBegin, 16); - beginToken += newBegin; - } catch(...) { - throw BucketRecordCorruptedException(line); - } - - return policyType; -} - -PolicyResult::PolicyMetadata BucketDeserializer::parseMetadata(const std::string &line, - std::size_t &beginToken) { - if (beginToken < line.size()) { - auto ret = line.substr(beginToken + 1); - beginToken = line.size(); - return ret; - } - - return std::string(); -} - } /* namespace Cynara */ diff --git a/src/service/storage/BucketDeserializer.h b/src/service/storage/BucketDeserializer.h index 5659c45..a9b7b8c 100644 --- a/src/service/storage/BucketDeserializer.h +++ b/src/service/storage/BucketDeserializer.h @@ -31,10 +31,7 @@ namespace Cynara { -class StorageDeserializer; - class BucketDeserializer { -friend StorageDeserializer; public: BucketDeserializer(std::istream &inStream) : m_inStream(inStream) {} @@ -42,9 +39,6 @@ public: protected: static PolicyKey parseKey(const std::string &line, std::size_t &beginToken); - static PolicyType parsePolicyType(const std::string &line, std::size_t &beginToken); - static PolicyResult::PolicyMetadata parseMetadata(const std::string &line, - std::size_t &beginToken); private: std::istream &m_inStream; diff --git a/src/service/storage/StorageDeserializer.cpp b/src/service/storage/StorageDeserializer.cpp index f1a433b..5f1b97b 100644 --- a/src/service/storage/StorageDeserializer.cpp +++ b/src/service/storage/StorageDeserializer.cpp @@ -45,10 +45,10 @@ void StorageDeserializer::initBuckets(InMemoryStorageBackend::Buckets &buckets) if (line.empty()) break; - size_t beginToken = 0; - auto bucketId = StorageDeserializer::parseBucketId(line, beginToken); - auto policyType = BucketDeserializer::parsePolicyType(line, beginToken); - auto metadata = BucketDeserializer::parseMetadata(line, beginToken); + std::size_t beginToken = 0; + auto bucketId = parseBucketId(line, beginToken); + auto policyType = parsePolicyType(line, beginToken); + auto metadata = parseMetadata(line, beginToken); buckets[bucketId] = PolicyBucket(bucketId, PolicyResult(policyType, metadata)); } @@ -81,4 +81,28 @@ PolicyBucketId StorageDeserializer::parseBucketId(const std::string &line, throw BucketRecordCorruptedException(line); } +PolicyType StorageDeserializer::parsePolicyType(const std::string &line, std::size_t &beginToken) { + PolicyType policyType; + try { + std::size_t newBegin = 0; + policyType = std::stoi(line.substr(beginToken), &newBegin, 16); + beginToken += newBegin; + } catch(...) { + throw BucketRecordCorruptedException(line); + } + + return policyType; +} + +PolicyResult::PolicyMetadata StorageDeserializer::parseMetadata(const std::string &line, + std::size_t &beginToken) { + if (beginToken < line.size()) { + auto ret = line.substr(beginToken + 1); + beginToken = line.size(); + return ret; + } + + return std::string(); +} + } /* namespace Cynara */ diff --git a/src/service/storage/StorageDeserializer.h b/src/service/storage/StorageDeserializer.h index 6ef5c4e..2fd0341 100644 --- a/src/service/storage/StorageDeserializer.h +++ b/src/service/storage/StorageDeserializer.h @@ -38,8 +38,10 @@ public: void initBuckets(InMemoryStorageBackend::Buckets &buckets); void loadBuckets(InMemoryStorageBackend::Buckets &buckets); -protected: static PolicyBucketId parseBucketId(const std::string &line, std::size_t &beginToken); + static PolicyType parsePolicyType(const std::string &line, std::size_t &beginToken); + static PolicyResult::PolicyMetadata parseMetadata(const std::string &line, + std::size_t &beginToken); private: std::istream &m_inStream; -- 2.7.4