Advertisement
Guest User

Untitled

a guest
Sep 26th, 2012
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.46 KB | None | 0 0
  1. /* gcc -g -o main main.c `pkg-config --cflags --libs eina ecore esskyuehl eio` */
  2. #include <Eina.h>
  3. #include <Ecore.h>
  4. #include <Esskyuehl.h>
  5. #include <Eio.h>
  6.  
  7. struct _Stats
  8. {
  9. struct
  10. {
  11. Eina_Bool connected;
  12. unsigned int pending_queues;
  13. Esql *esql;
  14. } esql;
  15.  
  16. struct
  17. {
  18. unsigned int pending_ls;
  19. } eio;
  20. };
  21.  
  22. void _print(struct _Stats *stats)
  23. {
  24. printf("\rPending ls[%.6d] queues[%.6d]",
  25. stats->eio.pending_ls,
  26. stats->esql.pending_queues);
  27. fflush(stdout);
  28. }
  29.  
  30.  
  31. Eina_Bool _list_cb_filter(void *data, Eio_File *handler, const Eina_File_Direct_Info *file)
  32. {
  33. // usleep(500);
  34. return EINA_TRUE;
  35. }
  36.  
  37. void _list_cb_error(void *data, Eio_File *handler, int error)
  38. {
  39. return;
  40. }
  41.  
  42. void _list_cb_done(void *data, Eio_File *handler)
  43. {
  44. struct _Stats *stats = data;
  45.  
  46. stats->eio.pending_ls--;
  47. return;
  48. }
  49.  
  50. void _list_cb(void *data, Eio_File *handler, const Eina_File_Direct_Info *file)
  51. {
  52. struct _Stats *stats = data;
  53.  
  54. _print(stats);
  55.  
  56. if (file->type==EINA_FILE_REG)
  57. {
  58. stats->esql.pending_queues++;
  59. /* esql_query_args(stats->esql.esql, NULL,
  60. "SELECT nom FROM element "
  61. "WHERE nom = \"%s\";", file->path);
  62. */ }
  63. return;
  64. }
  65.  
  66. Eina_Bool _sql_connect(void *data,
  67. int type,
  68. Esql *e)
  69. {
  70. struct _Stats *stats = data;
  71. unsigned int i;
  72.  
  73. stats->esql.connected = EINA_TRUE;
  74.  
  75. stats->eio.pending_ls++;
  76. eio_dir_stat_ls("/home/kuri",
  77. _list_cb_filter,
  78. _list_cb,
  79. _list_cb_done,
  80. _list_cb_error,
  81. stats);
  82. return ECORE_CALLBACK_RENEW;
  83. }
  84.  
  85. Eina_Bool _sql_disconnect(void *data,
  86. int type,
  87. Esql *e)
  88. {
  89. struct _Stats *stats = data;
  90.  
  91. stats->esql.connected = EINA_FALSE;
  92.  
  93. return ECORE_CALLBACK_RENEW;
  94. }
  95.  
  96. Eina_Bool _sql_error(void *data,
  97. int type,
  98. Esql *e)
  99. {
  100.  
  101. return ECORE_CALLBACK_RENEW;
  102. }
  103.  
  104. Eina_Bool _sql_result(void *data,
  105. int type,
  106. Esql_Res *res)
  107. {
  108. struct _Stats *stats = data;
  109.  
  110. stats->esql.pending_queues--;
  111.  
  112. _print(stats);
  113.  
  114. if ( (!stats->esql.pending_queues) && (!stats->eio.pending_ls) )
  115. {
  116. printf("\n");
  117. ecore_main_loop_quit();
  118. }
  119. return ECORE_CALLBACK_RENEW;
  120. }
  121.  
  122. int main(int argc, char **argv)
  123. {
  124. struct _Stats *data;
  125. eina_init();
  126. eina_log_threads_enable();
  127. ecore_init();
  128. esql_init();
  129.  
  130. data = calloc(1, sizeof(struct _Stats));
  131. data->esql.connected = EINA_FALSE;
  132.  
  133.  
  134. ecore_event_handler_add(ESQL_EVENT_CONNECT, (Ecore_Event_Handler_Cb)_sql_connect, data);
  135. ecore_event_handler_add(ESQL_EVENT_ERROR, (Ecore_Event_Handler_Cb)_sql_error, data);
  136. ecore_event_handler_add(ESQL_EVENT_RESULT, (Ecore_Event_Handler_Cb)_sql_result, data);
  137. ecore_event_handler_add(ESQL_EVENT_DISCONNECT, (Ecore_Event_Handler_Cb)_sql_disconnect, data);
  138.  
  139. data->esql.esql = esql_pool_new(10,ESQL_TYPE_MYSQL);
  140. esql_database_set(data->esql.esql, "test");
  141. esql_connect(data->esql.esql, "192.168.2.202:3306", "root", "test");
  142. esql_reconnect_set(data->esql.esql, EINA_TRUE);
  143.  
  144. ecore_main_loop_begin();
  145.  
  146. esql_free(data->esql.esql);
  147. free(data);
  148. esql_shutdown();
  149. ecore_shutdown();
  150. eina_shutdown();
  151.  
  152. return 0;
  153. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement