* General refactor, moved BDataIO emulation in a
BAdapterIO derived class, BDataIOAdapter.
* This allowed to simplify the wrapper that is now
considering everything to be seekable or pseudo-seekable.
* This class is provided as a safe multithreaded communication channel
between a BMediaIO-like interface and a Read/Write backend.
* Includes internal buffering and can be used to provide multithreaded
edit of the data.
* Current limitations include missing BOutputAdapter and
correct timeout handling.
* Future plans provide a BRemoteAdapterIO that using ports
and areas allow to easily send big data between processes.
If available, symbols are read from the respectice core file symbols
note. Otherwise, if available read symbols from ELF file. Finally fall
back to the dynamic symbol table from the core file image. Reusable
functionality is implemented in DebuggerInterface (GetElfSymbols()).
- Refactor TeamUiSettingsFactory into an abstract base class with implementing
subclass DebuggerUiSettingsFactory.
- Adjust SettingsManager to expect the UiSettingsFactory to be passed in as an
initialization parameter, and refactor accordingly.
- Move GuiTeamUiSettings.* into a user_interface/gui subfolder.
No functional change, simply reorganization towards splitting the debugger's
core functionality into a separate library from the application to aid in
sharing with remote_debug_server.
TargetHostInterface:
- Adjust _StartTeamDebugger to always require a user interface object to
be passed in rather than implicitly falling back to GUI if unspecified.
Debugger:
- Refactor to be in compliance with the above.
* While originally I think it was a good idea to make it own the source,
then I decided to uniform the code by making the BMediaFile to be the
only responsible of that.
Changes:
* A new GUI that integrates Filer and AutoFiler settings.
* Change to the action names, rule settings have to be created anew.
* Some usability improvements like drag&drop support for AutoFiler folders and a
tooltip for actions in the rule editing window.
* Apply changed settings, rules and monitored folders live.
* Add a button to manually start/stop AutoFiler.
* Add a dropzone and make it replicatable.
* Add an option to stop matching rules after the first match was found (idea and
code by Pete Goodeve).
* Add user documentation.
- Messages that expect a reply are now tagged with a unique ID field to
indicate that expectation to the receiving socket messenger.
- The messenger now maintains a map of received reply IDs and their
corresponding messages, along with a message queue of other unsolicited
replies.
- After successfully connecting, the messenger now spawns a thread
whose sole responsibility is receiving and parsing all incoming messages,
and consequently sorting them into the aforementioned data structures based
on the presence of the reply ID. Callers who are awaiting either replies or
other messages are signalled appropriately via a semaphore. This allows
multiplexing of both types of messages on the same socket.