All pastes #123663 Raw Edit

freeone3000

public text v1 · immutable
·published 2006-08-09 13:56 UTC
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
	}
}