-DMAN_PREFIX=<path> Supply a path where man pages are installed (default: /usr/share/man)
-DPACK_EXTERNALS=1 Include external libraries used to build in the run-time package
-DPRESERVE_PTYPE=1 Do not change the processor type when naming deb packages
- -DSKIP_EXTERNALS=1 Do not use Nano/NNG submodules when building; uee installed packages
+ -DSKIP_EXTERNALS=1 Do not use Nano/NNG submodules when building; use installed packages
+ (See caution in the 'Libraries' section below)
Packages
Continuous Integration Build
Use the Dockerfile in the ci/ subdirectory. This installs all
the required tools, then builds RMR and executes the unit and
-programm tests. If tests pass, then an image is created in the
+program tests. If tests pass, then an image is created in the
local registry with both run-time and development packages.
To support the distribution of package(s) created during the
variables (e.g.. C_INCLUDE_PATH, LD_LIBRARY_PATH, LIBRARY_PATH).
It may also be necessary to have the library directory defined
in the environment at run time. It is difficult to know what
-each system needs, but the following linker ooptions work when
+each system needs, but the following linker options work when
libraries are installed in the system spots:
-lrmr_nng -lnng -lpthread
Libraries
RMR supports only NNG as the underlying transport. Nanomsg
-support was dropped in starting with version 1.0.45 as Nanomsg
+support was dropped starting with version 1.0.45 as Nanomsg
has reached end of life. The package generation and install
will produce a single RMR library: librmr_nng. RMR is designed
to support different underlying transport mechanisms, which
given a suffix of _nng to reflect the transport mechanism
in use.
+NNG version with a commit ID of 906d5ea1b3d67bece941d8a4e0a049e5f6c65051
+is required to build RMR. That version (as yet untagged) adds a
+new error state which we must trap. While application environments
+are encouraged to also build and install at least this version of
+NNG, RMR is still compatable back to the version tagged as 1.1.1.
+If you opt to build with the -DSKIP_EXTERNALS=1 flag set, you must
+ensure that this version of NNG is present in your build environment.
+If you do not set this flag, the proper NNG source will be used
+automatically.
+
Regardless of transport mechanism supported by an RMR library,
-the RMR API will be identical, thus it is possible for an appliction
-to shift mechanisms simply by referencing a differnt library (should
+the RMR API will be identical, thus it is possible for an application
+to shift mechanisms simply by referencing a different library (should
multiple RMR libraries become available).
the postscript pages are left in the build directory for the
developer to convert to PDF, or otherwise use.
-
+Debug Mode
+Because RMR is designed to keep its overhead to an absolute minimum,
+messages written to standard error are by default very limited.
+The route table collection thread provides the means to enable
+debug messages on the fly, but only because that thread does not
+impact the sending and receiving of user messages.
+
+If it becomes necessary, for development or problem soving, to have
+the RMR functions generate debugging messages the following
+CMake flag can be given when the CMake environment is created:
+ -DDEBUG=n
+
+The value for 'n' should be 1 or 2 to enable debugging. The default
+when not given is the same as setting n to zero.
+
+When running in debug mode, RMR will log messages received, sent,
+and other useful information. Because debugging uses fprintf() there
+is a significant amount of overhead with logging this information and
+thus in debugging mode the user should not expect that usual message
+rates can be achieved, and in some cases may cause messages to drop
+if TCP queues become full.