diff options
author | John Langford <jl@hunch.net> | 2013-05-14 01:04:13 +0400 |
---|---|---|
committer | John Langford <jl@hunch.net> | 2013-05-14 01:04:13 +0400 |
commit | 89e3e06f330478884358e58f7bfc57c6d858f18b (patch) | |
tree | 82f2820b4ce4ef2b119e32c7f90990cd07251b94 /vowpalwabbit/sender.cc | |
parent | e9061f19fe9d0d1567b22408ba68b9fe21433cf8 (diff) |
fix blocking send issue
Diffstat (limited to 'vowpalwabbit/sender.cc')
-rw-r--r-- | vowpalwabbit/sender.cc | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/vowpalwabbit/sender.cc b/vowpalwabbit/sender.cc index 996668dc..8b91c33f 100644 --- a/vowpalwabbit/sender.cc +++ b/vowpalwabbit/sender.cc @@ -27,7 +27,7 @@ using namespace std; namespace SENDER { struct sender { io_buf* buf; - + learner base; int sd; }; @@ -81,8 +81,9 @@ namespace SENDER { return_simple_example(*all, ec); } - else if ((ec = VW::get_example(all->p)) != NULL)//semiblocking operation. + else if ((ec = VW::get_example(all->p)) != NULL && !command_example(all,ec))//semiblocking operation. { + label_data* ld = (label_data*)ec->ld; all->set_minmax(all->sd, ld->label); simple_label.cache_label(ld, *s->buf);//send label information. @@ -107,8 +108,14 @@ namespace SENDER { } return; } - void learn(void* d, example*ec) { cout << "sender can't be used under reduction" << endl; } - void finish(void* d) { cout << "sender can't be used under reduction" << endl; } + void learn(void* d, example*ec) { cout << "sender learn can not be used under reduction" << endl; } + void finish(void* d) + { + sender* s = (sender*)d; + delete s->buf; + s->base.finish(); + free(s); + } learner setup(vw& all, po::variables_map& vm, vector<string> pairs) { @@ -120,6 +127,7 @@ namespace SENDER { open_sockets(*s, hosts[0]); } + s->base = all.l; sl_t sl = {NULL, save_load}; learner l(s,drive_send,learn,finish,sl); return l; |