aboutsummaryrefslogtreecommitdiffstats
path: root/searchcore/src/apps/proton/proton.cpp
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2022-05-12 11:01:20 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2022-05-12 11:01:20 +0000
commite2a3bb9086da8da6ea1ef0c84066748a9e5ac1cf (patch)
tree43c3b79a69341643c5286ffe98dc9f2e10319320 /searchcore/src/apps/proton/proton.cpp
parent32e26201ca86681150eb47661ae551a1c188c594 (diff)
Wrap the FNET_Transport to make it exception safe.
Diffstat (limited to 'searchcore/src/apps/proton/proton.cpp')
-rw-r--r--searchcore/src/apps/proton/proton.cpp20
1 files changed, 16 insertions, 4 deletions
diff --git a/searchcore/src/apps/proton/proton.cpp b/searchcore/src/apps/proton/proton.cpp
index c823ee8a09f..4dc8a90079a 100644
--- a/searchcore/src/apps/proton/proton.cpp
+++ b/searchcore/src/apps/proton/proton.cpp
@@ -203,6 +203,19 @@ buildTransportConfig() {
return fnet::TransportConfig(std::max(1u, std::min(4u, numProcs/8)));
}
+class Transport {
+public:
+ Transport(const fnet::TransportConfig & config)
+ : _transport(config)
+ {}
+ ~Transport() {
+ _transport.ShutDown(true);
+ }
+ FNET_Transport & transport() { return _transport; }
+private:
+ FNET_Transport _transport;
+};
+
}
void
@@ -268,10 +281,9 @@ App::main(int argc, char **argv)
setupSignals();
setup_fadvise();
FastOS_ThreadPool threadPool(128_Ki);
- FNET_Transport transport(buildTransportConfig());
- transport.Start(&threadPool);
- startAndRun(threadPool, transport, argc, argv);
- transport.ShutDown(true);
+ Transport transport(buildTransportConfig());
+ transport.transport().Start(&threadPool);
+ startAndRun(threadPool, transport.transport(), argc, argv);
} catch (const vespalib::InvalidCommandLineArgumentsException &e) {
LOG(warning, "Invalid commandline arguments: '%s'", e.what());
return 1;