00001 #include "Manager.h"
00002 #include "SearchCubePruning.h"
00003 #include "SearchNormal.h"
00004 #include "InputType.h"
00005 #include "util/exception.hh"
00006
00007 namespace Moses
00008 {
00009
00010 Search::Search(Manager& manager)
00011 : m_manager(manager)
00012 , m_source(manager.GetSource())
00013 , m_options(*manager.options())
00014 , m_inputPath()
00015 , m_initialTransOpt()
00016 , m_bitmaps(manager.GetSource().GetSize(), manager.GetSource().m_sourceCompleted)
00017 , interrupted_flag(0)
00018 {
00019 m_initialTransOpt.SetInputPath(m_inputPath);
00020 m_timer.start();
00021 }
00022
00023 bool
00024 Search::
00025 out_of_time()
00026 {
00027 int const& timelimit = m_options.search.timeout;
00028 if (timelimit > 0) {
00029 double elapsed_time = GetUserTime();
00030 if (elapsed_time > timelimit) {
00031 VERBOSE(1,"Decoding is out of time (" << elapsed_time << ","
00032 << timelimit << ")" << std::endl);
00033 interrupted_flag = 1;
00034 return true;
00035 }
00036 }
00037 int const& segment_timelimit = m_options.search.segment_timeout;
00038 if (segment_timelimit > 0) {
00039 double elapsed_time = m_timer.get_elapsed_time();
00040 if (elapsed_time > segment_timelimit) {
00041 VERBOSE(1,"Decoding for segment is out of time (" << elapsed_time << ","
00042 << segment_timelimit << ")" << std::endl);
00043 interrupted_flag = 1;
00044 return true;
00045 }
00046 }
00047 return false;
00048 }
00049
00050 }