Permalink
Browse files

Add example perl pickle metric sender to contrib

  • Loading branch information...
mleinart committed Apr 6, 2012
1 parent c4b2109 commit 24458be27df23cdf5828dad7e9cb6e4755627bcd
Showing with 33 additions and 0 deletions.
  1. +33 −0 contrib/perl_pickle_client.pl
@@ -0,0 +1,33 @@
+#!/usr/bin/perl
+
+use IO::Socket::INET;
+use Python::Serialise::Pickle qw();
+
+my($carbon_server) = '127.0.0.1';
+my($carbon_port) = 2004;
+
+my($data) = [
+ ["path.mytest", [1332444075,27893687]],
+ ["path.mytest", [1332444076,938.435]],
+ ];
+
+my($message) = pack("N/a*", pickle_dumps($data));
+
+my($sock) = IO::Socket::INET->new (
+ PeerAddr => $carbon_server,
+ PeerPort => $carbon_port,
+ Proto => 'tcp'
+ );
+ die "Unable to connect: $!\n" unless ($sock->connected);
+
+$sock->send($message);
+$sock->shutdown(2);
+
+# Work around P::S::Pickle 0.01's extremely limiting interface.
+sub pickle_dumps {
+ open(my $fh, '>', \my $s) or die $!;
+ my $pickle = bless({ _fh => $fh }, 'Python::Serialise::Pickle');
+ $pickle->dump($_[0]);
+ $pickle->close();
+ return $s;
+}

0 comments on commit 24458be

Please sign in to comment.