summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore2
-rw-r--r--decoder/Makefile.am6
-rw-r--r--decoder/feed.cc (renamed from decoder/local.cc)12
-rwxr-xr-xdecoder/feed.rb21
-rw-r--r--decoder/network_decoder.cc12
-rwxr-xr-xtraining/dtrain/feed.rb12
6 files changed, 47 insertions, 18 deletions
diff --git a/.gitignore b/.gitignore
index dde591c7..ba07047a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -53,7 +53,7 @@ decoder/t2s_test
decoder/trule_test
decoder/weights_test
decoder/network_decoder
-decoder/local
+decoder/feed
depcomp
dist
dpmert/Makefile
diff --git a/decoder/Makefile.am b/decoder/Makefile.am
index 563ca0b9..dcc518bc 100644
--- a/decoder/Makefile.am
+++ b/decoder/Makefile.am
@@ -1,4 +1,4 @@
-bin_PROGRAMS = cdec minimal_decoder network_decoder local
+bin_PROGRAMS = cdec minimal_decoder network_decoder feed
noinst_PROGRAMS = \
trule_test \
@@ -29,8 +29,8 @@ minimal_decoder_LDADD = libcdec.a ../utils/libutils.a
network_decoder_SOURCES = network_decoder.cc nn.hpp
network_decoder_LDADD = libcdec.a ../klm/search/libksearch.a ../mteval/libmteval.a ../utils/libutils.a ../klm/lm/libklm.a ../klm/util/libklm_util.a ../klm/util/double-conversion/libklm_util_double.a /usr/lib64/libnanomsg.so
-local_SOURCES = local.cc nn.hpp
-local_LDADD = /usr/lib64/libnanomsg.so
+feed_SOURCES = feed.cc nn.hpp
+feed_LDADD = /usr/lib64/libnanomsg.so
AM_CPPFLAGS = -DTEST_DATA=\"$(top_srcdir)/decoder/test_data\" -DBOOST_TEST_DYN_LINK -W -Wno-sign-compare -I$(top_srcdir) -I$(top_srcdir)/mteval -I$(top_srcdir)/utils -I$(top_srcdir)/klm
diff --git a/decoder/local.cc b/decoder/feed.cc
index b03fd17e..477d6599 100644
--- a/decoder/local.cc
+++ b/decoder/feed.cc
@@ -1,4 +1,5 @@
#include <iostream>
+#include <string>
#include <sstream>
#include <stdio.h>
#include <unistd.h>
@@ -13,9 +14,9 @@ void
recv(nn::socket& sock)
{
char *buf = NULL;
- sock.recv(&buf, NN_MSG, 0);
+ size_t sz = sock.recv(&buf, NN_MSG, 0);
if (buf) {
- string translation(buf);
+ string translation(buf, buf+sz);
cout << "received translation '" << translation << "'" << endl;
}
}
@@ -32,8 +33,8 @@ loop(nn::socket& sock)
{
int to = 100;
sock.setsockopt(NN_SOL_SOCKET, NN_RCVTIMEO, &to, sizeof(to));
- while(1) {
- send(sock, "das ist ein test .");
+ for (string line; getline(cin, line);) {
+ send(sock, line);
sleep(1);
recv(sock);
}
@@ -42,7 +43,8 @@ loop(nn::socket& sock)
int main(int argc, char const* argv[])
{
nn::socket sock(AF_SP, NN_PAIR);
- string url = "ipc:///tmp/network_decoder.ipc";
+ //string url = "ipc:///tmp/network_decoder.ipc";
+ string url = "tcp://127.0.0.1:60666";
sock.connect(url.c_str());
loop(sock);
diff --git a/decoder/feed.rb b/decoder/feed.rb
new file mode 100755
index 00000000..c835536c
--- /dev/null
+++ b/decoder/feed.rb
@@ -0,0 +1,21 @@
+#!/usr/bin/env ruby
+
+require 'nanomsg'
+
+port = 60666
+sock = NanoMsg::PairSocket.new
+addr = "tcp://127.0.0.1:#{port}"
+#addr = "ipc:///tmp/network_decoder.ipc"
+sock.connect addr
+
+while true
+ line = STDIN.gets
+ if !line
+ sock.send 'shutdown'
+ break
+ end
+ sock.send line.strip
+ sleep 1
+ puts "got translation: #{sock.recv}\n\n"
+end
+
diff --git a/decoder/network_decoder.cc b/decoder/network_decoder.cc
index aaa1842d..ebbb91b5 100644
--- a/decoder/network_decoder.cc
+++ b/decoder/network_decoder.cc
@@ -28,7 +28,7 @@ struct TheObserver : public DecoderObserver
int send(nn::socket& sock, const string trans)
{
- cout << "sending translation '" << trans << "'" << endl;
+ cout << "sending translation '" << trans << "'" << endl << endl;
sock.send(trans.c_str(), trans.size()+1, 0);
}
@@ -36,10 +36,11 @@ bool
recv(nn::socket& sock, string& source)
{
char *buf = NULL;
- sock.recv(&buf, NN_MSG, 0);
+ size_t sz = sock.recv(&buf, NN_MSG, 0);
if (buf) {
- string s(buf);
+ string s(buf, buf+sz);
source = s;
+ nn::freemsg(buf);
return true;
}
@@ -62,6 +63,8 @@ loop(Decoder& decoder, nn::socket& sock)
cout << "received source '" << source << "'" << endl;
decoder.Decode(source, &o);
send(sock, o.translation);
+ } else {
+ // Oh no!
}
}
}
@@ -75,7 +78,8 @@ main(int argc, char** argv)
SetSilent(true);
nn::socket sock(AF_SP, NN_PAIR);
- string url = "ipc:///tmp/network_decoder.ipc";
+ //string url = "ipc:///tmp/network_decoder.ipc";
+ string url = "tcp://127.0.0.1:60666";
sock.bind(url.c_str());
loop(decoder, sock);
diff --git a/training/dtrain/feed.rb b/training/dtrain/feed.rb
index fe8dd509..5f45edfb 100755
--- a/training/dtrain/feed.rb
+++ b/training/dtrain/feed.rb
@@ -2,12 +2,14 @@
require 'nanomsg'
-port = ARGV[0]
+#port = ARGV[0]
+port = 60666
sock = NanoMsg::PairSocket.new
addr = "tcp://127.0.0.1:#{port}"
-sock.bind addr
+#addr = "ipc:///tmp/network_decoder.ipc"
+sock.connect addr
-puts sock.recv
+#puts sock.recv
while true
line = STDIN.gets
if !line
@@ -16,7 +18,7 @@ while true
end
sock.send line.strip
sleep 1
- sock.recv
- sock.send "a=1 b=2"
+ puts "got translation: #{sock.recv}\n\n"
+ #sock.send "a=1 b=2"
end