htimer_test.c 1.8 KB

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