///Thrush/VoiceRopeDesign.tioga
Nuthatch:
Types, voice-file generic functions, incl. initialization, time utilities
NuthatchDB:
Some transaction stuff + generic functions interfacing to DB code. Unnecessary probably.
NuthatchLog
Logging Utility procedures. Coalesce?
NuthatchUpdater
Access to the log reader and executor. Spurious.
RecordingLock
Truly useless counter based locking frob.
Unclean
Deal with dirty parts of rollback hack.
Walnuthatch
Initialization + one Walnut-invoked action, containing Walnut-specific data type. Walnut achieves other actions through Nuthatch. So does WalnutSend.
Analysis:
Zap RecordingLock, NuthatchUpdater, Possibly NuthatchLog, NuthatchDB. Unclean, Walnuthatch are interfaces that remain the workstation's business. Nuthatch and Myna become the VoiceRope interface. The voice rope initialization code gets back some handles required to deal with the log and all that.
Functions:
Myna functions
Initialization
Make a rope by recording
Play a rope
Move the description code from ThParty to here.
THESE SHOULD REALLY GO THROUGH THPARTY usw, since they require a voice path. And local vn. must be largely supported on WS side, since REFs and all that. Consider entirely thrush-based rope implementation, where the entity is the handle? Local version might also be complex, but needn't. Or something. Might work. Stepwise path? Damn!
Nuthatch functions
Permanent name management and storage. Take guidance from the Nuthatch interface. Find ways to replace a rope by some other one, deal properly with all the reference counting nonsense, and the like. But not the first time around. With luck, can avoid changing the Thrush/Finch versions for this one, by stubbing out the ThParty function until next version change.