関数ポインタなめてた
さて、Pagmoのサーバーを書き直しているわけですが
Epollサーバー部分だけをうまく切り分けたいところ。
理想は
Pserver server(port); addEventHandler(server.getRecvEvent()); server.start();
とかAS3チックにいけるととてもニヤニヤなわけですが、いかんせんイベント処理がC++では難しい・・・
以前id:nyaxtさんがBoostのイベント処理ユニットを紹介してくれたのでそれも一応見てみたのですが、可能であれば追加ライブラリとか無しに動くユニットにしたい。
一般的に受信したときに処理が走るようなものを作るときにどのようにするのかさっぱりなさくさんは悩んだ結果関数ポインタを登録して実行させるようにした。
#include <stdio.h> #include "pserver.h" void* test(char *c){ printf("getRecv:%s\n",c); } int main(int argc, char *argv[]){ int port = 1234; Pserver server(port); server.setExecRecv(test); while(1){ pserver.recv(); } return 0; }
浅知恵ではあるがちゃんと動いた。