#include #include #include #include Evas_Object *_mainwin, *_connbox; Eina_List *_conns = NULL; Eina_List *_nodes = NULL; struct event_base *_ev_base; static Eina_Bool _cb_ecore_libevent(void *data) { if (event_base_got_exit(_ev_base)) return EINA_FALSE; else event_base_loop(_ev_base, EVLOOP_NONBLOCK); return EINA_TRUE; } int _cb_packet(struct gg_client *cli, struct gg_packet *pkt) { struct ggnet_node *n, *nsrc, *ndst; struct ggnet_conn *c; char *fqdn; int i; switch(pkt->type) { case PACKET_NEWCONN: printf(" type PACKET_NEWCONN\n"); printf(" newconn_id %d\n", pkt->newconn_id); printf(" newconn_src %4x\n", pkt->newconn_src); printf(" newconn_dst %4x\n", pkt->newconn_dst); printf(" newconn_proto %d\n", pkt->newconn_proto); printf(" newconn_size %d\n", pkt->newconn_size); //nsrc = node_find_or_create(pkt->newconn_src); //ndst = node_find_or_create(pkt->newconn_dst); //conn_find_or_create(pkt->newconn_id, pkt->newconn_nsrc, pkt->newconn_ndst, pkt->newconn_proto, pkt->newconn_size); break; case PACKET_DELCONN: printf(" type PACKET_DELCONN\n"); printf(" delconn_id %d\n", pkt->delconn_id); //n = node_find(id); //if (n) // node_del(n); break; case PACKET_DATA: printf(" type PACKET_DATA\n"); printf(" data_connid %d\n", pkt->data_connid); printf(" data_size %d\n", pkt->data_size); //c = conn_find(id); // XXX evas_point on conn line break; case PACKET_NAME: printf(" type PACKET_NAME\n"); printf(" name_addr %4x\n", pkt->name_addr); printf(" name_len %d\n", pkt->name_len); printf(" name_name_fqdn %s\n", pkt->name_fqdn); //n = node_find(ip); //if (n) // node_update_name(n, fqdn, len); break; } return 0; } static void _cb_on_done(void *data, Evas_Object *obj, void *event_info) { elm_exit(); } EAPI_MAIN int elm_main(int argc, char **argv) { Evas_Object *box, *lab, *btn, *bg; Ecore_Timer *timer_libevent; struct gg_client *ggcli; int retval = -1; _mainwin = elm_win_util_standard_add("hello", "Hello"); evas_object_smart_callback_add(_mainwin, "delete,request", _cb_on_done, NULL); bg = elm_bg_add(_mainwin); evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); elm_win_resize_object_add(_mainwin, bg); evas_object_show(bg); box = elm_box_add(_mainwin); elm_box_horizontal_set(box, EINA_TRUE); elm_win_resize_object_add(_mainwin, box); evas_object_show(box); lab = elm_label_add(_mainwin); elm_object_text_set(lab, "Welcome to Glouglou Map"); elm_box_pack_end(box, lab); evas_object_show(lab); btn = elm_button_add(_mainwin); elm_object_text_set(btn, "Quit"); elm_box_pack_end(box, btn); evas_object_show(btn); evas_object_smart_callback_add(btn, "clicked", _cb_on_done, NULL); _connbox = elm_box_add(_mainwin); evas_object_show(_connbox); evas_object_show(_mainwin); _ev_base = event_base_new(); ggcli = gg_client_connect(_ev_base, "127.0.0.1", GLOUGLOU_ANALY_DEFAULT_PORT, NULL, _cb_packet, NULL); if (!ggcli) goto quit; timer_libevent = ecore_timer_add(0.1, _cb_ecore_libevent, NULL); elm_run(); retval = 0; quit: elm_shutdown(); return retval; } ELM_MAIN()