AbstractCurrent status.
Protected AbstractbringBring the binding up (open ports, connect, subscribe) — throw on failure.
Start the binding (connect, subscribe).
Stop the binding and release resources.
Protected AbstracttearTear the binding down and release resources.
The
stopped → starting → running/error(and back tostopped) machine every AdapterInstance re-derives, written once:start()flips tostarting, runs bringUp, and lands onrunning— or catches, flips toerror, and rethrows so the manager'sstartEntrysees the failure;stop()runs tearDown and lands onstoppedonly once it resolves (a throwingtearDown— a real device that refuses to let go — propagates instead of a status update, exactly as before this base existed:bringUp/tearDownown their OWN internal try/catch when a caller needsstop()to never throw, same as the concrete instances always did).Four adapters had drifted onto their own copies of this exact machine (a full X-Touch and its Mini sibling, the managed control-surface bridge, the REAC adapter) — one of them (the REAC instance) had quietly lost the
errorstatus on a failedstop(). Subclasses that need MORE than the generic status (the control-surface bridge layers a peer-socket fault and a delegated child adapter status on top) are free to override thestatusgetter;start()/stop()still drive this class's own status field beneath it.