Starts the module. This will be called after init and getDependencies
and signals that the module should now begin to perform whatever it was
designed to do. This method call however should not block for long, so
any time consuming tasks should be started in their own threads. You will
typically get references to the required modules again in start using the
findModule method of the manager and then store those references to instance
variables for later use. You may throw a ModuleException if the module
is not in a state where it can be started or it immediately becomes
obvious that it cannot be started with the provided settings.
Stops the module. Should stop all threads used by the module, free
any large data structures and perform other cleanup. It is possible that
the module will be started again later with a start method call (and
foregoing init and getDependencies calls).
The module should be left in a state where this is possible.
Returns all the modules this module depends on. This method will be
called after init and the dependencies are allowed to depend on the
parameters passed to init. The modules that this module depends on
must be returned as a collection. In addition, if any required module is
not present, a MissingDependencyException should be thrown. Typically you
will use the requireModule and optionalModule methods of the manager to
make sure that the modules exist and add them to the collection.
requireModule will automatically throw the exception too if the module is
not found whereas optionalModule does not.