We should check the errors on socket operations, and in case of EPIPE,
which happens on socket disconnection, such as when the server gets
restarted, we should try to reconnect and retry the last operation
to avoid losing data.
Recursive make caused various dependency issues, mainly with linked
libraries or objects from other directories. Switch to a single Makefile
to solve this. An addded benefit is that this should speed up the build.
It also opens up the possibility to improve on our directory layout.
1e2ad9c0 contained a mistake which resulted in the following build
error. It seems to be a bad copy-paste when creating #1330 from the
patch in #1291.
```
./org/collectd/java/GenericJMXConfValue.java:535: error: variable tmp is already defined in constructor GenericJMXConfValue(OConfigItem)
String tmp = getConfigString (child);
```
Rationale:
A frequent use case for LISTVAL is to retrieve a list of resources for a certain
host or host group that is not known in advance, such as when the hosts have
different disks installed. Using the existing listval() method,
Collectd::Unixsock retrieves the entire list, parses each entry into a hash and
returns the list, only to have the caller throw away the vast majority of
entries immediately. listval_filter() allows the caller to pass any attribute
that can be passed to getval() and filters the list of resources retrieved from
the socket before parsing it, resulting in a large speedup.
The current implemntation has some code duplication, although listval() could be
implemented as a small wrapper around listval_filter() with just a few percent
speed penalty due to the extra dynamically built regexp.
- Remove some superfluous parenthesis clutter
- Shorten a lot of single-line conditionals using postfix constructions
- Merge variable declarations
- Use $class/$self instead of $pkg/$obj as is customary
- Remove quotes around literal hash keys
This change relicenses all files where the sole owner(s) are Sebastian
Harl and/or Florian Forster to the MIT license. This change happens
according to prior agreement with Sebastian.
Both options may cause problems:
- PREFIX might clash with INSTALL_BASE being set in $PERL_MM_OPT.
- INSTALL_BASE without any further options set will install into non-standard
directories in many cases.
Rather, use PREFIX=${prefix} as default but overwrite that if
--with-perl-bindings=... has been used.
Thanks to faxm0dem for reporting the INSTALL_BASE problems on IRC and
bvarner and nirik for reporting this in GH #177 and #196.
This is a follow-up / fix for 97e8f346a8.
Fixes Github issue #290.
Signed-off-by: Florian Forster <octo@collectd.org>