/src/test/primary_source_test.c

http://ftk.googlecode.com/ · C · 46 lines · 41 code · 5 blank · 0 comment · 1 complexity · 0bb4b7ec2dd270e6251b2f3440b1b044 MD5 · raw file

  1. #include "ftk.h"
  2. #include "ftk_source_primary.h"
  3. Ret my_action(void* user_data)
  4. {
  5. printf("%s:%p\n", __func__, user_data);
  6. return RET_REMOVE;
  7. }
  8. Ret on_event(void* user_data, FtkEvent* event)
  9. {
  10. printf("event->type=%d\n", event->type);
  11. return RET_OK;
  12. }
  13. int main(int argc, char* argv[])
  14. {
  15. int fd = 0;
  16. int ret = 0;
  17. fd_set fdset;
  18. struct timeval tv = {0};
  19. ftk_set_allocator(ftk_allocator_default_create());
  20. FtkSource* thiz = ftk_source_primary_create(on_event, NULL);
  21. fd = ftk_source_get_fd(thiz);
  22. assert(fd >= 0);
  23. FD_ZERO(&fdset);
  24. FD_SET(fd, &fdset);
  25. tv.tv_sec = 1000;
  26. tv.tv_usec =0;
  27. FtkEvent event = {.type = 1};
  28. ftk_source_queue_event(thiz, &event);
  29. event.type = 2;
  30. ftk_source_queue_event(thiz, &event);
  31. event.type = 3;
  32. ftk_source_queue_event(thiz, &event);
  33. event.type = 4;
  34. ftk_source_queue_event(thiz, &event);
  35. while((ret = select(fd+1, &fdset, NULL, NULL, &tv)) > 0)
  36. {
  37. ftk_source_dispatch(thiz);
  38. }
  39. ftk_source_unref(thiz);
  40. return 0;
  41. }