From 9d7bd89ebdfe68fcfa8eaa614551347151be1221 Mon Sep 17 00:00:00 2001 From: Jason Wang <wangr1@ornl.gov> Date: Fri, 3 Mar 2017 15:31:04 -0500 Subject: [PATCH] changed DataMan engine to send arbitrary parameters to DataMan library --- src/engine/dataman/DataManReader.cpp | 41 +++++++++++++-------------- src/engine/dataman/DataManWriter.cpp | 42 +++++++++++++--------------- 2 files changed, 38 insertions(+), 45 deletions(-) diff --git a/src/engine/dataman/DataManReader.cpp b/src/engine/dataman/DataManReader.cpp index 0f5a5c044..2704088d6 100644 --- a/src/engine/dataman/DataManReader.cpp +++ b/src/engine/dataman/DataManReader.cpp @@ -143,30 +143,27 @@ void DataManReader::Init( ) } }; - std::string method_type, method, local_ip, remote_ip; //no need to initialize to empty (it's default) - int local_port=0, remote_port=0, num_channels=0; - - lf_AssignString( "method_type", method_type ); - if( method_type == "stream" ) + auto is_number = [] (const std::string& s) { - lf_AssignString( "method", method ); - lf_AssignString( "local_ip", local_ip ); - lf_AssignString( "remote_ip", remote_ip ); - lf_AssignInt( "local_port", local_port ); - lf_AssignInt( "remote_port", remote_port ); - lf_AssignInt( "num_channels", num_channels ); - - json jmsg; - jmsg["method"] = method; - jmsg["local_ip"] = local_ip; - jmsg["remote_ip"] = remote_ip; - jmsg["local_port"] = local_port; - jmsg["remote_port"] = remote_port; - jmsg["num_channels"] = num_channels; - jmsg["stream_mode"] = "receiver"; - - m_Man.add_stream(jmsg); + return !s.empty() && std::find_if(s.begin(), s.end(), [](char c) { return !std::isdigit(c); }) == s.end(); + }; + + json jmsg; + for(auto &i : m_Method.m_Parameters){ + if( is_number(i.second) ){ + jmsg[i.first] = std::stoi(i.second); + } + else{ + jmsg[i.first] = i.second; + } } + jmsg["stream_mode"] = "receiver"; + m_Man.add_stream(jmsg); + + std::string method_type; + int num_channels=0; + lf_AssignString( "method_type", method_type ); + lf_AssignInt( "num_channels", num_channels ); } else { diff --git a/src/engine/dataman/DataManWriter.cpp b/src/engine/dataman/DataManWriter.cpp index 87c54aa74..7f06b75c7 100644 --- a/src/engine/dataman/DataManWriter.cpp +++ b/src/engine/dataman/DataManWriter.cpp @@ -198,37 +198,33 @@ void DataManWriter::Init( ) } }; - std::string method_type, method, local_ip, remote_ip; //no need to initialize to empty (it's default) - int local_port=0, remote_port=0, num_channels=0; - - lf_AssignString( "method_type", method_type ); - if( method_type == "stream" ) + auto is_number = [] (const std::string& s) { - lf_AssignString( "method", method ); - lf_AssignString( "local_ip", local_ip ); - lf_AssignString( "remote_ip", remote_ip ); - lf_AssignInt( "local_port", local_port ); - lf_AssignInt( "remote_port", remote_port ); - lf_AssignInt( "num_channels", num_channels ); - - json jmsg; - jmsg["method"] = method; - jmsg["local_ip"] = local_ip; - jmsg["remote_ip"] = remote_ip; - jmsg["local_port"] = local_port; - jmsg["remote_port"] = remote_port; - jmsg["num_channels"] = num_channels; - jmsg["stream_mode"] = "sender"; - - m_Man.add_stream(jmsg); + return !s.empty() && std::find_if(s.begin(), s.end(), [](char c) { return !std::isdigit(c); }) == s.end(); + }; + + json jmsg; + for(auto &i : m_Method.m_Parameters){ + if( is_number(i.second) ){ + jmsg[i.first] = std::stoi(i.second); + } + else{ + jmsg[i.first] = i.second; + } } + jmsg["stream_mode"] = "sender"; + m_Man.add_stream(jmsg); + + std::string method_type; + int num_channels=0; + lf_AssignString( "method_type", method_type ); + lf_AssignInt( "num_channels", num_channels ); } else { InitCapsules( ); InitTransports( ); } - } void DataManWriter::InitCapsules( ) -- GitLab