GpgKeyGetter.h
#ifndef GPGFRONTEND_ZH_CN_TS_GPGKEYGETTER_H
#define GPGFRONTEND_ZH_CN_TS_GPGKEYGETTER_H
#include <mutex>
#include <vector>
#include "core/GpgContext.h"
#include "core/GpgFunctionObject.h"
#include "core/GpgModel.h"
namespace GpgFrontend {
class GPGFRONTEND_CORE_EXPORT GpgKeyGetter
: public SingletonFunctionObject<GpgKeyGetter> {
public:
explicit GpgKeyGetter(
int channel = SingletonFunctionObject::GetDefaultChannel());
GpgKey GetKey(const std::string& id, bool use_cache = true);
KeyListPtr GetKeys(const KeyIdArgsListPtr& ids);
GpgKey GetPubkey(const std::string& id, bool use_cache = true);
KeyLinkListPtr FetchKey();
void FlushKeyCache();
KeyListPtr GetKeysCopy(const KeyListPtr& keys);
KeyLinkListPtr GetKeysCopy(const KeyLinkListPtr& keys);
private:
GpgContext& ctx_ =
GpgContext::GetInstance(SingletonFunctionObject::GetChannel());
mutable std::mutex ctx_mutex_;
std::map<std::string, GpgKey> keys_cache_;
mutable std::mutex keys_cache_mutex_;
GpgKey get_key_in_cache(const std::string& id);
};
} // namespace GpgFrontend
#endif // GPGFRONTEND_ZH_CN_TS_GPGKEYGETTER_H
GpgFrontend::SingletonFunctionObject
Definition: GpgFunctionObject.h:148
GpgFrontend::GpgKeyGetter::GpgKeyGetter
GpgKeyGetter(int channel=SingletonFunctionObject::GetDefaultChannel())
Construct a new Gpg Key Getter object.
Definition: GpgKeyGetter.cpp:41
GpgFrontend::GpgKeyGetter::GetKeysCopy
KeyListPtr GetKeysCopy(const KeyListPtr &keys)
Get the Keys Copy object.
Definition: GpgKeyGetter.cpp:164
GpgFrontend::GpgKeyGetter::keys_cache_mutex_
std::mutex keys_cache_mutex_
shared mutex for the keys cache
Definition: GpgKeyGetter.h:133
GpgFrontend
Definition: CoreCommonUtil.cpp:29
GpgFrontend::SingletonFunctionObject< GpgContext >::GetInstance
static GpgContext & GetInstance(int channel=GpgFrontend::GPGFRONTEND_DEFAULT_CHANNEL)
Get the Instance object.
Definition: GpgFunctionObject.h:170
GpgFrontend::GpgKeyGetter::get_key_in_cache
GpgKey get_key_in_cache(const std::string &id)
Get the Key object.
Definition: GpgKeyGetter.cpp:173
GpgFrontend::GpgKeyGetter
Definition: GpgKeyGetter.h:45
GpgFrontend::SingletonFunctionObject::GetChannel
int GetChannel() const
Get the Channel object.
Definition: GpgFunctionObject.h:239
GpgFrontend::GpgKeyGetter::FetchKey
KeyLinkListPtr FetchKey()
Get all the keys by receiving a linked list.
Definition: GpgKeyGetter.cpp:82
GpgFrontend::GpgContext
Definition: GpgContext.h:59
GpgFrontend::GpgKeyGetter::FlushKeyCache
void FlushKeyCache()
flush the keys in the cache
Definition: GpgKeyGetter.cpp:101
GpgFrontend::GpgKeyGetter::GetKey
GpgKey GetKey(const std::string &id, bool use_cache=true)
Get the Key object.
Definition: GpgKeyGetter.cpp:47
GpgFrontend::GpgKeyGetter::GetPubkey
GpgKey GetPubkey(const std::string &id, bool use_cache=true)
Get the Pubkey object.
Definition: GpgKeyGetter.cpp:67
GpgFrontend::SingletonFunctionObject::GetDefaultChannel
static int GetDefaultChannel()
Get the Default Channel object.
Definition: GpgFunctionObject.h:232
GpgFrontend::check_gpg_error_2_err_code
GPGFRONTEND_CORE_EXPORT gpg_err_code_t check_gpg_error_2_err_code(gpgme_error_t err, gpgme_error_t predict=GPG_ERR_NO_ERROR)
Definition: GpgConstants.cpp:63
GpgFrontend::GpgKeyGetter::keys_cache_
std::map< std::string, GpgKey > keys_cache_
cache the keys with key id
Definition: GpgKeyGetter.h:127
GpgFrontend::GpgKeyGetter::GetKeys
KeyListPtr GetKeys(const KeyIdArgsListPtr &ids)
Get the Keys object.
Definition: GpgKeyGetter.cpp:148
GpgFrontend::GpgKeyGetter::ctx_mutex_
std::mutex ctx_mutex_
shared mutex for the keys cache
Definition: GpgKeyGetter.h:121
GpgFrontend::GpgKey
Definition: GpgKey.h:41