Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/moses-smt/mosesdecoder.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Germann <ugermann@inf.ed.ac.uk>2015-03-21 18:54:52 +0300
committerUlrich Germann <ugermann@inf.ed.ac.uk>2015-03-21 18:56:20 +0300
commit85d2567b57af592a3a902209c7b0f3675576aac7 (patch)
tree041cb33d01270ba5a4723ea38ed13338ce69f971
parentee4e396a4dc64627c284dee5f26114b57e44b564 (diff)
Renamed MosesServer::TranslationTask to MosesServer::TranslationRequest and made that a subtype of Moses::TranslationTask to avoid name confusion.
-rw-r--r--moses/server/TranslationRequest.cpp79
-rw-r--r--moses/server/TranslationRequest.h25
-rw-r--r--moses/server/Translator.cpp11
3 files changed, 75 insertions, 40 deletions
diff --git a/moses/server/TranslationRequest.cpp b/moses/server/TranslationRequest.cpp
index dba283297..1953a711f 100644
--- a/moses/server/TranslationRequest.cpp
+++ b/moses/server/TranslationRequest.cpp
@@ -1,18 +1,45 @@
-#include "TranslationTask.h"
+#include "TranslationRequest.h"
#include <boost/foreach.hpp>
namespace MosesServer
{
- using namespace Moses;
using namespace std;
+ using Moses::Hypothesis;
+ using Moses::StaticData;
+ using Moses::WordsRange;
+ using Moses::ChartHypothesis;
+ using Moses::Phrase;
+ using Moses::Manager;
+ using Moses::SearchGraphNode;
+ using Moses::TrellisPathList;
+ using Moses::TranslationOptionCollection;
+ using Moses::TranslationOptionList;
+ using Moses::TranslationOption;
+ using Moses::TargetPhrase;
+ using Moses::FValue;
+ using Moses::PhraseDictionaryMultiModel;
+ using Moses::FindPhraseDictionary;
+ using Moses::Sentence;
+
+ boost::shared_ptr<TranslationRequest>
+ TranslationRequest::
+ create(xmlrpc_c::paramList const& paramList,
+ boost::condition_variable& cond,
+ boost::mutex& mut)
+ {
+ boost::shared_ptr<TranslationRequest> ret;
+ ret.reset(new TranslationRequest(paramList,cond, mut));
+ ret->m_self = ret;
+ return ret;
+ }
void
- TranslationTask::
+ TranslationRequest::
Run()
{
parse_request(m_paramList.getStruct(0));
- StaticData const& SD = Moses::StaticData::Instance();
+ Moses::StaticData const& SD = Moses::StaticData::Instance();
//Make sure alternative paths are retained, if necessary
if (m_withGraphInfo || m_nbestSize>0)
@@ -37,7 +64,7 @@ namespace MosesServer
/// add phrase alignment information from a Hypothesis
void
- TranslationTask::
+ TranslationRequest::
add_phrase_aln_info(Hypothesis const& h, vector<xmlrpc_c::value>& aInfo) const
{
if (!m_withAlignInfo) return;
@@ -52,7 +79,7 @@ namespace MosesServer
}
void
- TranslationTask::
+ TranslationRequest::
outputChartHypo(ostream& out, const ChartHypothesis* hypo)
{
Phrase outPhrase(20);
@@ -67,13 +94,13 @@ namespace MosesServer
}
bool
- TranslationTask::
+ TranslationRequest::
compareSearchGraphNode(const Moses::SearchGraphNode& a,
const Moses::SearchGraphNode& b)
{ return a.hypo->GetId() < b.hypo->GetId(); }
void
- TranslationTask::
+ TranslationRequest::
insertGraphInfo(Manager& manager, map<string, xmlrpc_c::value>& retData)
{
using xmlrpc_c::value_int;
@@ -110,7 +137,7 @@ namespace MosesServer
}
void
- TranslationTask::
+ TranslationRequest::
output_phrase(ostream& out, Phrase const& phrase) const
{
if (!m_reportAllFactors)
@@ -122,7 +149,7 @@ namespace MosesServer
}
void
- TranslationTask::
+ TranslationRequest::
outputNBest(const Manager& manager, map<string, xmlrpc_c::value>& retData)
{
TrellisPathList nBestList;
@@ -151,7 +178,7 @@ namespace MosesServer
}
void
- TranslationTask::
+ TranslationRequest::
insertTranslationOptions(Moses::Manager& manager,
std::map<std::string, xmlrpc_c::value>& retData)
{
@@ -197,14 +224,14 @@ namespace MosesServer
return (params.find(key) != params.end());
}
- TranslationTask::
- TranslationTask(xmlrpc_c::paramList const& paramList,
+ TranslationRequest::
+ TranslationRequest(xmlrpc_c::paramList const& paramList,
boost::condition_variable& cond, boost::mutex& mut)
: m_cond(cond), m_mutex(mut), m_done(false), m_paramList(paramList)
{ }
void
- TranslationTask::
+ TranslationRequest::
parse_request(std::map<std::string, xmlrpc_c::value> const& params)
{ // parse XMLRPC request
// params_t const params = m_paramList.getStruct(0);
@@ -215,8 +242,8 @@ namespace MosesServer
params_t::const_iterator si = params.find("text");
if (si == params.end())
throw xmlrpc_c::fault("Missing source text", xmlrpc_c::fault::CODE_PARSE);
- m_source = xmlrpc_c::value_string(si->second);
- XVERBOSE(1,"Input: " << m_source << endl);
+ m_source_string = xmlrpc_c::value_string(si->second);
+ XVERBOSE(1,"Input: " << m_source_string << endl);
m_withAlignInfo = check(params, "align");
m_withWordAlignInfo = check(params, "word-align");
@@ -258,11 +285,11 @@ namespace MosesServer
void
- TranslationTask::
+ TranslationRequest::
run_chart_decoder()
{
- Moses::TreeInput tinput(NULL);
- istringstream buf(m_source + "\n");
+ Moses::TreeInput tinput;
+ istringstream buf(m_source_string + "\n");
tinput.Read(buf, StaticData::Instance().GetInputFactorOrder());
Moses::ChartManager manager(tinput);
@@ -272,8 +299,8 @@ namespace MosesServer
ostringstream out;
outputChartHypo(out,hypo);
- m_target = out.str();
- m_retData["text"] = xmlrpc_c::value_string(m_target);
+ m_target_string = out.str();
+ m_retData["text"] = xmlrpc_c::value_string(m_target_string);
if (m_withGraphInfo)
{
@@ -281,10 +308,10 @@ namespace MosesServer
manager.OutputSearchGraphMoses(sgstream);
m_retData["sg"] = xmlrpc_c::value_string(sgstream.str());
}
- } // end of TranslationTask::run_chart_decoder()
+ } // end of TranslationRequest::run_chart_decoder()
void
- TranslationTask::
+ TranslationRequest::
pack_hypothesis(vector<Hypothesis const* > const& edges, string const& key,
map<string, xmlrpc_c::value> & dest) const
{
@@ -313,7 +340,7 @@ namespace MosesServer
}
void
- TranslationTask::
+ TranslationRequest::
pack_hypothesis(Hypothesis const* h, string const& key,
map<string, xmlrpc_c::value>& dest) const
{
@@ -326,10 +353,10 @@ namespace MosesServer
void
- TranslationTask::
+ TranslationRequest::
run_phrase_decoder()
{
- Manager manager(Sentence(NULL,0, m_source));
+ Manager manager(Sentence(0, m_source_string));
// if (m_bias.size()) manager.SetBias(&m_bias);
manager.Decode();
diff --git a/moses/server/TranslationRequest.h b/moses/server/TranslationRequest.h
index 4fedd75b8..89b3c5097 100644
--- a/moses/server/TranslationRequest.h
+++ b/moses/server/TranslationRequest.h
@@ -5,9 +5,6 @@
#include <map>
#include <vector>
-#include <xmlrpc-c/base.hpp>
-
-
#ifdef WITH_THREADS
#include <boost/thread.hpp>
#endif
@@ -20,11 +17,14 @@
#include "moses/ThreadPool.h"
#include "moses/TranslationModel/PhraseDictionaryMultiModel.h"
#include "moses/TreeInput.h"
+#include "moses/TranslationTask.h"
+#include <boost/shared_ptr.hpp>
+#include <xmlrpc-c/base.hpp>
namespace MosesServer
{
class
- TranslationTask : public virtual Moses::Task
+ TranslationRequest : public virtual Moses::TranslationTask
{
boost::condition_variable& m_cond;
boost::mutex& m_mutex;
@@ -34,7 +34,7 @@ namespace MosesServer
std::map<std::string, xmlrpc_c::value> m_retData;
std::map<uint32_t,float> m_bias; // for biased sampling
- std::string m_source, m_target;
+ std::string m_source_string, m_target_string;
bool m_withAlignInfo;
bool m_withWordAlignInfo;
bool m_withGraphInfo;
@@ -90,12 +90,19 @@ namespace MosesServer
void
insertTranslationOptions(Moses::Manager& manager,
std::map<std::string, xmlrpc_c::value>& retData);
-
- public:
-
- TranslationTask(xmlrpc_c::paramList const& paramList,
+ protected:
+ TranslationRequest(xmlrpc_c::paramList const& paramList,
boost::condition_variable& cond,
boost::mutex& mut);
+
+ public:
+
+ static
+ boost::shared_ptr<TranslationRequest>
+ create(xmlrpc_c::paramList const& paramList,
+ boost::condition_variable& cond,
+ boost::mutex& mut);
+
virtual bool
DeleteAfterExecution() { return false; }
diff --git a/moses/server/Translator.cpp b/moses/server/Translator.cpp
index 557020b02..51f863c4b 100644
--- a/moses/server/Translator.cpp
+++ b/moses/server/Translator.cpp
@@ -1,5 +1,5 @@
#include "Translator.h"
-#include "TranslationTask.h"
+#include "TranslationRequest.h"
namespace MosesServer
{
@@ -25,12 +25,13 @@ namespace MosesServer
{
boost::condition_variable cond;
boost::mutex mut;
- TranslationTask task(paramList,cond,mut);
- m_threadPool.Submit(&task);
+ boost::shared_ptr<TranslationRequest> task
+ = TranslationRequest::create(paramList,cond,mut);
+ m_threadPool.Submit(task);
boost::unique_lock<boost::mutex> lock(mut);
- while (!task.IsDone())
+ while (!task->IsDone())
cond.wait(lock);
- *retvalP = xmlrpc_c::value_struct(task.GetRetData());
+ *retvalP = xmlrpc_c::value_struct(task->GetRetData());
}
}