diff --git a/MAC/APL/CURTDBDaemons/src/KeyValueLogger/KeyValueLogger.cc b/MAC/APL/CURTDBDaemons/src/KeyValueLogger/KeyValueLogger.cc index 69f20c8976ae4d4b1065f9ff247b4c3b451aa50c..fbf5261f39b7068c0fbb3aa5a9f64c04cc52bd2d 100644 --- a/MAC/APL/CURTDBDaemons/src/KeyValueLogger/KeyValueLogger.cc +++ b/MAC/APL/CURTDBDaemons/src/KeyValueLogger/KeyValueLogger.cc @@ -279,12 +279,12 @@ GCFEvent::TResult KeyValueLogger::operational(GCFEvent& event, GCFPortInterface case KVT_SEND_MSG_POOL: { KVTSendMsgPoolEvent logEvent(event); - if (logEvent.keys().size() != logEvent.nrElements || - logEvent.values().size() != logEvent.nrElements || - logEvent.times().size() != logEvent.nrElements) { + if (logEvent.keys.size() != logEvent.nrElements || + logEvent.values.size() != logEvent.nrElements || + logEvent.times.size() != logEvent.nrElements) { LOG_ERROR(formatString("Received kvt pool from %s (seqnr=%d) with unequal vectorsizes (n=%d, k=%d, v=%d, t=%d)", itsClients[&port].name.c_str(), logEvent.seqnr, logEvent.nrElements, - logEvent.keys().size(), logEvent.values().size(), logEvent.times().size())); + logEvent.keys.size(), logEvent.values.size(), logEvent.times.size())); if (logEvent.seqnr > 0) { KVTSendMsgPoolAckEvent answer; answer.seqnr = logEvent.seqnr; @@ -296,7 +296,7 @@ GCFEvent::TResult KeyValueLogger::operational(GCFEvent& event, GCFPortInterface bool sendOk(true); for (uint32 i = 0; i < logEvent.nrElements; i++) { - sendOk &= itsKVTgate->addKVT(logEvent.keys()[i], logEvent.values()[i], from_ustime_t(logEvent.times()[i])); + sendOk &= itsKVTgate->addKVT(logEvent.keys[i], logEvent.values[i], from_ustime_t(logEvent.times[i])); } itsClients[&port].msgCnt += logEvent.nrElements; if (logEvent.seqnr > 0) { diff --git a/MAC/MACIO/autogen/protocol.tpl b/MAC/MACIO/autogen/protocol.tpl index 46c01d0a5f586dd01db944a87ec5271bb013efa6..744c221975c9dbf07bd03a03529086c6c32fa23f 100644 --- a/MAC/MACIO/autogen/protocol.tpl +++ b/MAC/MACIO/autogen/protocol.tpl @@ -1,4 +1,5 @@ [+ AutoGen5 template ph cc +] +[+ # manual at: http://www.gnu.org/software/autogen/manual/html_node/Function-Index.html#Function-Index +] // [+ (dne "// ") +][+ (out-push-add "/dev/null") +] [+ DEFINE prefix_cap +][+ IF (exist? "prefix") +][+ (get "prefix") +][+ ENDIF +][+ ENDDEF +] @@ -10,6 +11,7 @@ [+ DEFINE event_class_name +][+ prefix_cap +][+ cap_signal +]Event[+ ENDDEF +] [+ DEFINE event_class_decl +][+ event_class_name +] : public MACIO::GCFEvent[+ ENDDEF +] [+ DEFINE protocol_name +][+ (string-upcase (base-name)) +][+ ENDDEF +] +[+ DEFINE project +][+ IF (exist? "project") +][+ (get "project") +][+ ELSE +]LOFAR[+ ENDIF +][+ ENDDEF +] [+ DEFINE event_class_member_type +][+ IF (*== (get "type") "]") +][+ (substring (get "type") 0 (string-index (get "type") #\[)) +][+ ELSE +][+ (get "type") +][+ ENDIF +][+ ENDDEF +] [+ DEFINE event_class_member +][+ event_class_member_type +][+ IF (*== (get "type") "[]") +]*[+ ENDIF +] [+ (get "name") +][+ IF (and (*== (get "type") "]") (not (*== (get "type") "[]"))) +][+ (substring (get "type") (string-index (get "type") #\[) (string-length (get "type"))) +][+ ENDIF +][+ ENDDEF +] @@ -17,7 +19,7 @@ // // [+ (base-name) +].[+ (suffix) +]: [+ description +] // -// Copyright (C) 2003-2009 +// Copyright (C) 2003-2012 // ASTRON (Netherlands Foundation for Research in Astronomy) // P.O.Box 2, 7990 AA Dwingeloo, The Netherlands, seg@astron.nl // @@ -37,9 +39,14 @@ #include "[+ (base-name) +].ph" using namespace LOFAR::MACIO; +[+ IF (exist? "project") +]using namespace LOFAR;[+ ENDIF +] using namespace std; -const char* LOFAR::[+ (base-name) +]::[+ protocol_name +]_signalnames[] = +[+ FOR Cfunction "" +][+ (get "result")+] [+ project +]::[+ (base-name) +]::[+ (get "name") +] { +[+ (get "code") +] +}[+ ENDFOR +] + +const char* [+ project +]::[+ (base-name) +]::[+ protocol_name +]_signalnames[] = { "[+ protocol_name +]: invalid signal",[+ FOR event "," +] "[+ signal_name +]"[+ ENDFOR +] @@ -50,9 +57,9 @@ const char* [+ protocol_name +]_errornames[] = "[+ (get "msg") +]"[+ ENDFOR error +] }; -const struct protocolStrings LOFAR::[+ (base-name) +]::[+ protocol-name +]_STRINGS = { +const struct protocolStrings [+ project +]::[+ (base-name) +]::[+ protocol-name +]_STRINGS = { [+ (count "event") +]+1, [+ (count "error") +], - LOFAR::[+ (base-name) +]::[+ protocol_name +]_signalnames, + [+ project +]::[+ (base-name) +]::[+ protocol_name +]_signalnames, [+ protocol_name +]_errornames }; [+ ELSE +] @@ -67,13 +74,16 @@ const struct protocolStrings LOFAR::[+ (base-name) +]::[+ protocol-name +]_STRI #include <string> #include <cstring> -namespace LOFAR +namespace [+ project +] { namespace [+ (base-name) +] { [+ (get "prelude") +] +[+ FOR Cfunction "" +][+ (get "result")+] [+ (get "name") +]; +[+ ENDFOR +] + // // Define protocol ID // @@ -161,9 +171,8 @@ void [+ event_class_name +]::pack() [+ ENDFOR +] uint32 __requiredSize = [+ IF (not (exist? "noheader")) +]sizePackedGCFEvent[+ ELSE +]0[+ ENDIF +][+ FOR param "" +] [+ IF (exist? "userdefined") +]+ [+ (get "name") +][+ IF (*== (get "type") "*") +]->[+ ELSE +].[+ ENDIF +]getSize() - [+ ELIF (not (*== (get "type") "]")) +]+ [+ IF (== (get "type") "string") +][+ (get "name") +].length() + sizeof(uint16)[+ ELSE +]sizeof([+ (get "name") +])[+ ENDIF+] [+ ELIF (*== (get "type") "[]") +]+ sizeof([+ (get "name") +]NOE) + ([+ (get "name") +]NOE * sizeof([+ event_class_member_type +])) - [+ ELSE +]+ sizeof([+ (get "name") +])[+ ENDIF +][+ ENDFOR +]; + [+ ELSE +]+ MSH_size([+ (get "name") +])[+ ENDIF +][+ ENDFOR +]; resizeBuf(__requiredSize); uint32 __offset = 0; @@ -173,31 +182,22 @@ void [+ event_class_name +]::pack() [+ FOR param "" +] [+ IF (exist? "userdefined") +] __offset += [+ (get "name") +][+ IF (*== (get "type") "*") +]->[+ ELSE +].[+ ENDIF +]pack(_buffer + __offset); - [+ ELIF (not (*== (get "type") "]")) +] - [+ IF (== (get "type") "string") +] - __offset += packString(_buffer + __offset, [+ (get "name") +]); - [+ ELSE +] - memcpy(_buffer + __offset, &[+ (get "name") +], sizeof([+ (get "type") +])); - __offset += sizeof([+ (get "type") +]); - [+ ENDIF +] [+ ELIF (*== (get "type") "[]") +] __offset += packMember(__offset, [+ (get "name") +], [+ (get "name") +]NOE, sizeof([+ event_class_member_type +])); [+ ELSE +] - memcpy(_buffer + __offset, [+ (get "name") +], sizeof([+ (get "name") +])); - __offset += sizeof([+ (get "name") +]); + MSH_pack(_buffer, __offset, [+ (get "name") +]); [+ ENDIF +][+ ENDFOR +] [+ IF (= (count "param") 0) +] // no params in this event to pack - (void)__offset; [+ ENDIF +] } void [+ event_class_name +]::unpack() { - if (length == 0) - return; - - [+ IF (> (count "param") 0) +] + if (!length) { + return; + } + [+ IF (> (count "param") 0) +] uint32 __offset = sizePackedGCFEvent; [+ ELSE +] // no params in this event to unpack @@ -208,21 +208,13 @@ void [+ event_class_name +]::unpack() [+ (get "name") +] = new [+ (substring (get "type") 0 (string-index (get "type") #\*)) +](); [+ ENDIF +] __offset += [+ (get "name") +][+ IF (*== (get "type") "*") +]->[+ ELSE +].[+ ENDIF +]unpack(_buffer + __offset); - [+ ELIF (not (*== (get "type") "]")) +] - [+ IF (== (get "type") "string") +] - __offset += GCFEvent::unpackString([+ (get "name") +], _buffer + __offset); - [+ ELSE +] - memcpy(&[+ (get "name") +], _buffer + __offset, sizeof([+ (get "type") +])); - __offset += sizeof([+ (get "type") +]); - [+ ENDIF +] [+ ELIF (*== (get "type") "[]") +] [+ (get "name") +] = ([+ event_class_member_type +]*) unpackMember(_buffer, __offset, [+ (get "name") +]NOE, sizeof([+ event_class_member_type +])); [+ ELSE +] - memcpy([+ (get "name") +], (_buffer + __offset), sizeof([+ (get "name") +])); - __offset += sizeof([+ (get "name") +]); + MSH_unpack(_buffer, __offset, [+ (get "name") +]); [+ ENDIF +][+ ENDFOR +] - _buffer = 0; - length = 0; + _buffer = 0; + __offset = 0; } [+ event_class_name +]* [+ event_class_name +]::clone() @@ -236,6 +228,7 @@ void [+ event_class_name +]::unpack() ostream& [+ event_class_name +]::print(ostream& os) const { +using LOFAR::operator<<; // Note: 'userdefined' classes are only printed if they are 'printable' // base classes are printed except when they are 'nonprintable' MACIO::GCFEvent::print(os); @@ -252,9 +245,9 @@ ostream& [+ event_class_name +]::print(ostream& os) const [+ IF (= (suffix) "ph") +] } // namespace [+ (base-name) +] -} // namespace LOFAR +} // namespace [+ project +] -using namespace LOFAR::[+ (base-name) +]; +using namespace [+ project +]::[+ (base-name) +]; #endif [+ ENDIF +] diff --git a/MAC/MACIO/src/KVT_Protocol.prot b/MAC/MACIO/src/KVT_Protocol.prot index e4204a4384f9d0826547ac640018ad8d47e63c9d..888d518388ff5ead6f073338c9e03b565680ef9a 100644 --- a/MAC/MACIO/src/KVT_Protocol.prot +++ b/MAC/MACIO/src/KVT_Protocol.prot @@ -27,8 +27,6 @@ prefix = "KVT"; // for the signal names id = "(LOFAR::MACIO::F_GCF_PROTOCOL + 1)"; // specify extra include files -include = '<MACIO/StringVector.h>'; -include = '<MACIO/DoubleVector.h>'; prelude = << PRELUDE_END @@ -36,7 +34,7 @@ prelude = << PRELUDE_END // REGISTER_ACK (uint obsID, string name); // SEND_MSG (int seqnr, string key, string value, double secsEpoch1970); // SEND_MSG_ACK (int seqnr, uint result); -// SEND_MSG_POOL (int seqnr, uint nrMsgs, strVector key, strVector value, dblVector time); +// SEND_MSG_POOL (int seqnr, uint nrMsgs, vector<string> key, vector<string> value, vector<double> time); // SEND_MSG_POOL_ACK(int seqnr, uint result); using LOFAR::operator<<;