Update API structure

master
Ryan Lee 2016-03-05 17:04:01 +09:00
parent 79e5872eea
commit bdbe38e262
3 changed files with 50 additions and 26 deletions

View File

@ -21,14 +21,18 @@ void connect_peer1()
{
int err = 0;
Throughnet(function_tn(string event_id, tn::EventData& data){
if (event_id == "connected") {
this_->Send("your-guid", "Hello");
}
})
.Connect("my-guid", "{}");
Throughnet tn("my-guid", "{}");
tn.On("connected", function_tn(Throughnet::Data& data){
this_->Send("your-guid", "Hello");
});
tn.On("disconnected", function_tn(Throughnet::Data& data) {
std::cout << data["id"].c_str() << " has been disconnected.";
});
tn.Connect("my-guid", "{}");
CHECK_ERR(err, "nothing");
}

View File

@ -7,17 +7,19 @@
#include "config.h"
#include "throughnet.h"
Throughnet::Throughnet(void(*handler) (Throughnet* this_, std::string, tn::EventData&)) {
handler_ = handler;
return;
Throughnet::Throughnet(std::string id, std::string setting) {
}
Throughnet::~Throughnet() {
return;
}
void Throughnet::Connect(std::string id, std::string setting) {
return;
bool Throughnet::Connect(std::string id, std::string setting) {
return true;
}
void Throughnet::Send(std::string id, std::string data) {
@ -25,3 +27,24 @@ void Throughnet::Send(std::string id, std::string data) {
return;
}
Throughnet& Throughnet::On(std::string name, void(*handler) (Throughnet* this_, Data& data)) {
if (name == "connected") {
events_["connected"] = handler;
}
else if (name == "disconnected") {
events_["disconnected"] = handler;
}
else if (name == "data") {
events_["data"] = handler;
}
else if (name == "error") {
events_["error"] = handler;
}
else {
// Do nothing
}
return *this;
}

View File

@ -12,27 +12,24 @@
#include <functional>
#define function_tn(_x_, _y_) [](Throughnet* this_, _x_, _y_)
class Throughnet;
namespace tn {
typedef std::map<std::string, std::string> EventData;
typedef std::function<void(Throughnet* this_, std::string, EventData&)> EventHandler;
}
#define function_tn(_x_) [](Throughnet* this_, _x_)
class Throughnet {
public:
typedef std::map<std::string, std::string> Data;
typedef std::function<void(Throughnet*, Data&)> EventHandler;
typedef std::map<std::string, EventHandler> Events;
// Throughnet(tn::EventHandler& handler);
Throughnet(void (*handler) (Throughnet* this_, std::string, tn::EventData&));
~Throughnet();
void Connect(std::string id, std::string setting);
Throughnet(std::string id, std::string setting);
bool Connect(std::string id, std::string setting);
void Send(std::string id, std::string data);
Throughnet& On(std::string name, void(*handler) (Throughnet* this_, Data& data));
protected:
tn::EventHandler handler_;
~Throughnet();
Events events_;
};
#endif // __THROUGHNET_THROUGHENT_H__