Ignore:
Timestamp:
May 4, 2012, 2:19:07 PM (14 years ago)
Author:
Frederik Heber <heber@…>
Branches:
Action_Thermostats, Add_AtomRandomPerturbation, Add_FitFragmentPartialChargesAction, Add_RotateAroundBondAction, Add_SelectAtomByNameAction, Added_ParseSaveFragmentResults, AddingActions_SaveParseParticleParameters, Adding_Graph_to_ChangeBondActions, Adding_MD_integration_tests, Adding_ParticleName_to_Atom, Adding_StructOpt_integration_tests, AtomFragments, Automaking_mpqc_open, AutomationFragmentation_failures, Candidate_v1.5.4, Candidate_v1.6.0, Candidate_v1.6.1, Candidate_v1.7.0, Candidate_v1.7.1, ChangeBugEmailaddress, ChangingTestPorts, ChemicalSpaceEvaluator, CombiningParticlePotentialParsing, Combining_Subpackages, Debian_Package_split, Debian_package_split_molecuildergui_only, Disabling_MemDebug, Docu_Python_wait, EmpiricalPotential_contain_HomologyGraph, EmpiricalPotential_contain_HomologyGraph_documentation, Enable_parallel_make_install, Enhance_userguide, Enhanced_StructuralOptimization, Enhanced_StructuralOptimization_continued, Example_ManyWaysToTranslateAtom, Exclude_Hydrogens_annealWithBondGraph, FitPartialCharges_GlobalError, Fix_BoundInBox_CenterInBox_MoleculeActions, Fix_ChargeSampling_PBC, Fix_ChronosMutex, Fix_FitPartialCharges, Fix_FitPotential_needs_atomicnumbers, Fix_ForceAnnealing, Fix_IndependentFragmentGrids, Fix_ParseParticles, Fix_ParseParticles_split_forward_backward_Actions, Fix_PopActions, Fix_QtFragmentList_sorted_selection, Fix_Restrictedkeyset_FragmentMolecule, Fix_StatusMsg, Fix_StepWorldTime_single_argument, Fix_Verbose_Codepatterns, Fix_fitting_potentials, Fixes, ForceAnnealing_goodresults, ForceAnnealing_oldresults, ForceAnnealing_tocheck, ForceAnnealing_with_BondGraph, ForceAnnealing_with_BondGraph_continued, ForceAnnealing_with_BondGraph_continued_betteresults, ForceAnnealing_with_BondGraph_contraction-expansion, FragmentAction_writes_AtomFragments, FragmentMolecule_checks_bonddegrees, GeometryObjects, Gui_Fixes, Gui_displays_atomic_force_velocity, ImplicitCharges, IndependentFragmentGrids, IndependentFragmentGrids_IndividualZeroInstances, IndependentFragmentGrids_IntegrationTest, IndependentFragmentGrids_Sole_NN_Calculation, JobMarket_RobustOnKillsSegFaults, JobMarket_StableWorkerPool, JobMarket_unresolvable_hostname_fix, MoreRobust_FragmentAutomation, ODR_violation_mpqc_open, PartialCharges_OrthogonalSummation, PdbParser_setsAtomName, PythonUI_with_named_parameters, QtGui_reactivate_TimeChanged_changes, Recreated_GuiChecks, Rewrite_FitPartialCharges, RotateToPrincipalAxisSystem_UndoRedo, SaturateAtoms_findBestMatching, SaturateAtoms_singleDegree, StoppableMakroAction, Subpackage_CodePatterns, Subpackage_JobMarket, Subpackage_LinearAlgebra, Subpackage_levmar, Subpackage_mpqc_open, Subpackage_vmg, Switchable_LogView, ThirdParty_MPQC_rebuilt_buildsystem, TrajectoryDependenant_MaxOrder, TremoloParser_IncreasedPrecision, TremoloParser_MultipleTimesteps, TremoloParser_setsAtomName, Ubuntu_1604_changes, stable
Children:
e70b9d
Parents:
b9c486
git-author:
Frederik Heber <heber@…> (12/09/11 18:18:14)
git-committer:
Frederik Heber <heber@…> (05/04/12 14:19:07)
Message:

Added ResultGetter and capabilities to receive calculated results to FragmentController.

  • Added enum (and file) ControllerChoices that defines the state of FragmentScheduler.
  • depending on what is desired the Scheduler switches between these states and either receives or sends information. Requires new member variable choice because receival is of course asynchronous (see note in previous commit).
  • FragmentController has additional functions connect_get() and handle_connect_get() to receive results.
  • connect_calc() and connect_check() now just the choice whereas the actual sending and receiving is done in handle_... functions.
  • handle_FinishOperation() is the common final callback function for all three of these functions.
  • FragmentScheduler contains an internal list of delivered results.
  • FragmentScheduler only initiates worker socket when jobs are present.
  • FIX: FragmentScheduler does only send results that are done and only once.
  • TESTFIX: Removed third Worker that receives NoJob as socket is powered down before because queue has run empty and we haven't add new jobs.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Fragmentation/Automation/FragmentController.hpp

    rb9c486 r778abb  
    3737  ~FragmentController();
    3838
    39   /// Handle completion of a accept operation.
     39  /// Handle completion of a calculate operation.
    4040  void handle_connect_calc(const boost::system::error_code& e,
    4141      boost::asio::ip::tcp::resolver::iterator endpoint_iterator);
    4242
    43   /// Handle completion of a accept operation.
     43  /// Handle completion of a CheckResults operation.
    4444  void handle_connect_check(const boost::system::error_code& e,
    4545      boost::asio::ip::tcp::resolver::iterator endpoint_iterator);
     46
     47  /// Handle completion of a GetResults operation.
     48  void handle_connect_get(const boost::system::error_code& e,
     49      boost::asio::ip::tcp::resolver::iterator endpoint_iterator);
     50
     51  /// Handle completion of an operation.
     52  void handle_FinishOperation(const boost::system::error_code& e);
    4653
    4754  /// Callback function when bunch of jobs have been sent.
     
    5057  /// Callback function when doneJobs have been received.
    5158  void handle_ReceiveDoneJobs(const boost::system::error_code& e);
     59
     60  /// Callback function when results are about to be received.
     61  void handle_ReceivingResults(const boost::system::error_code& e);
     62
     63  /// Callback function when results have been received.
     64  void handle_ReceivedResults(const boost::system::error_code& e);
    5265
    5366  /// place number of jobs into this controller
     
    6881  }
    6982
     83  /// prepares the receival of the results
     84  void obtainResults();
     85
     86  /// get the results for the current jobs
     87  std::vector<FragmentResult> getResults();
     88
    7089  /// get the number of finished results for the current jobs
    7190  void checkResults();
     
    7897  boost::asio::ip::tcp::resolver::iterator getEndpointIterator();
    7998
    80   /// internal function to connect to server and send jobs for calculating jobs
     99  /// internal function to connect to server and send jobs for calculation
    81100  void connect_calc();
    82101
    83   /// internal function to connect to server and send jobs for checking donejobs
     102  /// internal function to connect to server and check done jobs
    84103  void connect_check();
     104
     105  /// internal function to connect to server and receive calculated results
     106  void connect_get();
    85107
    86108  /// internal function to disconnect from server
     
    103125  enum Exitflag_t Exitflag;
    104126
     127  /// bunch of results
     128  std::vector<FragmentResult> results;
     129
    105130  /// currently calculated results
    106131  size_t doneJobs;
Note: See TracChangeset for help on using the changeset viewer.