BeRTOS
|
00001 00037 #ifndef MWARE_OBSERVER_H 00038 #define MWARE_OBSERVER_H 00039 00040 #include <struct/list.h> 00041 00066 typedef struct Observer 00067 { 00068 Node link; 00069 void (*event)(int event_id, void *param); 00070 } Observer; 00071 00072 typedef struct Subject 00073 { 00075 List observers; 00076 00077 } Subject; 00078 00079 void observer_SetEvent(Observer *observer, void (*event)(int event_id, void *param)); 00080 00081 #define OBSERVER_INITIALIZER(callback) { { NULL, NULL }, callback } 00082 00083 void observer_InitSubject(Subject *subject); 00084 00086 void observer_Subscribe(Subject *subject, Observer *observer); 00087 00089 void observer_Unsubscribe(Subject *subject, Observer *observer); 00090 00093 void observer_notify(Subject *subject, int event_id, void *param); 00094 00095 #endif /* MWARE_OBSERVER_H */