sub BUILD { shift->write_fh->autoflush(1); }
-sub receive {
+sub read_message {
my ($self) = @_;
- while (my $line = readline($self->read_fh)) {
+ if (defined(my $line = readline($self->read_fh))) {
if (my $unpacked = $self->_unpack_line($line)) {
return $unpacked;
}
my ($self, $line) = @_;
my $data = eval { decode_json($line) };
unless ($data) {
- $self->send(MISTAKE => invalid_json => $@||'No data and no exception');
+ $self->write_message(mistake => invalid_json => $@||'No data and no exception');
return;
}
unless (ref($data) eq 'ARRAY') {
- $self->send(MISTAKE => message_format => "Not an ARRAY");
+ $self->write_message(mistake => message_format => "Not an ARRAY");
return;
}
unless (@$data > 0) {
- $self->send(MISTAKE => message_format => "Empty request array");
+ $self->write_message(mistake => message_format => "Empty request array");
return;
}
$data;
}
-sub send {
+sub write_message {
my ($self, @msg) = @_;
my $json = eval { encode_json(\@msg) };
unless ($json) {
- $self->_raw_send(
+ $self->_raw_write_message(
encode_json(
- [ FAILURE => invalid_message => $@||'No data and no exception' ]
+ [ failure => invalid_message => $@||'No data and no exception' ]
)
);
return;
}
- $self->_raw_send($json);
+ $self->_raw_write_message($json);
}
-sub _raw_send {
+sub _raw_write_message {
my ($self, $raw) = @_;
#warn "Sending: ${raw}\n";
print { $self->write_fh } $raw."\n";