Exemplo n.º 1
0
static void publishTimerHandler
(
    le_timer_Ref_t timer
)
{
    if (!globals.connected)
    {
        LE_WARN("Not publishing because MQTT is not connected");
        return;
    }

    std::ostringstream jsonStream;
    jsonStream << "{";
    auto it = globals.data.cbegin();
    while (it != globals.data.cend())
    {
        jsonStream << escapeStringForJSON(it->first) << ":" << it->second.encodeAsJSON();
        it++;
        if (it != globals.data.cend())
        {
            jsonStream << ",";
        }
    }
    jsonStream << "}";

    std::string s = jsonStream.str();
    LE_INFO("About to publish: %s", s.c_str());
    mqtt_Publish(
        globals.publishTopic.c_str(),
        reinterpret_cast<const uint8_t*>(s.c_str()),
        s.length());
}
Exemplo n.º 2
0
std::string DataValue::encodeAsJSON(void) const
{
    std::string json;
    switch (this->type)
    {
        case DATAROUTER_BOOLEAN:
            json = (this->value.b) ? "true" : "false";
            break;

        case DATAROUTER_INTEGER:
            json = std::to_string(this->value.i);
            break;

        case DATAROUTER_FLOAT:
            json = std::to_string(this->value.f);
            break;

        case DATAROUTER_STRING:
            json = escapeStringForJSON(this->value.s);
            break;

        default:
            LE_FATAL("Value has unknown type");
            break;
    }
    return json;
}
Exemplo n.º 3
0
void doubleQuoteStringForJSON(const String& str, StringBuilder* dst)
{
    dst->append('"');
    escapeStringForJSON(str, dst);
    dst->append('"');
}