GpgFrontend Project A Free, Powerful, Easy-to-Use, Compact, Cross-Platform, and Installation-Free OpenPGP(pgp) Crypto Tool.

GpgKeyGetter.h
1
29 #ifndef GPGFRONTEND_ZH_CN_TS_GPGKEYGETTER_H
30 #define GPGFRONTEND_ZH_CN_TS_GPGKEYGETTER_H
31
32 #include <mutex>
33 #include <vector>
34
35 #include "core/GpgContext.h"
36 #include "core/GpgFunctionObject.h"
37 #include "core/GpgModel.h"
38
39 namespace GpgFrontend {
40
45 class GPGFRONTEND_CORE_EXPORT GpgKeyGetter
46 : public SingletonFunctionObject<GpgKeyGetter> {
47 public:
53 explicit GpgKeyGetter(
54 int channel = SingletonFunctionObject::GetDefaultChannel());
55
62 GpgKey GetKey(const std::string& id, bool use_cache = true);
63
70 KeyListPtr GetKeys(const KeyIdArgsListPtr& ids);
71
78 GpgKey GetPubkey(const std::string& id, bool use_cache = true);
79
85 KeyLinkListPtr FetchKey();
86
91 void FlushKeyCache();
92
99 KeyListPtr GetKeysCopy(const KeyListPtr& keys);
100
107 KeyLinkListPtr GetKeysCopy(const KeyLinkListPtr& keys);
108
109 private:
114 GpgContext& ctx_ =
115 GpgContext::GetInstance(SingletonFunctionObject::GetChannel());
116
121 mutable std::mutex ctx_mutex_;
122
127 std::map<std::string, GpgKey> keys_cache_;
128
133 mutable std::mutex keys_cache_mutex_;
134
141 GpgKey get_key_in_cache(const std::string& id);
142 };
143 } // namespace GpgFrontend
144
145 #endif // GPGFRONTEND_ZH_CN_TS_GPGKEYGETTER_H
GpgFrontend::GpgContext
Definition: GpgContext.h:71
GpgFrontend::GpgKeyGetter
Definition: GpgKeyGetter.h:46
GpgFrontend::GpgKeyGetter::ctx_mutex_
std::mutex ctx_mutex_
shared mutex for the keys cache
Definition: GpgKeyGetter.h:121
GpgFrontend::GpgKeyGetter::keys_cache_
std::map< std::string, GpgKey > keys_cache_
cache the keys with key id
Definition: GpgKeyGetter.h:127
GpgFrontend::GpgKeyGetter::keys_cache_mutex_
std::mutex keys_cache_mutex_
shared mutex for the keys cache
Definition: GpgKeyGetter.h:133
GpgFrontend::GpgKey
Definition: GpgKey.h:43
GpgFrontend::SingletonFunctionObject
Definition: GpgFunctionObject.h:150
GpgFrontend::SingletonFunctionObject::GetDefaultChannel
static int GetDefaultChannel()
Get the Default Channel object.
Definition: GpgFunctionObject.h:251
GpgFrontend::SingletonFunctionObject< GpgContext >::GetInstance
static GpgContext & GetInstance(int channel=GpgFrontend::GPGFRONTEND_DEFAULT_CHANNEL)
Get the Instance object.
Definition: GpgFunctionObject.h:172
GpgFrontend::SingletonFunctionObject::GetChannel
int GetChannel() const
Get the Channel object.
Definition: GpgFunctionObject.h:258
GpgFrontend
Definition: CoreCommonUtil.cpp:31