The Epeios libraries provide a communication protocol which is used between frontend and backend. Using this communication protocol allows to separate interface (frontend) part of a software from its processing (backend) part, increasing the reliability and the maintainability of the software.
Frontend and backend (as a daemon) can be two separated executables communicating through socket (client/server, remote multi-user architecture), or the backend can be a dynamic library loaded by the frontend (in a mono-user, local architecture). The backend implements objects, each object having their own functions. The frontend must know this objects and their functions, and also the argument types and numbers of those functions, to be able to use them.
The purpose of getbkdapi is to provide all the informations which are needed by the frontend. To achieve this, getbkdapi connects to the backend and retrieves its API description, generating an XML file containing this description. Then, with the help of an XSLT processor and the adequate (provided; see below) XSL file, this XML file is transformed in an C++ header file, which can be used as is by the frontend to access the backend. With this process, a modification of the backend API is automatically propagated to the frontend.
Here the corresponding file, taken from the EMobDa (http://zeusw.org/intl/emobda) software as an example :
The package (download link given below) contains the Windows binary. For Linux (Mac), the package contains a Makefile which generates the executable.
If you have trouble with the Windows executable, take a look at http://zeusw.org/intl/windows_redist.
This tool (and the underlying libraries) are released under the GNU General Public License. This is the default licence, but, under some circumstances, other licences (with less restrictions, like GNU Lesser General Public License) are possible. Please contact me for more details.
You can launch getpkdapi --help to get a short help page.
Once you launch the Epeios-driven backend, launch :
getbkdapi <host:service> [result.xml]
where <host:service> is the address and port where the backend is accessible (ex: localhost:1234), and [result.xml] the name of the file in which the result had to be stored (if missing, the result is written on the standard output).