mqtttypeconverter.cpp 2.1 KB
/* Copyright (C) 2019
 *
 * This file is part of the osdev components suite
 *
 * This program 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 2, or (at your option) any
 * later version.
 *
 * This program 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 this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA
 */
#include "mqtttypeconverter.h"

// std
#include <chrono>

// boost
#include <boost/lexical_cast.hpp>
#include <boost/uuid/uuid_io.hpp>

// date
#include "date.h"

#include "stringutils.h"

using namespace osdev::components::mqtt;

namespace osdev {
namespace components {
namespace mqtt {
namespace MqttTypeConverter {

std::string toStdString(const MqttId& mqttId)
{
    return boost::lexical_cast<std::string>(mqttId);
}

MqttId toMlogicId(const std::string& mqttId)
{
    return boost::lexical_cast<MqttId>(mqttId);
}

StdTime toStdTime(const time_t& posixTime)
{
    return std::chrono::system_clock::from_time_t(posixTime);
}

time_t toPosixTime(const StdTime& stdTime)
{
    return std::chrono::system_clock::to_time_t(stdTime);
}

OptionalTime toOptionalTime(const std::string& posixTimeString)
{
    static const OptionalTime nonExisting;

    try {
        auto lotPosixTime = boost::lexical_cast<std::time_t>(posixTimeString);
        return toStdTime(lotPosixTime);
    }
    catch (const boost::bad_lexical_cast&) {
        return nonExisting;
    }
}

std::string toShortGuidAppendedString(const std::string& str, const MqttId& mqttId)
{
    std::string idStr = toStdString(mqttId);
    return str + "-" + idStr.substr(0, 4);
}

}   // End namespace MqttTypeConverter
}   // End namespace mqtt
}   // End namespace components
}   // End namespace osdev