Merge branch 'collectd-4.4'
[collectd.git] / bindings / perl / Collectd / Unixsock.pm
index 3b6fa5d..cd910ed 100644 (file)
@@ -71,9 +71,9 @@ sub _create_socket
        return ($sock);
 } # _create_socket
 
        return ($sock);
 } # _create_socket
 
-=head1 VALUE IDENTIFIER
+=head1 VALUE IDENTIFIERS
 
 
-The values in the collectd are identified using an five-tupel (host, plugin,
+The values in the collectd are identified using an five-tuple (host, plugin,
 plugin-instance, type, type-instance) where only plugin-instance and
 type-instance may be NULL (or undefined). Many functions expect an
 I<%identifier> hash that has at least the members B<host>, B<plugin>, and
 plugin-instance, type, type-instance) where only plugin-instance and
 type-instance may be NULL (or undefined). Many functions expect an
 I<%identifier> hash that has at least the members B<host>, B<plugin>, and
@@ -217,10 +217,10 @@ sub getval
 =item I<$obj>-E<gt>B<putval> (I<%identifier>, B<time> =E<gt> I<$time>, B<values> =E<gt> [...]);
 
 Submits a value-list to the daemon. If the B<time> argument is omitted
 =item I<$obj>-E<gt>B<putval> (I<%identifier>, B<time> =E<gt> I<$time>, B<values> =E<gt> [...]);
 
 Submits a value-list to the daemon. If the B<time> argument is omitted
-C<time()> is used. The requierd argument B<values> is a reference to an array
+C<time()> is used. The required argument B<values> is a reference to an array
 of values that is to be submitted. The number of values must match the number
 of values that is to be submitted. The number of values must match the number
-of values expected for the given B<type> (see L<VALUE IDENTIFIER>), though this
-is checked by the daemon, not the Perl module. Also, gauge data-sources
+of values expected for the given B<type> (see L<VALUE IDENTIFIERS>), though
+this is checked by the daemon, not the Perl module. Also, gauge data-sources
 (e.E<nbsp>g. system-load) may be C<undef>. Returns true upon success and false
 otherwise.
 
 (e.E<nbsp>g. system-load) may be C<undef>. Returns true upon success and false
 otherwise.
 
@@ -236,6 +236,12 @@ sub putval
        my $msg;
        my $identifier;
        my $values;
        my $msg;
        my $identifier;
        my $values;
+       my $interval = "";
+
+       if (defined $args{'interval'})
+       {
+               $interval = ' interval=' . $args{'interval'};
+       }
 
        $identifier = _create_identifier (\%args) or return;
        if (!$args{'values'})
 
        $identifier = _create_identifier (\%args) or return;
        if (!$args{'values'})
@@ -254,7 +260,7 @@ sub putval
                $values = join (':', $time, map { defined ($_) ? $_ : 'U' } (@{$args{'values'}}));
        }
 
                $values = join (':', $time, map { defined ($_) ? $_ : 'U' } (@{$args{'values'}}));
        }
 
-       $msg = "PUTVAL $identifier $values\n";
+       $msg = "PUTVAL $identifier$interval $values\n";
        #print "-> $msg";
        send ($fh, $msg, 0) or confess ("send: $!");
        $msg = undef;
        #print "-> $msg";
        send ($fh, $msg, 0) or confess ("send: $!");
        $msg = undef;
@@ -400,7 +406,7 @@ sub putnotif
        return;
 } # putnotif
 
        return;
 } # putnotif
 
-=item I<$obj>-E<gt>B<flush> (B<timeout> =E<gt> I<$timeout>, B<plugins> =E<gt> [...]);
+=item I<$obj>-E<gt>B<flush> (B<timeout> =E<gt> I<$timeout>, B<plugins> =E<gt> [...], B<identifier>  =E<gt> [...]);
 
 Flush cached data.
 
 
 Flush cached data.
 
@@ -415,7 +421,14 @@ flushed.
 
 =item B<plugins>
 
 
 =item B<plugins>
 
-If this option is specified, only the selected plugins will be flushed. 
+If this option is specified, only the selected plugins will be flushed. The
+argument is a reference to an array of strings.
+
+=item B<identifier>
+
+If this option is specified, only the given identifier(s) will be flushed. The
+argument is a reference to an array of identifiers. Identifiers, in this case,
+are hash references and have the members as outlined in L<VALUE IDENTIFIERS>.
 
 =back
 
 
 =back
 
@@ -431,7 +444,7 @@ sub flush
        my $status = 0;
        my $msg    = "FLUSH";
 
        my $status = 0;
        my $msg    = "FLUSH";
 
-       if ($args{'timeout'})
+       if (defined ($args{'timeout'}))
        {
                $msg .= " timeout=" . $args{'timeout'};
        }
        {
                $msg .= " timeout=" . $args{'timeout'};
        }
@@ -444,6 +457,37 @@ sub flush
                }
        }
 
                }
        }
 
+       if ($args{'identifier'})
+       {
+               for (@{$args{'identifier'}})
+               {
+                       my $identifier = $_;
+                       my $ident_str;
+
+                       if (ref ($identifier) ne 'HASH')
+                       {
+                               cluck ("The argument of the `identifier' "
+                                       . "option must be an array reference "
+                                       . "of hash references.");
+                               return;
+                       }
+
+                       $ident_str = _create_identifier ($identifier);
+                       if (!$ident_str)
+                       {
+                               return;
+                       }
+                       if ($ident_str =~ m/ /)
+                       {
+                               $ident_str =~ s#\\#\\\\#g;
+                               $ident_str =~ s#"#\\"#g;
+                               $ident_str = "\"$ident_str\"";
+                       }
+
+                       $msg .= " identifier=$ident_str";
+               }
+       }
+
        $msg .= "\n";
 
        send ($fh, $msg, 0) or confess ("send: $!");
        $msg .= "\n";
 
        send ($fh, $msg, 0) or confess ("send: $!");