29 #include <arcs/arcssensorlogger.h>
30 #include <arcs/arcsfactory.h>
35 void ARCSSensorLoggerBase::setFilename(QString s)
37 if (logFile.is_open())
40 logFile.open(qPrintable(s));
44 bool ARCSSensorLoggerBase::canLog()
46 if (!logFile.is_open())
47 logFile.open(
"arcs_runtime.log");
49 return logFile.is_open();
78 QString signature = objectName +
"." + actualSignal +
"." + sigName ;
81 if (map.contains(signature))
102 if (objectName.isEmpty())
103 return ARCSSensorLoggerBase::metaObject()->indexOfSlot(qPrintable(sltName));
106 QString signature = objectName +
"." + actualSignal +
"." + sigName ;
107 LogDetails ld(signature, objectName, actualSignal.section(
"(",0,0));
109 QStringList paramTypes = sigName.section(
"(",1,1).section(
")", 0,0).split(
",");
110 if (!paramTypes.at(0).isEmpty())
111 for (
int i=0; i < paramTypes.count(); i++)
112 ld.addType(paramTypes.at(i), QMetaType::type(qPrintable(paramTypes.at(i))));
114 map.insert(signature,idx);
115 invertMap.insert(idx,ld);
118 return idx-1 + metaObject()->methodCount();
129 QMutexLocker lock(&mutex);
130 id = ARCSSensorLoggerBase::qt_metacall(call,
id, arguments);
131 if (
id == -1 || call != QMetaObject::InvokeMetaMethod)
137 std::cerr <<
"Log file not opened" << std::endl;
143 if (!invertMap.contains(
id))
145 std::cerr <<
"Map does not contain id " <<
id << std::endl;
149 LogDetails ld = invertMap[id];
151 QTime time = QTime::currentTime() ;
153 logFile << qPrintable(time.toString()) <<
"."
154 << qPrintable(QString::number(time.msec()).rightJustified(3,
'0')) <<
" "
155 << qPrintable(ld.getObject()) <<
"." << qPrintable(ld.getSignal()) <<
"(" << std::endl;
159 logFile <<
")" << std::endl ;
164 for (
int i =0; i < ld.count(); i++)
168 ld.getArgument(i, nt, it);
170 logFile <<
"\t\t" << qPrintable(nt) <<
": " ;
171 if (it != QMetaType::Void)
173 QVariant v(it, arguments[i+1]);
175 logFile <<
"\"" << qPrintable(s) <<
"\"" << std::endl;
178 logFile << qPrintable(QString::number((
long)arguments[i+1],16)) << std::endl;
180 logFile <<
"\t)" << std::endl;
193 ARCSSensorLogger::LogDetails::LogDetails(
const LogDetails& ld)
196 signature = ld.signature;
198 typeNames = ld.typeNames;
199 typeIds = ld.typeIds;
202 ARCSSensorLogger::LogDetails::LogDetails(QString sn, QString obj, QString s)
virtual QStringList getSignalList()
static ARCSFactory * getInstance()
Returns the instance of the singleton ARCSFactory.
virtual int prepareSlotConnect(QString sigName, QString sltName, QString objectName=QString::null, QString actualSignal=QString::null, bool simulate=false)
Prepares a connection with a slot which is belonging to this object.
virtual int qt_metacall(QMetaObject::Call call, int id, void **arguments)
Method performing the actual callback task.
Base class for ARCSSensorLogger.
QString dataSerialize(QVariant var)
Serializes data from their QVariant counterpart.
virtual int prepareSignalConnect(QString sigName, QString sltName, QString objectName=QString::null, QString actualSlot=QString::null, bool simulate=false)
Prepares a connection with a slot which does not belong to this object.
virtual QStringList getSlotList()
virtual int cleanSignalConnect(QString sigName, QString sltName, QString objectName, QString actualSlot)
virtual int cleanSlotConnect(QString sigName, QString sltName, QString objectName, QString actualSignal)