summaryrefslogtreecommitdiffstats
path: root/vespalib
diff options
context:
space:
mode:
authorHÃ¥vard Pettersen <havardpe@gmail.com>2018-08-30 14:12:22 +0200
committerGitHub <noreply@github.com>2018-08-30 14:12:22 +0200
commitfdeffcd889575dac81f76b534cab833e1bd0a2e4 (patch)
treec8d5e3afa68ac2843db3c8f4a2a9f3f12e67709b /vespalib
parent285594e2477a164a781d61a425b96205c5b4d728 (diff)
parenta7eca91afb48a0d1664ec53eaebb86ffa069722b (diff)
Merge pull request #6686 from vespa-engine/havardpe/integrate-crypto-engine-in-fnet
integrate Crypto{Engine,Socket} into fnet
Diffstat (limited to 'vespalib')
-rw-r--r--vespalib/src/vespa/vespalib/net/crypto_engine.cpp19
-rw-r--r--vespalib/src/vespa/vespalib/net/crypto_engine.h5
2 files changed, 24 insertions, 0 deletions
diff --git a/vespalib/src/vespa/vespalib/net/crypto_engine.cpp b/vespalib/src/vespa/vespalib/net/crypto_engine.cpp
index 78499d6d18e..8832b4b1cfe 100644
--- a/vespalib/src/vespa/vespalib/net/crypto_engine.cpp
+++ b/vespalib/src/vespa/vespalib/net/crypto_engine.cpp
@@ -155,10 +155,29 @@ public:
}
};
+CryptoEngine::SP create_default_crypto_engine() {
+ // TODO: check VESPA_TLS_CONFIG_FILE here
+ // return std::make_shared<XorCryptoEngine>();
+ return std::make_shared<NullCryptoEngine>();
}
+} // namespace vespalib::<unnamed>
+
+std::mutex CryptoEngine::_shared_lock;
+CryptoEngine::SP CryptoEngine::_shared_default(nullptr);
+
CryptoEngine::~CryptoEngine() = default;
+CryptoEngine::SP
+CryptoEngine::get_default()
+{
+ std::lock_guard guard(_shared_lock);
+ if (!_shared_default) {
+ _shared_default = create_default_crypto_engine();
+ }
+ return _shared_default;
+}
+
CryptoSocket::UP
NullCryptoEngine::create_crypto_socket(SocketHandle socket, bool)
{
diff --git a/vespalib/src/vespa/vespalib/net/crypto_engine.h b/vespalib/src/vespa/vespalib/net/crypto_engine.h
index 0f491838a6a..177766fb789 100644
--- a/vespalib/src/vespa/vespalib/net/crypto_engine.h
+++ b/vespalib/src/vespa/vespalib/net/crypto_engine.h
@@ -5,6 +5,7 @@
#include "socket_handle.h"
#include "crypto_socket.h"
#include <memory>
+#include <mutex>
namespace vespalib {
@@ -18,6 +19,10 @@ struct CryptoEngine {
using SP = std::shared_ptr<CryptoEngine>;
virtual CryptoSocket::UP create_crypto_socket(SocketHandle socket, bool is_server) = 0;
virtual ~CryptoEngine();
+ static CryptoEngine::SP get_default();
+private:
+ static std::mutex _shared_lock;
+ static CryptoEngine::SP _shared_default;
};
/**