Advertisement
Guest User

Untitled

a guest
Feb 26th, 2017
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.13 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <Windows.h>
  5.  
  6. typedef struct {
  7. void (*handler)(char *);
  8. char parameter[128];
  9. int interval, last_emitted;
  10. } Event;
  11.  
  12. Event events[128];
  13. int event_count;
  14.  
  15. void add_event(void (*handler)(char *), char parameter[], int interval) {
  16. events[event_count].handler = handler;
  17. strcpy(events[event_count].parameter, parameter);
  18. events[event_count].interval = interval;
  19. events[event_count].last_emitted = 0;
  20. ++event_count;
  21. }
  22. void run() {
  23. int now = GetTickCount();
  24.  
  25. for (int i = 0; i < event_count; ++i) {
  26. events[i].last_emitted = now;
  27. }
  28.  
  29. while (1) {
  30. now = GetTickCount();
  31.  
  32. for (int i = 0; i < event_count; ++i) {
  33. if (now - events[i].last_emitted >= events[i].interval) {
  34. events[i].handler(events[i].parameter);
  35. events[i].last_emitted = now;
  36. }
  37. }
  38.  
  39. Sleep(10);
  40. }
  41. }
  42.  
  43. void say(char *message) {
  44. printf("Message: %s\n", message);
  45. }
  46.  
  47. int main() {
  48. add_event(say, "Hello", 1000);
  49. add_event(say, "Goodbye", 1500);
  50.  
  51. run();
  52.  
  53. return 0;
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement