NCBI C++ ToolKit
icache_clean_thread.hpp
Go to the documentation of this file.

Go to the SVN repository for this file.

1 #ifndef UTIL_CACHE_THREAD_CLEANER__HPP
2 #define UTIL_CACHE_THREAD_CLEANER__HPP
3 
4 /* $Id: icache_clean_thread.hpp 91363 2020-10-19 14:54:50Z grichenk $
5  * ===========================================================================
6  *
7  * PUBLIC DOMAIN NOTICE
8  * National Center for Biotechnology Information
9  *
10  * This software/database is a "United States Government Work" under the
11  * terms of the United States Copyright Act. It was written as part of
12  * the author's official duties as a United States Government employee and
13  * thus cannot be copyrighted. This software/database is freely available
14  * to the public for use. The National Library of Medicine and the U.S.
15  * Government have not placed any restriction on its use or reproduction.
16  *
17  * Although all reasonable efforts have been taken to ensure the accuracy
18  * and reliability of the software and data, the NLM and the U.S.
19  * Government do not and cannot warrant the performance or results that
20  * may be obtained by using this software or data. The NLM and the U.S.
21  * Government disclaim all warranties, express or implied, including
22  * warranties of performance, merchantability or fitness for any particular
23  * purpose.
24  *
25  * Please cite the author in any work or product based on this material.
26  *
27  * ===========================================================================
28  *
29  * Authors: Anatoliy Kuznetsov
30  *
31  * File Description: Cache cleaner (runs a thread, calls purge to remove
32  * obsolete thread elements.
33  *
34  */
35 
36 #include <util/cache/icache.hpp>
37 #include <util/thread_nonstop.hpp>
38 #include <util/error_codes.hpp>
39 
40 
42 
43 /// Thread class, peridically calls ICache::Purge to remove obsolete
44 /// elements
45 ///
47 {
48 public:
50  unsigned run_delay,
51  unsigned stop_request_poll = 10)
52  : CThreadNonStop(run_delay, stop_request_poll),
53  m_Cache(cache)
54  {}
55 
56  virtual void DoJob(void)
57  {
58  try {
59  int timeout = m_Cache->GetTimeout();
60  m_Cache->Purge(timeout);
61  }
62  catch(exception& ex)
63  {
64  RequestStop();
65  ERR_POST_XX(Util_Cache, 3,
66  Error << "Error when cleaning cache: "
67  << ex.what()
68  << " cleaning thread has been stopped.");
69  }
70  }
71 
72 private:
74 };
75 
76 
78 
79 #endif
Thread class, peridically calls ICache::Purge to remove obsolete elements.
CCacheCleanerThread(ICache *cache, unsigned run_delay, unsigned stop_request_poll=10)
virtual void DoJob(void)
Payload function.
Adaptation of CThread class repeatedly running some job.
void RequestStop()
Schedule thread Stop.
BLOB cache read/write/maintenance interface.
Definition: icache.hpp:64
virtual void Purge(time_t access_timeout)=0
Delete all BLOBs older than specified.
virtual int GetTimeout() const =0
Get expiration timeout.
#define ERR_POST_XX(error_name, err_subcode, message)
Error posting with error code having given name and with given error subcode.
Definition: ncbidiag.hpp:564
void Error(CExceptionArgs_Base &args)
Definition: ncbiexpt.hpp:1197
#define END_NCBI_SCOPE
End previously defined NCBI scope.
Definition: ncbistl.hpp:103
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
Definition: ncbistl.hpp:100
Interfaces for a local cache of versioned binary large objects (BLOBS).
Definition of all error codes used in util (xutil.lib).
Modified on Sun Apr 21 03:43:34 2024 by modify_doxy.py rev. 669887