Architecture overview: /----------[PluginImpl]----{shared_ptr or temporary}----\ [g_background_tasks] | | | | V | | | [UI/Settings] | | {shared_ptr} | | | {shared_ptr} V V | [Operations:OpConnect,OpXfer etc]----\ | | | | | | V | | [IHost:HostRemote,HostLocal] <---{dedicated thread, shared_ptr}---/ [UI/Activities: Confirmations, Errors, Progress] / \ {IPC to broker process} | | V V [Local filesystem] [HostRemoteBroker] | {aggregation} | V [IProtocol:ProtocolSFTP,ProtocolFile] To add additional protocol: + Write IProtocol implementation and function that instantiates it: see Protocol/ProtocolSFTP.cpp as example + Write protocol-specific options configuration UI: see UI/Settings/ConfigureProtocolSFTP.cpp as example + Define protocol name, broker name and other protocol properties in s_protocols array in Protocol/Protocol.cpp * Dont forget to add new protocol broker related-files into NetRocks/CMakeLists.txt * Keep in mind that protocol implementation hosted in separate process, so it cannot interchange any data via global variables etc