From 7aa95fcd9378218d2ee9ed2c14f77085823d1fcd Mon Sep 17 00:00:00 2001 From: Dennis Klein Date: Fri, 19 Jul 2019 20:53:44 +0200 Subject: [PATCH] SDK: Have DDSSession manage $DDS_SESSION_ID --- fairmq/sdk/DDSSession.cxx | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/fairmq/sdk/DDSSession.cxx b/fairmq/sdk/DDSSession.cxx index 67bb119e..991d1e08 100644 --- a/fairmq/sdk/DDSSession.cxx +++ b/fairmq/sdk/DDSSession.cxx @@ -53,25 +53,36 @@ auto operator>>(std::istream& is, DDSRMSPlugin& plugin) -> std::istream& struct DDSSession::Impl { Impl(DDSEnvironment env, DDSRMSPlugin plugin) - : fEnv(std::move(env)) + : fCount() + , fEnv(std::move(env)) , fDefaultPlugin(std::move(plugin)) , fSession() , fId(to_string(fSession.create())) - {} + { + setenv("DDS_SESSION_ID", fId.c_str(), 1); + } Impl(DDSEnvironment env, DDSRMSPlugin plugin, Id existing_id) - : fEnv(std::move(env)) + : fCount() + , fEnv(std::move(env)) , fDefaultPlugin(std::move(plugin)) , fSession() , fId(std::move(existing_id)) { fSession.attach(fId); + std::string envId(std::getenv("DDS_SESSION_ID")); + if (envId != fId) { + setenv("DDS_SESSION_ID", fId.c_str(), 1); + } } ~Impl() { fSession.shutdown(); } + struct Tag {}; + friend auto operator<<(std::ostream& os, Tag) -> std::ostream& { return os << "DDSSession"; } + tools::InstanceLimiter fCount; const DDSEnvironment fEnv; const DDSRMSPlugin fDefaultPlugin;