Created
April 24, 2016 16:39
-
-
Save mkozjak/988a63d5e6fb44cdd0208a93d73abad2 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <QtCore> | |
#include <QTcpServer> | |
#include <QTcpSocket> | |
#include <QHostAddress> | |
#include "../../lib/external/http-parser/http_parser.h" | |
class Srv | |
{ | |
public: | |
Srv() | |
{ | |
// define http-parser callbacks | |
m_parser_settings.on_url = on_url_cb; | |
m_parser_settings.on_header_field = on_header_cb; | |
// initialize http-parser | |
http_parser_init(&m_parser, HTTP_REQUEST); | |
qDebug() << "parser initialized"; | |
QObject::connect(&srv, &QTcpServer::newConnection, [&] | |
{ | |
QTcpSocket *socket = srv.nextPendingConnection(); | |
QObject::connect(socket, &QTcpSocket::readyRead, [=] | |
{ | |
const char *data = socket->readAll().constData(); | |
qDebug() << "reading" << data; | |
qDebug() << "start exec\n"; | |
auto nparsed = http_parser_execute(&m_parser, &m_parser_settings, data, qstrlen(data)); | |
qDebug() << "end exec" << nparsed; | |
}); | |
}); | |
srv.listen(QHostAddress::Any, 1337); | |
}; | |
private: | |
http_parser m_parser; | |
http_parser_settings m_parser_settings; | |
QTcpServer srv; | |
static int on_url_cb(http_parser *parser, const char *buf, size_t len) | |
{ | |
qDebug() << "url test" << QString::fromUtf8(buf, len); | |
return 0; | |
}; | |
static int on_header_cb(http_parser *parser, const char *buf, size_t len) | |
{ | |
qDebug() << "header test" << QString::fromUtf8(buf, len); | |
return 0; | |
}; | |
}; | |
int main(int argc, char *argv[]) | |
{ | |
QCoreApplication a(argc, argv); | |
Srv srv; | |
return a.exec(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment