Changeset b15c4f


Ignore:
Timestamp:
Jul 2, 2012, 8:31:59 AM (13 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, 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:
668b55
Parents:
befcf8
git-author:
Frederik Heber <heber@…> (05/03/12 14:18:24)
git-committer:
Frederik Heber <heber@…> (07/02/12 08:31:59)
Message:

Added new RemoveAllWorkerOperation and removeall command to FragmentController.

  • FragmentScheduler::ControllerListener_t has second bound function to removeAllWorker() from FragmentScheduler instance.
  • this is preparatory to split shutdown into first removeal and then closing of sockets.
Location:
src/Fragmentation/Automation
Files:
2 added
9 edited

Legend:

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

    rbefcf8 rb15c4f  
    2121  CheckState,
    2222  ReceiveResults,
     23  RemoveAll,
    2324  ShutdownControllerSocket
    2425};
  • src/Fragmentation/Automation/FragmentController.cpp

    rbefcf8 rb15c4f  
    3232#include "Operations/Controllers/GetNextJobIdOperation.hpp"
    3333#include "Operations/Controllers/ReceiveResultsOperation.hpp"
     34#include "Operations/Controllers/RemoveAllWorkerOperation.hpp"
    3435#include "Operations/Controllers/SendJobsOperation.hpp"
    3536#include "Operations/Controllers/ShutdownOperation.hpp"
     
    5455  Commands.registerInstance(new GetNextJobIdOperation(connection_));
    5556  Commands.registerInstance(new ReceiveResultsOperation(connection_));
     57  Commands.registerInstance(new RemoveAllWorkerOperation(connection_));
    5658  Commands.registerInstance(new SendJobsOperation(connection_));
    5759  Commands.registerInstance(new ShutdownOperation(connection_));
     
    171173}
    172174
     175/** Requests removal of all idle workers from server.
     176 *
     177 * @param host address of server
     178 * @param service port/service of server
     179 */
     180void FragmentController::removeall(
     181    const std::string &host,
     182    const std::string &service)
     183{
     184  RemoveAllWorkerOperation *removeall = static_cast<RemoveAllWorkerOperation *>(
     185      Commands.getByName("removeallworker"));
     186  (*removeall)(host, service);
     187}
     188
    173189/** Obtains results from done jobs from server.
    174190 *
  • src/Fragmentation/Automation/FragmentController.hpp

    rbefcf8 rb15c4f  
    4949  void checkResults(const std::string &host, const std::string &service);
    5050  void printDoneJobs();
     51  void removeall(const std::string &host, const std::string &service);
    5152  void receiveResults(const std::string &host, const std::string &service);
    5253  std::vector<FragmentResult::ptr> getReceivedResults();
  • src/Fragmentation/Automation/FragmentScheduler.cpp

    rbefcf8 rb15c4f  
    6868        boost::bind(&FragmentScheduler::sendJobToWorker, boost::ref(*this), _1, _2)),
    6969    ControllerListener(_io_service, controllerport, JobsQueue,
     70        boost::bind(&FragmentScheduler::removeAllWorkers, boost::ref(*this)),
    7071        boost::bind(&FragmentScheduler::shutdown, boost::ref(*this))),
    7172    connection(_io_service)
     
    374375      break;
    375376    }
     377    case RemoveAll:
     378    {
     379      removeallWorkers();
     380      break;
     381    }
    376382    case ReceiveResults:
    377383    {
     
    563569 *
    564570 * \todo one should idle here until all workers have returned from
    565  * calculating stuff (or workers need to still listen while the are
     571 * calculating stuff (or workers need to still listen while they are
    566572 * calculating which is probably better).
    567573 *
  • src/Fragmentation/Automation/FragmentScheduler.hpp

    rbefcf8 rb15c4f  
    126126        unsigned short port,
    127127        FragmentQueue &_JobsQueue,
     128        boost::function<void ()> _removeallWorkers,
    128129        boost::function<void ()> _shutdownAllSockets) :
    129130      Listener(io_service, port),
     
    131132      jobInfo((size_t)2, 0),
    132133      choice(NoControllerOperation),
     134      removeallWorkers(_removeallWorkers),
    133135      shutdownAllSockets(_shutdownAllSockets),
    134136      globalId(0)
     
    173175    //!> choice
    174176    enum ControllerChoices choice;
     177
     178    //!> bound function to remove all workers
     179    boost::function<void ()> removeallWorkers;
    175180
    176181    //!> bound function to shutdown all sockets
  • src/Fragmentation/Automation/Makefile.am

    rbefcf8 rb15c4f  
    4949  Operations/Controllers/GetNextJobIdOperation.cpp \
    5050  Operations/Controllers/ReceiveResultsOperation.cpp \
     51  Operations/Controllers/RemoveAllWorkerOperation.cpp \
    5152  Operations/Controllers/SendJobsOperation.cpp \
    5253  Operations/Controllers/ShutdownOperation.cpp \
     
    6768  Operations/Controllers/GetNextJobIdOperation.hpp \
    6869  Operations/Controllers/ReceiveResultsOperation.hpp \
     70  Operations/Controllers/RemoveAllWorkerOperation.hpp \
    6971  Operations/Controllers/SendJobsOperation.hpp \
    7072  Operations/Controllers/ShutdownOperation.hpp \
  • src/Fragmentation/Automation/Pool/PoolWorker.cpp

    rbefcf8 rb15c4f  
    159159  LOG(1, "INFO: Shutting down due to signal "+toString(sig)+".");
    160160
    161   // remove us from pool
    162   removeme();
    163 
    164161  shutdown();
    165162}
     
    171168void PoolWorker::shutdown()
    172169{
     170  // remove us from pool
     171  removeme();
     172
    173173  // somehow stop listener
    174174  PoolListener.closeSocket();
  • src/Fragmentation/Automation/Pool/PoolWorker.hpp

    rbefcf8 rb15c4f  
    107107  RemoveFromPoolOperation removeOp;
    108108
    109   //!> internally bound function such that host and service don't have to be stored, submits result
     109  //!> internally bound function such that host and service don't have to be stored, removes us from server
    110110  boost::function<void ()> removeme;
    111111};
  • src/Fragmentation/Automation/controller.cpp

    rbefcf8 rb15c4f  
    5656  ReceiveResultsIndex = 4,
    5757  ReceiveMPQCIndex = 5,
    58   ShutdownIndex = 6,
     58  RemoveAllIndex = 6,
     59  ShutdownIndex = 7,
    5960};
    6061
     
    321322  CommandsMap.insert( std::make_pair("receiveresults", ReceiveResultsIndex) );
    322323  CommandsMap.insert( std::make_pair("receivempqc", ReceiveMPQCIndex) );
     324  CommandsMap.insert( std::make_pair("removeall", RemoveAllIndex) );
    323325  CommandsMap.insert( std::make_pair("shutdown", ShutdownIndex) );
    324326  try
     
    367369        break;
    368370      case ReceiveMPQCIndex:
     371        break;
     372      case RemoveAllIndex:
    369373        break;
    370374      case ShutdownIndex:
     
    432436        break;
    433437      }
     438      case RemoveAllIndex:
     439      {
     440        controller.removeall(argv[1], argv[2]);
     441        break;
     442      }
    434443      case ShutdownIndex:
    435444      {
     
    481490        break;
    482491      }
     492      case RemoveAllIndex:
     493        break;
    483494      case ShutdownIndex:
    484495        break;
Note: See TracChangeset for help on using the changeset viewer.