summaryrefslogtreecommitdiffstats
path: root/config
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2022-02-24 12:50:31 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2022-02-24 12:50:31 +0000
commit9d8de3b985984987a4eae67e5d6d3a3fbdfc7efa (patch)
tree70eeb1abeaa1fd22dbfd8ed5f07409f643cc6a9d /config
parent4ed0d2b6f00c82bc3ba8a3290576a7bedfdd1895 (diff)
- Create the common transport and threadpool in the main loop.
- Also use the common transport for config subscriptions. - Put The TransportConfig in the fnet namespace.
Diffstat (limited to 'config')
-rw-r--r--config/src/vespa/config/subscription/sourcespec.cpp16
-rw-r--r--config/src/vespa/config/subscription/sourcespec.h31
2 files changed, 36 insertions, 11 deletions
diff --git a/config/src/vespa/config/subscription/sourcespec.cpp b/config/src/vespa/config/subscription/sourcespec.cpp
index ec70f921179..15f45434056 100644
--- a/config/src/vespa/config/subscription/sourcespec.cpp
+++ b/config/src/vespa/config/subscription/sourcespec.cpp
@@ -131,6 +131,22 @@ ServerSpec::createSourceFactory(const TimingValues & timingValues) const
timingValues, _traceLevel, vespaVersion, _compressionType);
}
+ConfigServerSpec::ConfigServerSpec(FNET_Transport & transport)
+ : ServerSpec(),
+ _transport(transport)
+{
+}
+
+ConfigServerSpec::~ConfigServerSpec() = default;
+
+std::unique_ptr<SourceFactory>
+ConfigServerSpec::createSourceFactory(const TimingValues & timingValues) const
+{
+ const auto vespaVersion = VespaVersion::getCurrentVersion();
+ return std::make_unique<FRTSourceFactory>(
+ std::make_unique<FRTConnectionPool>(_transport, *this, timingValues),
+ timingValues, traceLevel(), vespaVersion, compressionType());
+}
ConfigSet::ConfigSet()
: _builderMap(std::make_unique<BuilderMap>())
diff --git a/config/src/vespa/config/subscription/sourcespec.h b/config/src/vespa/config/subscription/sourcespec.h
index 3c23233e3ab..e2bdd1c61ee 100644
--- a/config/src/vespa/config/subscription/sourcespec.h
+++ b/config/src/vespa/config/subscription/sourcespec.h
@@ -7,6 +7,8 @@
#include <vector>
#include <memory>
+class FNET_Transport;
+
namespace config {
class ConfigInstance;
@@ -22,7 +24,6 @@ typedef vespalib::string SourceSpecKey;
class SourceSpec
{
public:
- using SourceFactorySP = std::unique_ptr<SourceFactory>;
using UP = std::unique_ptr<SourceSpec>; /// Convenience typedef
/**
@@ -36,7 +37,7 @@ public:
* @param timingValues Timing values to be used for this source.
* @return An std::unique_ptr<Source> that can be used to ask for config.
*/
- virtual SourceFactorySP createSourceFactory(const TimingValues & timingValues) const = 0;
+ virtual std::unique_ptr<SourceFactory> createSourceFactory(const TimingValues & timingValues) const = 0;
virtual ~SourceSpec() = default;
};
@@ -54,8 +55,7 @@ public:
*/
RawSpec(const vespalib::string & config);
- // Implements SourceSpec
- SourceFactorySP createSourceFactory(const TimingValues & timingValues) const override;
+ std::unique_ptr<SourceFactory> createSourceFactory(const TimingValues & timingValues) const override;
/**
* Returns the string representation of this config.
@@ -89,8 +89,7 @@ public:
*/
const vespalib::string & getFileName() const { return _fileName; }
- // Implements SourceSpec
- SourceFactorySP createSourceFactory(const TimingValues & timingValues) const override;
+ std::unique_ptr<SourceFactory> createSourceFactory(const TimingValues & timingValues) const override;
private:
void verifyName(const vespalib::string & fileName);
vespalib::string _fileName;
@@ -117,8 +116,7 @@ public:
*/
const vespalib::string & getDirName() const { return _dirName; }
- // Implements SourceSpec
- SourceFactorySP createSourceFactory(const TimingValues & timingValues) const override;
+ std::unique_ptr<SourceFactory> createSourceFactory(const TimingValues & timingValues) const override;
private:
vespalib::string _dirName;
};
@@ -154,7 +152,7 @@ public:
*/
ServerSpec(const vespalib::string & hostSpec);
- SourceFactorySP createSourceFactory(const TimingValues & timingValues) const override;
+ std::unique_ptr<SourceFactory> createSourceFactory(const TimingValues & timingValues) const override;
/**
* Inspect how many hosts this source refers to.
@@ -193,6 +191,18 @@ private:
const static int DEFAULT_PROXY_PORT = 19090;
};
+/**
+ * A ServerSpec that allows providing externally supplied transport
+ */
+class ConfigServerSpec : public config::ServerSpec {
+public:
+ ConfigServerSpec(FNET_Transport & transport);
+ ~ConfigServerSpec() override;
+ std::unique_ptr<SourceFactory> createSourceFactory(const TimingValues & timingValues) const override;
+private:
+ FNET_Transport & _transport;
+};
+
/**
@@ -221,8 +231,7 @@ public:
*/
void addBuilder(const vespalib::string & configId, ConfigInstance * builder);
- // Implements SourceSpec
- SourceFactorySP createSourceFactory(const TimingValues & timingValues) const override;
+ std::unique_ptr<SourceFactory> createSourceFactory(const TimingValues & timingValues) const override;
private:
BuilderMapSP _builderMap;
};