sic/src/Routerin.H

66 lines
1.8 KiB
C++
Raw Normal View History

2014-01-17 23:47:14 +01:00
#pragma once
2014-01-25 23:32:02 +01:00
#include <memory>
2014-01-17 23:47:14 +01:00
#include <mongoose.h>
#include "StaticFileHandler.H"
#include "DynamicObjects.H"
class DynamicObjects;
2014-01-17 23:47:14 +01:00
class Routerin
{
2014-01-23 02:22:06 +01:00
public:
2014-01-18 14:48:52 +01:00
//Routerin(StaticFileHandler &sfh);
2014-01-17 23:47:14 +01:00
2014-01-23 02:22:06 +01:00
~Routerin();
// const ???
static Routerin * get_instance()
{
2014-01-25 23:32:02 +01:00
static Routerin * me = nullptr;
if (!me)
2014-01-23 02:22:06 +01:00
return me = new Routerin();
return me;
}
static int event_route(struct mg_event *event)
{
// Foohash fh;
Routerin *rouri = Routerin::get_instance();
switch (event->type) {
case MG_REQUEST_BEGIN:
return rouri->event_request_route(event);
case MG_THREAD_BEGIN:
return rouri->event_newthread_route(event);
case MG_REQUEST_END:
return rouri->event_requend_route(event);
case MG_HTTP_ERROR:
case MG_EVENT_LOG:
case MG_THREAD_END:
default:
return rouri->event_fallback_route(event);
}
}
2014-05-01 22:22:04 +02:00
std::string const & get_baseurl()const{return _baseurl;}
void set_baseurl(std::string baseurl);
2014-01-17 23:47:14 +01:00
private:
2014-01-23 02:22:06 +01:00
explicit Routerin();
std::unique_ptr<StaticFileHandler> sfh;
DynamicObjects * _dyn_obs;
std::string _baseurl;
bool hasInstance = false;
2014-01-17 23:47:14 +01:00
int event_request_route ( struct mg_event *event);
int event_newthread_route ( struct mg_event *event);
int event_fallback_route ( struct mg_event *event);
int event_requend_route ( struct mg_event *event);
int rq_static(char const * const restrstr , struct mg_event *event);
int rq_file(char const * const reststr , struct mg_event *event);
int rq_date(char const * const reststr , struct mg_event *event);
int rq_upload(char const * const reststr , struct mg_event *event);
int rq_render_mainpage(struct mg_event *event);
2014-01-17 23:47:14 +01:00
};