@@ -59,14 +59,24 @@ inline void setDataBuffer(std::vector<char>& buffer, DimObject& dimObject)
5959 dimObject.setData (buffer.data (), buffer.size ());
6060}
6161
62+ inline std::string argumentSeparator ()
63+ {
64+ return " \n " ;
65+ }
66+
67+ inline std::string scaPairSeparator ()
68+ {
69+ return " ," ;
70+ }
71+
6272inline std::string successPrefix ()
6373{
64- return " success: " ;
74+ return " success" + argumentSeparator () ;
6575}
6676
6777inline std::string failPrefix ()
6878{
69- return " failure: " ;
79+ return " failure" + argumentSeparator () ;
7080}
7181
7282inline std::string makeSuccessString (const std::string& string)
@@ -92,6 +102,7 @@ inline bool isFail(const std::string& string)
92102inline std::string stripPrefix (const std::string& string)
93103{
94104 if (string.length () < PREFIX_LENGTH) {
105+ printf (" len=%ul str=%s\n " , string.length (), string.c_str ());
95106 BOOST_THROW_EXCEPTION (AlfException () << ErrorInfo::Message (" string too short to contain prefix" ));
96107 }
97108 return string.substr (PREFIX_LENGTH);
@@ -115,7 +126,7 @@ class DimRpcInfoWrapper
115126 auto string = std::string (mRpcInfo ->getString ());
116127 if (isFail (string)) {
117128 BOOST_THROW_EXCEPTION (
118- AlfException () << ErrorInfo::Message (" ALF server failure" + string));
129+ AlfException () << ErrorInfo::Message (" ALF server failure: " + string));
119130 }
120131 return string;
121132 }
@@ -137,60 +148,69 @@ class DimRpcInfoWrapper
137148 std::unique_ptr<DimRpcInfo> mRpcInfo ;
138149};
139150
140- class PublishRpc : DimRpcInfoWrapper
151+ class PublishRegistersStartRpc : DimRpcInfoWrapper
141152{
142153 public:
143- PublishRpc (const std::string& serviceName)
154+ PublishRegistersStartRpc (const std::string& serviceName)
144155 : DimRpcInfoWrapper(serviceName)
145156 {
146157 }
147158
148- void publish (std::string dnsName, double frequency , std::vector<size_t > addresses)
159+ void publish (std::string dnsName, double interval , std::vector<size_t > addresses)
149160 {
150161 std::ostringstream stream;
151- stream << dnsName << ' ;' ;
162+ auto sep = argumentSeparator ();
163+ stream << dnsName << sep << interval;
152164 for (size_t i = 0 ; i < addresses.size (); ++i) {
153- stream << addresses[i];
154- if ((i + 1 ) < addresses.size ()) {
155- stream << ' ,' ;
156- }
165+ stream << sep << addresses[i];
157166 }
158- stream << ' ;' << frequency;
159167 printf (" Publish: %s\n " , stream.str ().c_str ());
160168 setString (stream.str ());
161169 getString ();
162170 }
163171};
164172
165- class PublishScaRpc : DimRpcInfoWrapper
173+ class PublishScaSequenceStartRpc : DimRpcInfoWrapper
166174{
167175 public:
168- PublishScaRpc (const std::string& serviceName)
176+ PublishScaSequenceStartRpc (const std::string& serviceName)
169177 : DimRpcInfoWrapper(serviceName)
170178 {
171179 }
172180
173- void publish (std::string dnsName, double frequency , const std::vector<Sca::CommandData>& commandDataPairs)
181+ void publish (std::string dnsName, double interval , const std::vector<Sca::CommandData>& commandDataPairs)
174182 {
175183 std::ostringstream stream;
176- stream << dnsName << ' ;' ;
184+ auto sep = argumentSeparator ();
185+ stream << dnsName << sep << interval;
177186 for (size_t i = 0 ; i < commandDataPairs.size (); ++i) {
178- stream << commandDataPairs[i].command << ' ,' << commandDataPairs[i].data ;
179- if ((i + 1 ) < commandDataPairs.size ()) {
180- stream << ' \n ' ;
181- }
187+ stream << sep << commandDataPairs[i].command << scaPairSeparator () << commandDataPairs[i].data ;
182188 }
183- stream << ' ;' << frequency;
184189 printf (" Publish SCA: %s\n " , stream.str ().c_str ());
185190 setString (stream.str ());
186191 getString ();
187192 }
188193};
189194
190- class PublishStopRpc : DimRpcInfoWrapper
195+ class PublishRegistersStopRpc : DimRpcInfoWrapper
196+ {
197+ public:
198+ PublishRegistersStopRpc (const std::string &serviceName)
199+ : DimRpcInfoWrapper(serviceName)
200+ {
201+ }
202+
203+ void stop (std::string dnsName)
204+ {
205+ setString (dnsName);
206+ getString ();
207+ }
208+ };
209+
210+ class PublishScaSequenceStopRpc : DimRpcInfoWrapper
191211{
192212 public:
193- PublishStopRpc (const std::string &serviceName)
213+ PublishScaSequenceStopRpc (const std::string &serviceName)
194214 : DimRpcInfoWrapper(serviceName)
195215 {
196216 }
@@ -319,32 +339,6 @@ class ScaWriteSequence: DimRpcInfoWrapper
319339 }
320340};
321341
322- class StringRpcServer : public DimRpc
323- {
324- public:
325- using Callback = std::function<std::string(const std::string&)>;
326-
327- StringRpcServer (const std::string& serviceName, Callback callback)
328- : DimRpc(serviceName.c_str(), "C", "C"), callback(callback)
329- {
330- }
331-
332- StringRpcServer (const StringRpcServer& b) = delete;
333- StringRpcServer (StringRpcServer&& b) = delete;
334-
335- private:
336- void rpcHandler () override
337- {
338- try {
339- auto returnValue = callback (std::string (getString ()));
340- Alf::setDataString (Alf::makeSuccessString (returnValue), *this );
341- } catch (const std::exception& e) {
342- Alf::setDataString (Alf::makeFailString (e.what ()), *this );
343- }
344- }
345-
346- Callback callback;
347- };
348342
349343} // namespace Alf
350344} // namespace CommandLineUtilities
0 commit comments