diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2022-05-12 11:01:20 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2022-05-12 11:01:20 +0000 |
commit | e2a3bb9086da8da6ea1ef0c84066748a9e5ac1cf (patch) | |
tree | 43c3b79a69341643c5286ffe98dc9f2e10319320 /searchcore/src/apps/proton/proton.cpp | |
parent | 32e26201ca86681150eb47661ae551a1c188c594 (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.cpp | 20 |
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; |