htimer_test.c 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #include "hloop.h"
  2. #include "hbase.h"
  3. void on_timer(htimer_t* timer) {
  4. printf("time=%llus on_timer\n", LLU(hloop_now(hevent_loop(timer))));
  5. }
  6. // test htimer_add
  7. void on_timer_add(htimer_t* timer) {
  8. printf("time=%llus on_timer_add\n", LLU(hloop_now(hevent_loop(timer))));
  9. htimer_add(hevent_loop(timer), on_timer_add, 1000, 1);
  10. }
  11. // test htimer_del
  12. void on_timer_del(htimer_t* timer) {
  13. printf("time=%llus on_timer_del\n", LLU(hloop_now(hevent_loop(timer))));
  14. htimer_del(timer);
  15. }
  16. // test htimer_reset
  17. void on_timer_reset(htimer_t* timer) {
  18. printf("time=%llus on_timer_reset\n", LLU(hloop_now(hevent_loop(timer))));
  19. htimer_reset((htimer_t*)hevent_userdata(timer), 0);
  20. }
  21. // test hloop_stop
  22. void on_timer_quit(htimer_t* timer) {
  23. printf("time=%llus on_timer_quit\n", LLU(hloop_now(hevent_loop(timer))));
  24. hloop_stop(hevent_loop(timer));
  25. }
  26. // test cron
  27. void cron_hourly(htimer_t* timer) {
  28. time_t tt = time(NULL);
  29. printf("time=%llus cron_hourly: %s\n", LLU(hloop_now(hevent_loop(timer))), ctime(&tt));
  30. }
  31. int main() {
  32. HV_MEMCHECK;
  33. hloop_t* loop = hloop_new(0);
  34. htimer_add(loop, on_timer_add, 1000, 1);
  35. htimer_add(loop, on_timer_del, 1000, 10);
  36. htimer_t* reseted = htimer_add(loop, on_timer, 5000, 1);
  37. htimer_t* reset = htimer_add(loop, on_timer_reset, 1000, 5);
  38. hevent_set_userdata(reset, reseted);
  39. // cron_hourly next triggered in one minute
  40. int minute = time(NULL)%3600/60;
  41. htimer_add_period(loop, cron_hourly, minute+1, -1, -1, -1, -1, INFINITE);
  42. // quit application after 1 min
  43. htimer_add(loop, on_timer_quit, 60000, 1);
  44. printf("time=%llus begin\n", LLU(hloop_now(loop)));
  45. hloop_run(loop);
  46. printf("time=%llus stop\n", LLU(hloop_now(loop)));
  47. hloop_free(&loop);
  48. return 0;
  49. }