Each compression method can be used by running the following command:
$ ./app -m COMPRESSION_FUNCTION_NAME -i dataIn -o dataOut
List of available parameters can be obtained by running the following command:
$ ./app -m COMPRESSION_FUNCTION_NAME -p ?
Note: Detailed notes for the compression methods can be found in the following papers:
This part contains the main information necessary to implement new compression method. However, some information may not be stated here, so please refer to the following publications:
Adding implementations of new compression methods to the ExCom library is currently not very straightforward. Suppose we want to add new compression method called XYZ. Here is a list of actions that need to be performed.
lib/method/xyz. Implement the main class CompXYZ, derived from
CompModule, and store the source code in this directory. The directory should also
contain other files related to the implementation, like its license or a Readme file.AUTHORS file.method/xyz/libmetxyz.la to the libexcom_la_LIBADD variable in the template
file lib/Makefile.am.xyz to the SUBDIRS variable in lib/method/Makefile.am.lib/method/xyz/Makefile.am template file. It should be similar to other
lib/method/xyz/Makefile into the AC_CONFIG_FILES in the configure.ac file.Makefile.am files.
EXCOM_MET_XYZ in the excom_method_e enum in excom.h.
Also, at the end of this file, add enumerations of named constants of the method's
parameters.CompXYZ is declared, if the module
has multiple header files) in lib/main.cpp. If this header file is called xyz.hpp, the
inclusion will look like this:#include "method/xyz/xyz.hpp"
else if branch in the implementation of the exc_compModule function
in lib/main.cpp.
#ifdef METHOD_XYZ
else if (method == EXCOM_MET_XYZ) {
comp = new CompXYZ(handle);
}
#endif
AC_ARG_ENABLE([xyz],
[ --disable-xyz turn off XYZ compression method],
[case "${enableval}" in
yes) xyz=true;;
no) xyz=false;;
*) AC_MSG_ERROR([bad value ${enableval} for --disable-xyz]);;
esac],
[xyz=true])
AM_CONDITIONAL([METHOD_XYZ], [test x$xyz = xtrue])
$(REL)/method/xyz/libmetxyz.la