new remote code
[scpubgit/Tak.git] / lib / Tak / JSONChannel.pm
index 6bfb16a..c06054e 100644 (file)
@@ -10,9 +10,9 @@ has write_fh => (is => 'ro', required => 1);
 
 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;
     }
@@ -23,35 +23,35 @@ sub _unpack_line {
   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";