/*******************************************************************************
* NetworkHttp.h NetworkHttp class
* T.Barnaby, BEAM Ltd, 2006-08-01
*******************************************************************************
*/
#ifndef NetworkHttp_H
#define NetworkHttp_H 1
#include <stdint.h>
#include <BError.h>
#include <BSocket.h>
#include <BThread.h>
#include <BHtmlPage.h>
#include <TmsC.h>
using namespace Tms;
class Control;
class NetworkHttp;
class HttpConnection : public BSocket, private BThread {
public:
enum { BufSize = 8192 };
HttpConnection(Control& control, int fd, BSocketAddressINET from);
~HttpConnection();
void start();
private:
void* function();
BError initTms();
BError process();
BError processFile(BString url);
BError processInternal(BString url);
BError createPage(BHtmlPage& page);
BError recvLine(BString& line);
BError sendString(BString line);
BError sendHttpError(int num, BString str);
BError sendHeader(int num, BString contentType = "text/plain");
BString encodeString(BString str);
BString decodeString(BString str, int option);
BError plotData(BString dataFileName, int channel, BString name, BString outFileName);
BString htmlStrip(BString str);
Control& ocontrol;
BString ohtmlDir;
BSocketAddressINET ofrom;
FILE* ofile;
TmsControl otmsControl;
TmsProcess otmsProcess;
};
class NetworkHttpThread : public BThread {
public:
NetworkHttpThread(NetworkHttp& netOutput);
void* function();
private:
NetworkHttp& onetOutput;
};
class NetworkHttp : public BSocket {
public:
NetworkHttp(Control& control);
~NetworkHttp();
// Main control functions
BError init();
BError start();
BError stop();
// Statistics Functions
// Thread execution
BError run();
private:
Control& ocontrol;
NetworkHttpThread orunThread;
BList<HttpConnection*> oconnections;
};
#endif