OxOOL Module Development HOWTO
This manual will simply explain the file structures in a standard OxOOL module repository and how to develop an OxOOL module.
Default OxOOL Module File Structure
When you use oxool-module-maker
to generate a template module repository, by default it will use the module template defined in the package oxool-dev
. The important file and folder description in the template is described below:
-
ModuleConfiguration.md
: Description of module configuration. -
module.xml.in
: Module XML file template, it will be used to generate module XML file when executingconfigure
. If you need to change some configurations after generating a module, you should follow the instructions inModuleConfiguration.md
to edit this file and re-runautogen.sh
andconfigure
. -
module.spec.in
: It is used to generate RPM spec file. -
debian/*
: It is used to generate DEB file. -
admin/*
: If this module has a backend administration page you should put it in this folder. The name shown in the admin page is defined in the<adminItem>
tag inmodule.xml.in
, or assign--adminItem
when runningoxool-module-maker
. See README.md in the generated git repository for reference. -
src/*
: Module C++ source files. It will be compiled generated .so file for OxOOL to load. -
html/*
: Module HTML frontend files. The default page isindex.html
. -
test.sh
: When developing and testing a module, this file is used to pass the module XML file to OxOOL to load. See "OxOOL Module Compiling Manual" for detail.
C++ Class Methods in an OxOOL module
In the module repo generated by oxool-module-maker
, by default there is a Module.cpp
under src/
folder. In this Module.cpp
there is the base class of this module, named by the module name. Besides constructors and destructors, there are some methods as well:
-
getVersion()
: Get version number. -
initialize()
: Initialize. -
handleRequest()
: Handle requests from client (frontend). You should implement here to handle the requests from the frontend web client. -
handleAdminRequest()
: Handle requests from admin pages. You should implement here to handle the requests from admin pages. -
handleAdminMessage()
: Handle websocket messages from backend admin pages.
No Comments