Base client implementation. Every plugin format implementation hold a Client member.
Plugin interface, from the client point of view. This client has no knowledge of thread-safety, it must be handled externally. User plugins derivate from this class. Plugin formats wrappers owns one dplug.plugin.Client as a member.
Should be called in Client class during compile time to parse a PluginInfo from a supplied json file.
This is the interface used by the GUI, to reduce coupling and avoid exposing the whole of Client to it. It should eventually allows to supersede/hide IHostCommand.
A plugin client can send commands to the host. This interface is injected after the client creation though.