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(
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_ =
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
Definition: GpgContext.h:60
Definition: GpgKeyGetter.h:46
std::mutex ctx_mutex_
shared mutex for the keys cache
Definition: GpgKeyGetter.h:121
std::map< std::string, GpgKey > keys_cache_
cache the keys with key id
Definition: GpgKeyGetter.h:127
std::mutex keys_cache_mutex_
shared mutex for the keys cache
Definition: GpgKeyGetter.h:133
Definition: GpgKey.h:43
Definition: GpgFunctionObject.h:148
static int GetDefaultChannel()
Get the Default Channel object.
Definition: GpgFunctionObject.h:232
static GpgContext & GetInstance(int channel=GpgFrontend::GPGFRONTEND_DEFAULT_CHANNEL)
Get the Instance object.
Definition: GpgFunctionObject.h:170
int GetChannel() const
Get the Channel object.
Definition: GpgFunctionObject.h:239
Definition: CoreCommonUtil.cpp:29