On Sunday, 20 February 2022 at 16:55:44 UTC, Chris Piker wrote:
But I would like to return to your idea in a couple months so
that I can try a fiber based implementation instead.
I thougt about implementing my engine using fibers but...
it seemed to me they are not very convinient because
coroutines yield returns to the caller, but I want
to return to a single event loop (after processing an event).
Usually I design more or less complex (network) programs using
event-driven paradigm (reactor pattern) plus state machines.
In other words programs designed this way are, so to say,
hierarchical team of state machines, interacting with
each other as well as with outer world (signals,
timers, events from sockets etc)
It sounds like you might have a rigorous way of defining and
keeping track of your state machines. I could probably learn
quite a bit from reading your source code, or the source for
similarly implemented programs. Are there examples you would
recommend?
Yes, here is my engine with example (echo client/server pair):
- [In C (for
Linux)](http://zed.karelia.ru/mmedia/bin/edsm-g2-rev-h.tar.gz)
- [In D (for Linux &
FreeBSD)](http://zed.karelia.ru/0/e/edsm-2022-02-20.tar.gz)
edsm = 'event driven state machines'
As to the program you are writing - I wrote a couple of dozens of
programs
more or less similar to what you are going to do (data
acqusition) using the engine above (C) for production systems and
they all serve very well.