-
Notifications
You must be signed in to change notification settings - Fork 23
QuantumGate Extender Modules
QuantumGate Extender Modules are special dynamic link libraries (DLLs) containing one or more extender class definitions which are derived from the QuantumGate::Extender
class. Through such a module, extenders can easily be compiled, packaged and distributed together.
Apart from the extender class definitions, a QuantumGate Extender Module should also contain a special function that will get called by a QuantumGate::Local
instance when the module gets loaded. The signature of that function is as follows:
QuantumGate::Result<Vector<std::shared_ptr<QuantumGate::Extender>>>
MakeQuantumGateExtenders();
The function should return a QuantumGate::Vector
collection of std::shared_ptr
s to instances of QuantumGate::Extender
objects. Once the function gets called, you are responsible for instantiating these extender objects, adding them to the collection and returning that collection. Upon failure a std::error_code
can be returned indicating failure.
The MakeQuantumGateExtenders
function should be exported from the module file, for example, by using a .def
file when linking. If this function isn't exported, the QuantumGate instance will fail to load the extenders from the module.
Once the collection of QuantumGate::Extender
s has been returned to the QuantumGate instance, it will proceed to add them and will immediately start them if the instance is running. Use the QuantumGate::Local::AddExtenderModule
and QuantumGate::Local::RemoveExtenderModule
member functions to add and remove modules from a QuantumGate instance.
The "Examples" subfolder in the QuantumGate project folder contains a minimal example of a QuantumGate Extender Module.