Internal References - Fragile Skeleton | Pub/Sub - No Internal References |
The current design has internal references to peers. It is very fragile, there are lots of opportunity for null pointer exceptions. Possibly even worse, InMoov must know "too much" about other services. Originally, you were restricted to use only Arduinos because internal references were hardcoded as Arduinos.
If we use the publish/subscribe framework without internal references, then there will be no brittle types and no broken references. With loose message bindings, services can be brought up during runtime a single service at a time or removed without adversely affecting the rest of the system. This is also great for customization where new services can be created to interface with the same publishing points. And now with the new "broadcast" function we can send synchronous messages more quickly and without overruns. Still another advantage is our pub/sub framework can also work over remote connections.
It might be more clear to have a set of events from InMoov that were clearly documented. This could be pretty easily started by simply finding all the methods which start with "publish..."