Loading...
Searching...
No Matches
cborstreamreaderinterface.cpp
Go to the documentation of this file.
/**
* \file pappsomspp/processing/cbor/cborstreamreaderinterface.h
* \date 11/02/2025
* \author Olivier Langella
* \brief common interface to read CBOR streams with convenient framework
*/
/*******************************************************************************
* Copyright (c) 2025 Olivier Langella <Olivier.Langella@universite-paris-saclay.fr>.
*
* This file is part of PAPPSOms-tools.
*
* PAPPSOms-tools is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* PAPPSOms-tools is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PAPPSOms-tools. If not, see <http://www.gnu.org/licenses/>.
*
******************************************************************************/
#include "cborstreamreaderinterface.h"
pappso::cbor::CborStreamReaderInterface::CborStreamReaderInterface()
{
}
pappso::cbor::CborStreamReaderInterface::~CborStreamReaderInterface()
{
// qWarning() << "~CborStreamReaderInterface";
if(mpa_cborReader != nullptr)
delete mpa_cborReader;
mpa_cborReader = nullptr;
}
void
pappso::cbor::CborStreamReaderInterface::close()
{
// qWarning() << "close PsmFileReaderBase";
if(mpa_cborReader != nullptr)
delete mpa_cborReader;
mpa_cborReader = nullptr;
// qWarning() << "close PsmFileReaderBase";
}
bool
pappso::cbor::CborStreamReaderInterface::getExpectedString()
{
bool is_ok = false;
m_expectedString = "";
qDebug() << mpa_cborReader->type();
if(mpa_cborReader->type() == QCborStreamReader::String)
{
is_ok = mpa_cborReader->decodeString(m_expectedString);
}
return is_ok;
}
void
pappso::cbor::CborStreamReaderInterface::initCborReader(QIODevice *pcborfile)
{
if(mpa_cborReader != nullptr)
delete mpa_cborReader;
mpa_cborReader = nullptr;
mpa_cborReader = new CborStreamReader();
// just use the QIODevice
mpa_cborReader->setDevice(pcborfile);
}
void
pappso::cbor::CborStreamReaderInterface::initCborReader(QFile *pcborfile)
{
if(mpa_cborReader != nullptr)
delete mpa_cborReader;
mpa_cborReader = nullptr;
mpa_cborReader = new CborStreamReader();
// try to mmap the file, this is faster
char *ptr =
reinterpret_cast<char *>(pcborfile->map(0, pcborfile->size(), QFile::MapPrivateOption));
if(ptr)
{
// worked
m_data = QByteArray::fromRawData(ptr, pcborfile->size());
mpa_cborReader->addData(m_data);
}
else if(pcborfile->isSequential())
{
// details requires full contents, so allocate memory
m_data = pcborfile->readAll();
mpa_cborReader->addData(m_data);
}
else
{
// just use the QIODevice
mpa_cborReader->setDevice(pcborfile);
}
}
cborstreamreaderinterface.h
pappso::cbor::CborStreamReaderInterface::close
virtual void close()
convenient function to clean pointer before leaving
Definition cborstreamreaderinterface.cpp:44
pappso::cbor::CborStreamReaderInterface::CborStreamReaderInterface
CborStreamReaderInterface()
Definition cborstreamreaderinterface.cpp:30
pappso::cbor::CborStreamReaderInterface::m_expectedString
QString m_expectedString
Definition cborstreamreaderinterface.h:69
pappso::cbor::CborStreamReaderInterface::initCborReader
void initCborReader(QFile *pcborfile)
Definition cborstreamreaderinterface.cpp:80
pappso::cbor::CborStreamReaderInterface::~CborStreamReaderInterface
virtual ~CborStreamReaderInterface()
Definition cborstreamreaderinterface.cpp:34
pappso::cbor::CborStreamReaderInterface::getExpectedString
bool getExpectedString()
Definition cborstreamreaderinterface.cpp:54
pappso::cbor::CborStreamReaderInterface::mpa_cborReader
CborStreamReader * mpa_cborReader
Definition cborstreamreaderinterface.h:68
pappso::cbor::CborStreamReaderInterface::m_data
QByteArray m_data
Definition cborstreamreaderinterface.h:70
pappso::cbor::CborStreamReader
simple override of the raw QCborStreamReader This adds convenient functions to put CBOR data into C++...
Definition cborstreamreader.h:46