#ifndef FIX_HTTPSERVER_H
#define FIX_HTTPSERVER_H
#ifdef _MSC_VER
#pragma warning(disable : 4503 4355 4786 4290)
#endif
#include "Exceptions.h"
#include "Mutex.h"
#include "SessionSettings.h"
#include "SocketServer.h"
namespace FIX {
class HttpServer : public SocketServer::Strategy {
public:
HttpServer(const SessionSettings &) EXCEPT(ConfigError);
static void startGlobal(const SessionSettings &) EXCEPT(ConfigError, RuntimeError);
static void stopGlobal();
void start() EXCEPT(ConfigError, RuntimeError);
void stop();
private:
void onConfigure(const SessionSettings &) EXCEPT(ConfigError);
void onInitialize(const SessionSettings &) EXCEPT(RuntimeError);
void onStart();
bool onPoll();
void onStop();
void onConnect(SocketServer &, socket_handle, socket_handle);
void onWrite(SocketServer &, socket_handle);
bool onData(SocketServer &, socket_handle);
void onDisconnect(SocketServer &, socket_handle);
void onError(SocketServer &);
void onTimeout(SocketServer &);
static THREAD_PROC startThread(void *p);
SocketServer *m_pServer;
SessionSettings m_settings;
thread_id m_threadid;
int m_port;
bool m_stop;
static Mutex s_mutex;
static int s_count;
static HttpServer *s_pServer;
};
}
#endif