summaryrefslogtreecommitdiffstats
path: root/streamingvisitors/src/vespa/searchvisitor/searchenvironment.h
diff options
context:
space:
mode:
Diffstat (limited to 'streamingvisitors/src/vespa/searchvisitor/searchenvironment.h')
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/searchenvironment.h11
1 files changed, 7 insertions, 4 deletions
diff --git a/streamingvisitors/src/vespa/searchvisitor/searchenvironment.h b/streamingvisitors/src/vespa/searchvisitor/searchenvironment.h
index 15a6edd667d..2fdd11d6a77 100644
--- a/streamingvisitors/src/vespa/searchvisitor/searchenvironment.h
+++ b/streamingvisitors/src/vespa/searchvisitor/searchenvironment.h
@@ -9,9 +9,12 @@
#include <vespa/config/subscription/configuri.h>
#include <vespa/vsm/vsm/vsm-adapter.h>
#include <vespa/fastlib/text/normwordfolder.h>
+#include <mutex>
namespace streaming {
+class SearchEnvironmentSnapshot;
+
class SearchEnvironment : public storage::VisitorEnvironment
{
private:
@@ -20,16 +23,17 @@ private:
using SP = std::shared_ptr<Env>;
Env(const config::ConfigUri& configUri, const Fast_NormalizeWordFolder& wf);
~Env() override;
- const vsm::VSMAdapter * getVSMAdapter() const { return _vsmAdapter.get(); }
- const RankManager * getRankManager() const { return _rankManager.get(); }
void configure(const config::ConfigSnapshot & snapshot) override;
static config::ConfigKeySet createKeySet(const vespalib::string & configId);
+ std::shared_ptr<const SearchEnvironmentSnapshot> get_snapshot();
private:
const vespalib::string _configId;
config::SimpleConfigurer _configurer;
std::unique_ptr<vsm::VSMAdapter> _vsmAdapter;
std::unique_ptr<RankManager> _rankManager;
+ std::shared_ptr<const SearchEnvironmentSnapshot> _snapshot;
+ std::mutex _lock;
};
using EnvMap = vespalib::hash_map<vespalib::string, Env::SP>;
using EnvMapUP = std::unique_ptr<EnvMap>;
@@ -47,8 +51,7 @@ private:
public:
SearchEnvironment(const config::ConfigUri & configUri);
~SearchEnvironment();
- const vsm::VSMAdapter * getVSMAdapter(const vespalib::string & searchcluster) { return getEnv(searchcluster).getVSMAdapter(); }
- const RankManager * getRankManager(const vespalib::string & searchcluster) { return getEnv(searchcluster).getRankManager(); }
+ std::shared_ptr<const SearchEnvironmentSnapshot> get_snapshot(const vespalib::string& search_cluster);
// Should only be used by unit tests to simulate that the calling thread is finished.
void clear_thread_local_env_map();
};