From 025f896eeb928f66b5b38250bdc08835953098b3 Mon Sep 17 00:00:00 2001 From: strange Date: Wed, 14 Jul 2010 13:42:47 -0600 Subject: [PATCH] A line of communication is now created between the monitor and visualizer. A packet generated in the collector library is properly transferred through the ring buffer to the monitor library, which is then sent via a TCP network socket to the visualizer library, where it can be properly stored and used. Not too shabby. --- modules/CMakeLists.txt | 3 +++ modules/cpuTime/monitor/Monitor.h | 2 +- modules/cpuTime/visualizer/Visualizer.cpp | 23 +++++++++++++++++++++++ modules/cpuTime/visualizer/Visualizer.h | 16 ++++++++++++++++ modules/{moduleInterface => monitorInterface} | 0 modules/visualizerInterface | 1 + visualizer/src/CMakeLists.txt | 4 ++++ visualizer/src/interface/Interface.cpp | 9 +++++++++ visualizer/src/interface/Interface.h | 2 +- visualizer/src/module/Module.cpp | 6 ++++-- visualizer/src/module/ModuleMapper.cpp | 2 +- visualizer/src/session/SessionReader.cpp | 2 ++ visualizer/src/session/TCPWrapper.cpp | 4 +++- 13 files changed, 68 insertions(+), 6 deletions(-) create mode 100644 modules/cpuTime/visualizer/Visualizer.cpp create mode 100644 modules/cpuTime/visualizer/Visualizer.h rename modules/{moduleInterface => monitorInterface} (100%) create mode 120000 modules/visualizerInterface diff --git a/modules/CMakeLists.txt b/modules/CMakeLists.txt index ee8c660..54cd99c 100644 --- a/modules/CMakeLists.txt +++ b/modules/CMakeLists.txt @@ -14,5 +14,8 @@ foreach(module ${aesalonModules}) aux_source_directory(${module}/monitor monitorSources) add_library(${module}Monitor SHARED ${monitorSources}) + + aux_source_directory(${module}/visualizer visualizerSources) + add_library(${module}Visualizer SHARED ${visualizerSources}) endforeach(module) diff --git a/modules/cpuTime/monitor/Monitor.h b/modules/cpuTime/monitor/Monitor.h index f9a215c..a2d9d7b 100644 --- a/modules/cpuTime/monitor/Monitor.h +++ b/modules/cpuTime/monitor/Monitor.h @@ -1,7 +1,7 @@ #ifndef CpuTimeMonitor_H #define CpuTimeMonitor_H -#include "moduleInterface/Interface.h" +#include "monitorInterface/Interface.h" class CpuTimeMonitor : public ModuleInterface { public: diff --git a/modules/cpuTime/visualizer/Visualizer.cpp b/modules/cpuTime/visualizer/Visualizer.cpp new file mode 100644 index 0000000..efeeef2 --- /dev/null +++ b/modules/cpuTime/visualizer/Visualizer.cpp @@ -0,0 +1,23 @@ +#include + +#include "Visualizer.h" + +extern "C" { + +ModuleInterface *AesalonVisualizerCreateInstance() { + return new CpuTimeVisualizer(); +} + +} + +CpuTimeVisualizer::CpuTimeVisualizer() { + +} + +CpuTimeVisualizer::~CpuTimeVisualizer() { + +} + +void CpuTimeVisualizer::processIncoming(DataPacket *packet) { + std::cout << "Received packet!" << std::endl; +} diff --git a/modules/cpuTime/visualizer/Visualizer.h b/modules/cpuTime/visualizer/Visualizer.h new file mode 100644 index 0000000..b241321 --- /dev/null +++ b/modules/cpuTime/visualizer/Visualizer.h @@ -0,0 +1,16 @@ +#ifndef Visualizer_H +#define Visualizer_H + +#include "visualizerInterface/Interface.h" + +class CpuTimeVisualizer : public ModuleInterface { +public: + CpuTimeVisualizer(); + virtual ~CpuTimeVisualizer(); +private: + +public: + virtual void processIncoming(DataPacket *packet); +}; + +#endif diff --git a/modules/moduleInterface b/modules/monitorInterface similarity index 100% rename from modules/moduleInterface rename to modules/monitorInterface diff --git a/modules/visualizerInterface b/modules/visualizerInterface new file mode 120000 index 0000000..f12ed7c --- /dev/null +++ b/modules/visualizerInterface @@ -0,0 +1 @@ +../visualizer/src/interface/ \ No newline at end of file diff --git a/visualizer/src/CMakeLists.txt b/visualizer/src/CMakeLists.txt index a5a2c8f..fe7f0b3 100644 --- a/visualizer/src/CMakeLists.txt +++ b/visualizer/src/CMakeLists.txt @@ -1,5 +1,9 @@ add_definitions(-W -Wall) +if(devBuild) + add_definitions(-g) +endif(devBuild) + add_definitions(-DAesalonVersion="${aesalonVersion}") include_directories(.) diff --git a/visualizer/src/interface/Interface.cpp b/visualizer/src/interface/Interface.cpp index e69de29..f27464f 100644 --- a/visualizer/src/interface/Interface.cpp +++ b/visualizer/src/interface/Interface.cpp @@ -0,0 +1,9 @@ +#include "Interface.h" + +ModuleInterface::ModuleInterface() { + +} + +ModuleInterface::~ModuleInterface() { + +} diff --git a/visualizer/src/interface/Interface.h b/visualizer/src/interface/Interface.h index 5759c08..1734de9 100644 --- a/visualizer/src/interface/Interface.h +++ b/visualizer/src/interface/Interface.h @@ -8,7 +8,7 @@ public: ModuleInterface(); virtual ~ModuleInterface(); public: - virtual void processIncoming(DataPacket *packet); + virtual void processIncoming(DataPacket *packet) = 0; }; #endif diff --git a/visualizer/src/module/Module.cpp b/visualizer/src/module/Module.cpp index 7d6975f..b985a63 100644 --- a/visualizer/src/module/Module.cpp +++ b/visualizer/src/module/Module.cpp @@ -8,9 +8,10 @@ Module::Module(const char *name) : m_name(name), m_moduleHandle(NULL){ QString path = modulePath(QString("lib").append(name).append("Visualizer.so")); if(path.length() == 0) return; - m_moduleHandle = dlopen(path.toAscii().constData(), RTLD_NOW | RTLD_LOCAL); + m_moduleHandle = dlopen(path.toAscii().constData(), RTLD_LAZY | RTLD_LOCAL); if(m_moduleHandle == NULL) { - qWarning("Cannot load module \"%s\".", name); + qWarning("Cannot load module \"%s\". Error: %s", name, dlerror()); + qWarning("Last path is %s.", path.toAscii().constData()); return; } @@ -18,6 +19,7 @@ Module::Module(const char *name) : m_name(name), m_moduleHandle(NULL){ if(instantiationHandle == NULL) { qWarning("Module \"%s\" does not have instantiation function.", name); + return; } ModuleInterface *(*instantiateFunction)(); diff --git a/visualizer/src/module/ModuleMapper.cpp b/visualizer/src/module/ModuleMapper.cpp index 76c6590..240e4df 100644 --- a/visualizer/src/module/ModuleMapper.cpp +++ b/visualizer/src/module/ModuleMapper.cpp @@ -1,7 +1,7 @@ #include "ModuleMapper.h" ModuleMapper::ModuleMapper() { - + m_moduleList.append(NULL); } ModuleMapper::~ModuleMapper() { diff --git a/visualizer/src/session/SessionReader.cpp b/visualizer/src/session/SessionReader.cpp index 6084655..56b944b 100644 --- a/visualizer/src/session/SessionReader.cpp +++ b/visualizer/src/session/SessionReader.cpp @@ -30,5 +30,7 @@ void SessionReader::readData() { memcpy(packet->data, m_unprocessed.data() + sourceSize + sizeSize, packet->dataSize); m_moduleMapper->processPacket(packet); + + m_unprocessed.remove(0, sourceSize + sizeSize + packet->dataSize); } } diff --git a/visualizer/src/session/TCPWrapper.cpp b/visualizer/src/session/TCPWrapper.cpp index bd35b1c..370dc1b 100644 --- a/visualizer/src/session/TCPWrapper.cpp +++ b/visualizer/src/session/TCPWrapper.cpp @@ -1,11 +1,13 @@ #include "TCPWrapper.h" -TCPWrapper::TCPWrapper(const QString &host, quint16 port): SessionIOWrapper() { +TCPWrapper::TCPWrapper(const QString &host, quint16 port) : SessionIOWrapper() { m_tcpSocket = new QTcpSocket(this); m_tcpSocket->connectToHost(host, port); connect(m_tcpSocket, SIGNAL(connected()), this, SIGNAL(connected())); connect(m_tcpSocket, SIGNAL(disconnected()), this, SIGNAL(disconnected())); connect(m_tcpSocket, SIGNAL(error(QAbstractSocket::SocketError)), this, SIGNAL(disconnected())); + + setIODevice(m_tcpSocket); } TCPWrapper::~TCPWrapper() { -- 2.11.4.GIT