From 98edf61de8f2c3d826604d57f7094adbd2a3b308 Mon Sep 17 00:00:00 2001 From: Michael Davidsaver Date: Thu, 5 Aug 2021 09:57:00 -0700 Subject: [PATCH] Add client/server fromEnv() without temporary Config on caller stack --- example/client.cpp | 3 +-- example/mailbox.cpp | 3 +-- example/rpc_client.cpp | 3 +-- example/rpc_server.cpp | 3 +-- example/simpleget.cpp | 2 +- example/simplesrv.cpp | 3 +-- example/spam.cpp | 3 +-- example/ticker.cpp | 3 +-- src/client.cpp | 5 +++++ src/pvxs/client.h | 8 ++++++++ src/pvxs/server.h | 8 ++++++++ src/server.cpp | 5 +++++ test/mcat.cpp | 3 +-- tools/call.cpp | 2 +- tools/get.cpp | 2 +- tools/info.cpp | 2 +- tools/monitor.cpp | 2 +- tools/put.cpp | 2 +- 18 files changed, 40 insertions(+), 22 deletions(-) diff --git a/example/client.cpp b/example/client.cpp index 3949820..924b4ca 100644 --- a/example/client.cpp +++ b/example/client.cpp @@ -34,8 +34,7 @@ int main(int argc, char* argv[]) logger_config_env(); // Create a client context - client::Context ctxt(client::Config::fromEnv() - .build()); + auto ctxt(client::Context::fromEnv()); // Fetch current value int32_t current; diff --git a/example/mailbox.cpp b/example/mailbox.cpp index 9d83399..9a104f4 100644 --- a/example/mailbox.cpp +++ b/example/mailbox.cpp @@ -91,8 +91,7 @@ int main(int argc, char* argv[]) // Build server which will serve this PV // Configure using process environment. - server::Server serv = server::Config::fromEnv() - .build(); + auto serv(server::Server::fromEnv()); for(size_t i=0ul; i(conf)) { diff --git a/src/pvxs/client.h b/src/pvxs/client.h index c857153..7e9fc12 100644 --- a/src/pvxs/client.h +++ b/src/pvxs/client.h @@ -255,6 +255,14 @@ public: explicit Context(const Config &); ~Context(); + /** Create new client context based on configuration from $EPICS_PVA* environment variables. + * + * Shorthand for @code Config::fromEnv().build() @endcode. + * @since UNRELEASED + */ + static + Context fromEnv(); + //! effective config of running client const Config& config() const; diff --git a/src/pvxs/server.h b/src/pvxs/server.h index 668a0d9..d815f82 100644 --- a/src/pvxs/server.h +++ b/src/pvxs/server.h @@ -59,6 +59,14 @@ public: explicit Server(const Config&); ~Server(); + /** Create new server based on configuration from $EPICS_PVA* environment variables. + * + * Shorthand for @code Config::fromEnv().build() @endcode. + * @since UNRELEASED + */ + static + Server fromEnv(); + //! Begin serving. Does not block. Server& start(); //! Stop server diff --git a/src/server.cpp b/src/server.cpp index c13573d..8729b66 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -41,6 +41,11 @@ DEFINE_LOGGER(serversetup, "pvxs.server.setup"); DEFINE_LOGGER(serverio, "pvxs.server.io"); DEFINE_LOGGER(serversearch, "pvxs.server.search"); +Server Server::fromEnv() +{ + return Config::fromEnv().build(); +} + Server::Server(const Config& conf) { /* Here be dragons. diff --git a/test/mcat.cpp b/test/mcat.cpp index 24b9ee1..38de630 100644 --- a/test/mcat.cpp +++ b/test/mcat.cpp @@ -152,8 +152,7 @@ int main(int argc, char* argv[]) src->name = argv[optind]; src->fname = argv[optind+1]; - auto serv = server::Config::fromEnv() - .build() + auto serv = server::Server::fromEnv() .addSource("mcat", src); std::cout<<"Effective config\n"<