Commit afadc703118d27e7cf8831cb610946e9f99c3132

Authored by Josh Klontz
1 parent 1b385524

added web hello world

app/br/br.cpp
... ... @@ -162,6 +162,9 @@ public:
162 162 } else if (!strcmp(fun, "version")) {
163 163 check(parc == 0, "No parameters expected for 'version'.");
164 164 printf("%s\n", br_version());
  165 + } else if (!strcmp(fun, "web")) {
  166 + check(parc == 0, "No parameters expected for 'shell'.");
  167 + br_web();
165 168 } else if (!strcmp(fun, "shell")) {
166 169 check(parc == 0, "No parameters expected for 'shell'.");
167 170 shell = true;
... ...
openbr/core/web.cpp 0 → 100644
  1 +#include <openbr/openbr_plugin.h>
  2 +
  3 +#include "web.h"
  4 +
  5 +#ifndef BR_EMBEDDED
  6 +
  7 +#include <QCoreApplication>
  8 +#include <QTcpServer>
  9 +#include <QTcpSocket>
  10 +
  11 +class WebServices : public QTcpServer
  12 +{
  13 + Q_OBJECT
  14 +
  15 +public:
  16 + WebServices()
  17 + {
  18 + connect(this, SIGNAL(newConnection()), this, SLOT(handleNewConnection()));
  19 + }
  20 +
  21 + void listen()
  22 + {
  23 + QTcpServer::listen(QHostAddress::Any, 8080);
  24 + }
  25 +
  26 +private slots:
  27 + void handleNewConnection()
  28 + {
  29 + while (hasPendingConnections()) {
  30 + QTcpSocket *socket = QTcpServer::nextPendingConnection();
  31 + connect(socket, SIGNAL(disconnected()), socket, SLOT(deleteLater()));
  32 + socket->write("HTTP/1.1 200 OK\r\n"
  33 + "Content-Type: text/html; charset=UTF-8\r\n\r\n"
  34 + "Hello World!\r\n");
  35 + socket->disconnectFromHost();
  36 + }
  37 + }
  38 +};
  39 +
  40 +void br::web()
  41 +{
  42 + static WebServices webServices;
  43 + if (webServices.isListening())
  44 + return;
  45 +
  46 + webServices.listen();
  47 + qDebug("Listening on %s:%d", qPrintable(webServices.serverAddress().toString()), webServices.serverPort());
  48 + while (true)
  49 + QCoreApplication::processEvents();
  50 +}
  51 +
  52 +#include "web.moc"
  53 +
  54 +#else // BR_EMBEDDED
  55 +
  56 +void br::web()
  57 +{
  58 + qFatal("Web services not supported in embedded builds.");
  59 +}
  60 +
  61 +#endif // BR_EMBEDDED
... ...
openbr/core/web.h 0 → 100644
  1 +#ifndef __WEB_H
  2 +#define __WEB_H
  3 +
  4 +namespace br
  5 +{
  6 + // Enter web services
  7 + void web();
  8 +} // namespace br
  9 +
  10 +#endif // __WEB_H
... ...
openbr/openbr.cpp
... ... @@ -22,6 +22,7 @@
22 22 #include "core/fuse.h"
23 23 #include "core/plot.h"
24 24 #include "core/qtutils.h"
  25 +#include "core/web.h"
25 26  
26 27 using namespace br;
27 28  
... ... @@ -241,3 +242,8 @@ const char *br_version()
241 242 static QByteArray version = Context::version().toLocal8Bit();
242 243 return version.data();
243 244 }
  245 +
  246 +void br_web()
  247 +{
  248 + br::web();
  249 +}
... ...
openbr/openbr.h
... ... @@ -364,6 +364,11 @@ BR_EXPORT void br_train_n(int num_inputs, const char *inputs[], const char *mode
364 364 */
365 365 BR_EXPORT const char *br_version();
366 366  
  367 +/*!
  368 + * \brief Launches br web services
  369 + */
  370 +BR_EXPORT void br_web();
  371 +
367 372 /*! @}*/
368 373  
369 374 #ifdef __cplusplus
... ...