#include "ZMQClient.h"

#include <QDebug>

ZMQClient::ZMQClient(QObject* parent)
    : QObject(parent)
    , ctx_(1)
    , socket_(ctx_, zmq::socket_type::push){
   
   
}

ZMQClient::~ZMQClient() {
}

bool ZMQClient::ConnectToServer(const QString& address) {
    std::string host("tcp://");
    host += address.toStdString();
    socket_.connect(host);
    socket_.setsockopt(ZMQ_LINGER, 10);
    //socket_.setsockopt()
    return true;
}

bool ZMQClient::Send(const QString& message) {
    if (!socket_.connected()) {
        qDebug() << __FUNCTION__ << "is not connected " << message;
    }
  /*  QByteArray block;
    QDataStream out(&block, QIODevice::ReadWrite);
    QDataStream out(m_socket);
    out.setVersion(QDataStream::Qt_6_2);
    out << message.toUtf8();*/
   // m_socket->write(message.toUtf8());
    
    std::string ss = message.toStdString(); 
    zmq::message_t msg(ss.data(), ss.size());
    try {
        auto res = socket_.send(msg, zmq::send_flags::none);
        qDebug() << __FUNCTION__ << message << " res:" << res.value();
    }
    catch (zmq::error_t e) {
        const char* w = e.what();
        qDebug() << __FUNCTION__ << w;
    }
    
    return true;
}