28 return std::make_shared<js::core::Context>(access);
36 const std::optional<ccf::endpoints::InterpreterReusePolicy>&
38 size_t freshness_marker)
override
42 throw std::logic_error(
43 "JS interpreter reuse lru is only supported for APP "
47 std::lock_guard<ccf::pal::Mutex> guard(
lock);
52 "Clearing interpreter lru at {} - rebuilding at {}",
59 if (interpreter_reuse.has_value())
61 switch (interpreter_reuse->kind)
65 auto key = interpreter_reuse->key;
74 auto it =
lru.find(key);
79 "Constructed cached JS interpreter at key {}. Cache now "
80 "contains {} interpreters",
87 "Returning interpreter previously in cache, with key {}", key);
103 std::lock_guard<ccf::pal::Mutex> guard(
lock);
104 lru.set_max_size(max);
Definition interpreter_cache_interface.h:23
Definition interpreter_cache.h:12
size_t cache_build_marker
Definition interpreter_cache.h:17
void set_max_cached_interpreters(size_t max) override
Definition interpreter_cache.h:101
LRU< std::string, std::shared_ptr< js::core::Context > > lru
Definition interpreter_cache.h:16
ccf::pal::Mutex lock
Definition interpreter_cache.h:15
InterpreterFactory interpreter_factory
Definition interpreter_cache.h:19
std::shared_ptr< js::core::Context > make_interpreter(js::TxAccess access)
Definition interpreter_cache.h:21
std::shared_ptr< js::core::Context > get_interpreter(js::TxAccess access, const std::optional< ccf::endpoints::InterpreterReusePolicy > &interpreter_reuse, size_t freshness_marker) override
Definition interpreter_cache.h:34
InterpreterCache(size_t max_cache_size)
Definition interpreter_cache.h:32
void set_interpreter_factory(const InterpreterFactory &ip) override
Definition interpreter_cache.h:107
#define LOG_INFO_FMT
Definition logger.h:362
#define LOG_TRACE_FMT
Definition logger.h:356
std::function< std::shared_ptr< js::core::Context >(js::TxAccess)> InterpreterFactory
Definition interpreter_cache_interface.h:20
TxAccess
Definition tx_access.h:10
std::mutex Mutex
Definition locking.h:12
@ KeyBased
Definition endpoint.h:147