Showing
5 changed files
with
84 additions
and
1 deletions
include/interface/observer.h
0 → 100644
| 1 | +#ifndef __OBSERVER_H__ | ||
| 2 | +#define __OBSERVER_H__ | ||
| 3 | + | ||
| 4 | +typedef void (* fptr_observerNotify)(void *, void*); | ||
| 5 | + | ||
| 6 | +extern const struct interface i_Observer; | ||
| 7 | + | ||
| 8 | +struct i_Observer { | ||
| 9 | + const struct interface * const _; | ||
| 10 | + fptr_observerNotify notify; | ||
| 11 | +}; | ||
| 12 | + | ||
| 13 | +extern void observerNotify(void *, void *); | ||
| 14 | + | ||
| 15 | +#endif // __OBSERVER_H__ | ||
| 16 | + | ||
| 17 | +// vim: set ts=4 sw=4: |
include/interface/subject.h
0 → 100644
| 1 | +#ifndef __SUBJECT_H__ | ||
| 2 | +#define __SUBJECT_H__ | ||
| 3 | + | ||
| 4 | +typedef void (* fptr_subjectAttach)(void *, void *); | ||
| 5 | +typedef void (* fptr_subjectDetach)(void *, void *); | ||
| 6 | +typedef void (* fptr_subjectNotify)(void *); | ||
| 7 | + | ||
| 8 | +extern const struct interface i_Subject; | ||
| 9 | + | ||
| 10 | +struct i_Subject { | ||
| 11 | + const struct interface * const _; | ||
| 12 | + fptr_subjectAttach attach; | ||
| 13 | + fptr_subjectDetach detach; | ||
| 14 | + fptr_subjectNotify notify; | ||
| 15 | +}; | ||
| 16 | + | ||
| 17 | +extern void subjectAttach(void *, void *); | ||
| 18 | +extern void subjectDetach(void *, void *); | ||
| 19 | +extern void subjectNotify(void *); | ||
| 20 | + | ||
| 21 | +#endif // __SUBJECT_H__ | ||
| 22 | + | ||
| 23 | +// vim: set ts=4 sw=4: |
| @@ -2,7 +2,8 @@ ACLOCAL_AMFLAGS = -I m4 | @@ -2,7 +2,8 @@ ACLOCAL_AMFLAGS = -I m4 | ||
| 2 | AUTOMAKE_OPTIONS = subdir-objects | 2 | AUTOMAKE_OPTIONS = subdir-objects |
| 3 | 3 | ||
| 4 | IFACE = interface/class.c interface/stream_reader.c interface/logger.c \ | 4 | IFACE = interface/class.c interface/stream_reader.c interface/logger.c \ |
| 5 | - interface/stream_writer.c interface/http_intro.c | 5 | + interface/stream_writer.c interface/http_intro.c \ |
| 6 | + interface/subject.c interface/observer.c | ||
| 6 | CLASS = class.c interface.c | 7 | CLASS = class.c interface.c |
| 7 | SOCKET = socket.c socket/accept.c socket/connect.c socket/listen.c | 8 | SOCKET = socket.c socket/accept.c socket/connect.c socket/listen.c |
| 8 | SERVER = server.c server/run.c server/close_conn.c | 9 | SERVER = server.c server/run.c server/close_conn.c |
src/interface/observer.c
0 → 100644
src/interface/subject.c
0 → 100644
| 1 | +#include "class.h" | ||
| 2 | +#include "interface/subject.h" | ||
| 3 | + | ||
| 4 | +const struct interface i_Subject = { | ||
| 5 | + "subject", | ||
| 6 | + 3 | ||
| 7 | +}; | ||
| 8 | + | ||
| 9 | +void | ||
| 10 | +subjectAttach(void * subject, void * observer) | ||
| 11 | +{ | ||
| 12 | + CALL(subject, Subject, attach, observer); | ||
| 13 | +} | ||
| 14 | + | ||
| 15 | +void | ||
| 16 | +subjectDetach(void * subject, void * observer) | ||
| 17 | +{ | ||
| 18 | + CALL(subject, Subject, detach, observer); | ||
| 19 | +} | ||
| 20 | + | ||
| 21 | +void | ||
| 22 | +subjectNotify(void * subject) | ||
| 23 | +{ | ||
| 24 | + CALL(subject, Subject, notify); | ||
| 25 | +} | ||
| 26 | + | ||
| 27 | +// vim: set ts=4 sw=4: |
Please
register
or
login
to post a comment