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 }