Initial commit
This commit is contained in:
commit
b7d90b9afe
16245 files changed
+3396666
No files matched your search
@@ -0,0 +1,82 @@
|
||||
/**
|
||||
* Send / Receive telegrams to/from TX/RX directory
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
* Created by Christian Ehrlicher, SLSE, 2016-09-26
|
||||
*/
|
||||
|
||||
#include "directory_dispatcher.h"
|
||||
#include "convert_to_json_file.h"
|
||||
#include "directory_cleaner.h"
|
||||
#include <XDR_QtHandler/XDR_DirHandler.h>
|
||||
#include <QDir>
|
||||
|
||||
namespace TetraRadio
|
||||
{
|
||||
//
|
||||
// DirectoryDispatcher
|
||||
//
|
||||
DirectoryDispatcher::DirectoryDispatcher(const std::shared_ptr<TrainingAreaBase::RecvFromTab> &recvFromTabCb,
|
||||
const QString &txDir,
|
||||
const QString &rxDir)
|
||||
: TrainingAreaBase::Plugin::Interface()
|
||||
, ConvertFromJson(recvFromTabCb, "TAB.Plugin.DirectoryDispatcher")
|
||||
, m_xdrDirHandler(new XDR_DirHandler_emit(rxDir, this))
|
||||
, m_txCleaner(new DirectoryCleaner(txDir, 10 * 60, this))
|
||||
, m_txDir(txDir)
|
||||
, m_rxDir(rxDir)
|
||||
{
|
||||
QFileInfo fi(m_txDir);
|
||||
if (!fi.exists() || !fi.isDir())
|
||||
{
|
||||
QDir d;
|
||||
if (!d.mkpath(m_txDir))
|
||||
ERROR_LOG(m_logger) << "Can not create directory " << m_txDir;
|
||||
}
|
||||
fi = QFileInfo(m_rxDir);
|
||||
if (!fi.exists() || !fi.isDir())
|
||||
{
|
||||
QDir d;
|
||||
if (!d.mkpath(m_rxDir))
|
||||
ERROR_LOG(m_logger) << "Can not create directory " << m_rxDir;
|
||||
}
|
||||
|
||||
NOTICE_LOG(m_logger) << "Using RX dir: " << m_rxDir;
|
||||
NOTICE_LOG(m_logger) << "Using TX dir: " << m_txDir;
|
||||
connect(m_xdrDirHandler, &XDR_DirHandler_emit::newTelegram,
|
||||
this, &DirectoryDispatcher::newTelegramArrived);
|
||||
}
|
||||
|
||||
DirectoryDispatcher::~DirectoryDispatcher()
|
||||
{
|
||||
delete m_xdrDirHandler;
|
||||
}
|
||||
|
||||
|
||||
bool DirectoryDispatcher::init()
|
||||
{
|
||||
m_tx = std::make_shared<ConvertToJsonFile>(m_txDir);
|
||||
m_xdrDirHandler->startWatching();
|
||||
return true;
|
||||
}
|
||||
|
||||
std::shared_ptr<TrainingAreaBase::SendToTab> DirectoryDispatcher::sendToTab()
|
||||
{
|
||||
return m_tx;
|
||||
}
|
||||
|
||||
void DirectoryDispatcher::newTelegramArrived(const QString &fullPath)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << "Got new telegram: "
|
||||
<< fullPath;
|
||||
QFile f(fullPath);
|
||||
if (!f.open(QIODevice::ReadOnly))
|
||||
return;
|
||||
const QByteArray tele = f.readAll();
|
||||
f.close();
|
||||
int recvCounterUnused;
|
||||
handleTelegram(tele, recvCounterUnused);
|
||||
}
|
||||
|
||||
} // namespace TetraRadio
|
||||
Reference in new issue
Block a user