mirror of
https://github.com/drogonframework/drogon.git
synced 2025-10-30 00:03:17 -04:00
Add the findAndFetch method to the CacheMap class
This commit is contained in:
parent
cd1139cf83
commit
d356d38319
@ -203,6 +203,7 @@ class CacheMap
|
||||
}
|
||||
return _map[key].value;
|
||||
}
|
||||
|
||||
bool find(const T1 &key)
|
||||
{
|
||||
int timeout = 0;
|
||||
@ -221,6 +222,26 @@ class CacheMap
|
||||
|
||||
return flag;
|
||||
}
|
||||
|
||||
bool findAndFetch(const T1 &key, T2 &value)
|
||||
{
|
||||
int timeout = 0;
|
||||
bool flag = false;
|
||||
std::lock_guard<std::mutex> lock(mtx_);
|
||||
auto iter = _map.find(key);
|
||||
if (iter != _map.end())
|
||||
{
|
||||
timeout = iter->second.timeout;
|
||||
flag = true;
|
||||
value = iter->second.value;
|
||||
}
|
||||
|
||||
if (timeout > 0)
|
||||
eraseAfter(timeout, key);
|
||||
|
||||
return flag;
|
||||
}
|
||||
|
||||
void erase(const T1 &key)
|
||||
{
|
||||
//in this case,we don't evoke the timeout callback;
|
||||
|
||||
@ -63,7 +63,13 @@ int gzipCompress(const char *data, const size_t ndata,
|
||||
int gzipDecompress(const char *zdata, const size_t nzdata,
|
||||
char *data, size_t *ndata);
|
||||
|
||||
/// Get the http full date string (RFC 822)
|
||||
/// Get the http full date string
|
||||
/**
|
||||
* rfc2616-3.3.1
|
||||
* Full Date format(RFC 822)
|
||||
* like this:Sun, 06 Nov 1994 08:49:37 GMT
|
||||
* Wed, 12 Sep 2018 09:22:40 GMT
|
||||
*/
|
||||
char *getHttpFullDate(const trantor::Date &date);
|
||||
|
||||
/// Get a formatted string
|
||||
|
||||
@ -405,9 +405,6 @@ int gzipDecompress(const char *zdata, const size_t nzdata,
|
||||
}
|
||||
char *getHttpFullDate(const trantor::Date &date)
|
||||
{
|
||||
//rfc2616-3.3.1
|
||||
//Full Date format like this:Sun, 06 Nov 1994 08:49:37 GMT
|
||||
// Wed, 12 Sep 2018 09:22:40 GMT
|
||||
static __thread int64_t lastSecond = 0;
|
||||
static __thread char lastTimeString[128] = {0};
|
||||
auto nowSecond = date.microSecondsSinceEpoch() / MICRO_SECONDS_PRE_SEC;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user