summaryrefslogtreecommitdiffstats
path: root/Spline/Socketmap.pm
diff options
context:
space:
mode:
authorAlexander Sulfrian <alex@spline.inf.fu-berlin.de>2016-06-17 21:17:59 +0200
committerAlexander Sulfrian <alex@spline.inf.fu-berlin.de>2016-06-17 21:17:59 +0200
commit96f2d50d9a6b211562535f741d5c20810900b177 (patch)
tree2479bf25dc8ae06b651a7e421ffd7167f3751a51 /Spline/Socketmap.pm
parentc810aa389a5c13aa1f9539d9e2d4404aeaa7e039 (diff)
downloadsrs-96f2d50d9a6b211562535f741d5c20810900b177.tar.gz
srs-96f2d50d9a6b211562535f741d5c20810900b177.tar.bz2
srs-96f2d50d9a6b211562535f741d5c20810900b177.zip
Spline::Netstring: Remove extra module
The netstring methods are now part of Spline::Socketmap
Diffstat (limited to 'Spline/Socketmap.pm')
-rw-r--r--Spline/Socketmap.pm34
1 files changed, 33 insertions, 1 deletions
diff --git a/Spline/Socketmap.pm b/Spline/Socketmap.pm
index df1a6a9..f78ed3f 100644
--- a/Spline/Socketmap.pm
+++ b/Spline/Socketmap.pm
@@ -4,7 +4,6 @@ use strict;
use warnings;
use base qw(Net::Server::PreFork);
-use Spline::Netstring;
use Spline::Srs qw( srs_forward srs_reverse );
use base 'Exporter';
@@ -32,6 +31,39 @@ sub handle_request($) {
}
}
+sub netstring_read_length($) {
+ my $fd = shift;
+ my $length;
+
+ local $/ = ':';
+ $length = <$fd>;
+ die "Cannot read netstring length" unless defined($length);
+ chomp $length;
+
+ return $length;
+}
+
+sub netstring_read($) {
+ my $fd = shift;
+ my ($length, $data);
+
+ $length = netstring_read_length($fd);
+ if (read($fd, $data, $length) == $length) {
+ (getc() eq ',') or die "Closing , missing";
+ }
+ else {
+ die 'Received only ' . length($data) . " of $length bytes";
+ }
+
+ return $data;
+}
+
+sub netstring_write($$) {
+ my ($fd, $data) = @_;
+
+ print $fd length($data).':'.$data.',';
+}
+
sub process_request {
my $self = shift;