/[Sack]/trunk/lib/Sack/Client.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Contents of /trunk/lib/Sack/Client.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 192 - (show annotations)
Sun Nov 8 14:12:38 2009 UTC (14 years, 7 months ago) by dpavlin
File size: 958 byte(s)
load shard by shard whole dataset into clients as
they request it

1 #!/usr/bin/perl
2
3 package Sack::Client;
4
5 use warnings;
6 use strict;
7
8 use IO::Socket::INET;
9 use IO::Select;
10 use Storable qw();
11
12 use lib '/srv/Sack/lib';
13 use Data::Dump qw(dump);
14
15 my $port = shift @ARGV;
16
17 my $sock = IO::Socket::INET->new(
18 PeerAddr => '127.0.0.1',
19 PeerPort => $port,
20 Proto => 'tcp',
21 ) || die $!;
22
23 my $sel = IO::Select->new($sock);
24 $sel->add($sock);
25
26 my $data;
27
28 while (1) {
29 for my $sock ($sel->can_read(1)) {
30 my $request = Storable::fd_retrieve($sock);
31 warn "[$port] <<<< ", dump( keys %$request ), $/;
32 my $response = { port => $port };
33 if ( $request->{ping} ) {
34 $response->{ping} = 'pong';
35 } elsif ( $request->{load} ) {
36 $response->{load} = 'shard';
37 } elsif ( defined $request->{shard} ) {
38 push @{ $request->{name} }, $request->{shard};
39 $response->{load} = 'shard';
40 } else {
41 $response->{error}->{unknown} = $request;
42 }
43 Storable::store_fd( $response, $sock );
44 warn "[$port] >>>> ", dump($response), $/;
45 }
46 }

Properties

Name Value
svn:executable *

  ViewVC Help
Powered by ViewVC 1.1.26