[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [ksecrets] src/runtime/ksecrets_backend: Some more qualifiers and constructors
From: Valentin Rusu <kde () rusu ! info>
Date: 2015-08-07 19:57:13
Message-ID: E1ZNnlR-0002yB-Tf () scm ! kde ! org
[Download RAW message or body]
Git commit a023d42c855bafb2f692c85665ab78063a2331fc by Valentin Rusu.
Committed on 06/08/2015 at 18:18.
Pushed by vrusu into branch 'master'.
Some more qualifiers and constructors
M +65 -27 src/runtime/ksecrets_backend/ksecrets_backend.h
http://commits.kde.org/ksecrets/a023d42c855bafb2f692c85665ab78063a2331fc
diff --git a/src/runtime/ksecrets_backend/ksecrets_backend.h \
b/src/runtime/ksecrets_backend/ksecrets_backend.h index 489a842..22b2441 \
100644
--- a/src/runtime/ksecrets_backend/ksecrets_backend.h
+++ b/src/runtime/ksecrets_backend/ksecrets_backend.h
@@ -32,24 +32,37 @@
*
* This class would store the secrets into an underlying custom formated \
file.
*
- * Each API call is stateless. That is, the secrets file will always be \
left in a consistent
- * state between calls. So, even if your application crashes, the file \
won't get corrupted.
- * FIXME is that OK? Further tests should be confirm if a background sync \
should be introduced
- * in order to get operations faster. However, today computing power \
do not justify
- * Ã priori optimizations, so this first version would modify the \
file with each API call.
- * That guarantee client applications that edits are always synced \
to disk/storage. + * Each API call is stateless. That is, the secrets file \
will always be left + *in a consistent
+ * state between calls. So, even if your application crashes, the file \
won't + *get corrupted.
+ * FIXME is that OK? Further tests should be confirm if a background sync
+ *should be introduced
+ * in order to get operations faster. However, today computing power \
do + *not justify
+ * Ã priori optimizations, so this first version would modify the \
file + *with each API call.
+ * That guarantee client applications that edits are always synced \
to + *disk/storage.
*
- * The API calls are organized in classes, following the structure of data \
in the backend.
- * Applications will first work with a Collection, the search or insert \
Items into it.
- * The Item class holds, sure enough, the secret value but also let \
applications associate
- * the secret value with metadata, such as the label or other custom \
properties. + * The API calls are organized in classes, following the \
structure of data in + *the backend.
+ * Applications will first work with a Collection, the search or insert \
Items + *into it.
+ * The Item class holds, sure enough, the secret value but also let
+ *applications associate
+ * the secret value with metadata, such as the label or other custom
+ *properties.
*
* Before using a collection, the application should open it.
* Upon opening, it's possible to indicate if readonly mode is possible.
*
- * When opening without readonly flag, then the file is exclusively \
locked. The lock is
- * released when the class is destroyed. You should keep the file locked \
as shortly as
- * possible, in order to avoid deadlocks between applications that also \
need to read the + * When opening without readonly flag, then the file is \
exclusively locked. + *The lock is
+ * released when the class is destroyed. You should keep the file locked \
as + *shortly as
+ * possible, in order to avoid deadlocks between applications that also \
need + *to read the
* secrets. For more information @see open().
*
* TODO give here a code example once the API stabilizes
@@ -88,8 +101,7 @@ public:
TimeStamped(const TimeStamped&) = default;
TimeStamped& operator=(const TimeStamped&) = default;
- template <class FUNC>
- void modify(FUNC func)
+ template <class FUNC> void modify(FUNC func)
{
func();
modifiedTime = std::time(nullptr);
@@ -114,6 +126,9 @@ public:
* @see Collection
*/
class Item : public TimeStamped {
+ Item(const Item&) = default;
+ Item& operator=(const Item&) = default;
+
std::string label() const noexcept;
bool setLabel(std::string&&) noexcept;
@@ -123,6 +138,10 @@ public:
ItemValue value() const noexcept;
bool setValue(ItemValue&&) noexcept;
+ protected:
+ Item();
+ friend class KSecretsBackend;
+
private:
std::shared_ptr<ItemPrivate> d;
};
@@ -131,19 +150,29 @@ public:
/**
* Each application organizes it's secrets in collections.
*
- * Typical applications will only use one collection. A collection can \
store
- * an arbitrary amount of Items. Each Item has a label, custom \
attributes and + * Typical applications will only use one collection. A \
collection can + *store
+ * an arbitrary amount of Items. Each Item has a label, custom \
attributes + *and
* a secret value.
*
- * The custom attributes are application-defined. This API would store \
these + * The custom attributes are application-defined. This API would \
store + *these
* attributes as they are provided.
*
- * Search methods are provided to let application locate items by \
specifying
- * only a subset of these custom attributes. When searching, partial \
matching is
- * used, so you could only provide part of the value of an attribute \
and get all
- * the items having attribute value containing that partially \
specified value. + * Search methods are provided to let application \
locate items by + *specifying
+ * only a subset of these custom attributes. When searching, partial
+ *matching is
+ * used, so you could only provide part of the value of an attribute \
and + *get all
+ * the items having attribute value containing that partially \
specified + *value.
*/
class Collection : public TimeStamped {
+ Collection(const Collection&) = default;
+ Collection& operator=(const Collection&) = default;
+
std::string label() const noexcept;
bool setLabel(std::string&&) noexcept;
@@ -157,7 +186,8 @@ public:
* possible. So please check if via it's operator bool() before \
using
* it.
*/
- ItemPtr createItem(std::string&& label, AttributesMap&&, \
ItemValue&&) noexcept; + ItemPtr createItem(
+ std::string&& label, AttributesMap&&, ItemValue&&) noexcept;
/*
* Convenience method for creating items without supplemental
* attributes.
@@ -167,6 +197,11 @@ public:
* it.
*/
ItemPtr createItem(std::string&& label, ItemValue&&) noexcept;
+
+ protected:
+ Collection();
+ friend class KSecretsBackend;
+
private:
std::shared_ptr<CollectionPrivate> d;
};
@@ -183,7 +218,7 @@ public:
*/
KSecretsBackend();
KSecretsBackend(const KSecretsBackend&) = delete;
- virtual ~KSecretsBackend();
+ virtual ~KSecretsBackend() = default;
enum class OpenStatus {
Good,
@@ -192,16 +227,19 @@ public:
FileNotFound,
PermissionDeniedByTheSystem
};
- std::future<OpenStatus> open(std::string&&, bool readOnly = true) \
noexcept; + std::future<OpenStatus> open(
+ std::string&&, bool readOnly = true) noexcept;
std::vector<std::string> dirCollections() noexcept;
/*
- * @return CollectionPtr which can empty if the call did not succeed. \
Please check that with operator bool(). + * @return CollectionPtr which \
can empty if the call did not succeed. + *Please check that with \
operator bool().
* If it fails, have you already called open()?
*
*/
CollectionPtr createCollection(std::string&&) noexcept;
/*
- * @return CollectionPtr which can empty if the call did not succeed, \
e.g. the collection was not found. + * @return CollectionPtr which can \
empty if the call did not succeed, e.g. + * the collection was not \
found.
* Please check that with operator bool()
*/
CollectionPtr readCollection(std::string&&) const noexcept;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic