rendered paste body#ifndef ELS_LISTENERS_H
#ifndef ELS_NETWORK_H
#define ELS_NETWORK_H
#include <list>
#include <string>
#include "basics.h"
using std::list;
using std::string;
namespace elserver {
class networklistener {
public:
virtual void process_message(unsigned char message_type, string* message);
};
class client {
};
class network {
public:
static network* get_network();
void send_to_all_clients(string* msg);
void add_listener(networklistener listen);
void start_listen(); //Note that this should be executed in a seperate thread.
private:
network();
network(network& two);
~network();
list<networklistener> netlisten;
list<client> clients;
static network *net;
};
}
#endif
#define ELS_LISTENERS_H
#include <string>
#include <map>
#include "network.h"
using namespace std;
typedef void(*netcallback)(string*);
namespace elserver {
class defaultnetlistener : networklistener {
public:
defaultnetlistener();
defaultnetlistener(const defaultnetlistener& n);
void process_message(unsigned char message_type, string *message);
private:
map<unsigned char, netcallback> execute;
};
}
#endif
#include <string>
#include "listeners.h"
#include "client_serv.h"
using namespace std;
void handle_text(string* text) {
}
namespace elserver {
defaultnetlistener::defaultnetlistener() {
this->execute[RAW_TEXT] = &handle_text;
}
defaultnetlistener::defaultnetlistener(defaultnetlistener &n) {
this->execute = n.execute;
}
void defaultnetlistener::process_message(unsigned char message_type, std::string *message) {
this->execute[message_type](message);
}
}
#include "init.h"
#include "listeners.h"
namespace elserver {
void init_networks() {
network *n = network::get_network();
defaultnetlistener nlisten;
n->add_listener(nlisten); //THIS HAS THE ERROR
}
}