diff options
Diffstat (limited to 'decoder')
-rw-r--r-- | decoder/Makefile.am | 6 | ||||
-rw-r--r-- | decoder/feed.cc (renamed from decoder/local.cc) | 12 | ||||
-rwxr-xr-x | decoder/feed.rb | 21 | ||||
-rw-r--r-- | decoder/network_decoder.cc | 12 |
4 files changed, 39 insertions, 12 deletions
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); |