source: src/JobMarket/Listener.hpp@ 404d2b

Action_Thermostats Add_AtomRandomPerturbation Add_RotateAroundBondAction Add_SelectAtomByNameAction Adding_Graph_to_ChangeBondActions Adding_MD_integration_tests Adding_StructOpt_integration_tests Automaking_mpqc_open AutomationFragmentation_failures Candidate_v1.6.0 Candidate_v1.6.1 ChangeBugEmailaddress ChangingTestPorts ChemicalSpaceEvaluator Combining_Subpackages Debian_Package_split Debian_package_split_molecuildergui_only Disabling_MemDebug Docu_Python_wait EmpiricalPotential_contain_HomologyGraph_documentation Enable_parallel_make_install Enhance_userguide Enhanced_StructuralOptimization Enhanced_StructuralOptimization_continued Example_ManyWaysToTranslateAtom Exclude_Hydrogens_annealWithBondGraph FitPartialCharges_GlobalError Fix_ChronosMutex Fix_StatusMsg Fix_StepWorldTime_single_argument Fix_Verbose_Codepatterns ForceAnnealing_goodresults ForceAnnealing_oldresults ForceAnnealing_tocheck ForceAnnealing_with_BondGraph ForceAnnealing_with_BondGraph_continued ForceAnnealing_with_BondGraph_continued_betteresults ForceAnnealing_with_BondGraph_contraction-expansion GeometryObjects Gui_displays_atomic_force_velocity IndependentFragmentGrids_IntegrationTest JobMarket_RobustOnKillsSegFaults JobMarket_StableWorkerPool JobMarket_unresolvable_hostname_fix ODR_violation_mpqc_open PartialCharges_OrthogonalSummation PythonUI_with_named_parameters QtGui_reactivate_TimeChanged_changes Recreated_GuiChecks RotateToPrincipalAxisSystem_UndoRedo StoppableMakroAction Subpackage_JobMarket Subpackage_levmar Subpackage_mpqc_open Subpackage_vmg ThirdParty_MPQC_rebuilt_buildsystem TremoloParser_IncreasedPrecision TremoloParser_MultipleTimesteps Ubuntu_1604_changes stable
Last change on this file since 404d2b was 404d2b, checked in by Frederik Heber <heber@…>, 8 years ago

Squashed 'ThirdParty/JobMarket/' content from commit e194722

git-subtree-dir: ThirdParty/JobMarket
git-subtree-split: e19472277e62c493f6c10f1483fe21e64c1039e9

  • Property mode set to 100644
File size: 1.5 KB
Line 
1/*
2 * Listener.hpp
3 *
4 * Created on: 22.02.2012
5 * Author: heber
6 */
7
8#ifndef LISTENER_HPP_
9#define LISTENER_HPP_
10
11// include config.h
12#ifdef HAVE_CONFIG_H
13#include <config.h>
14#endif
15
16#include <boost/asio.hpp>
17
18#include "JobMarket/Connection.hpp"
19#include "JobMarket/ExitflagContainer.hpp"
20
21/** Class Listener implements a class listening on a given port for incoming
22 * connections.
23 *
24 * In order to use, inherit it and implement the virtual function handle_Accept().
25 * \code
26 * class foo : public Listener {
27 * ...
28 * void handle_Accept(const boost::system::error_code& e, connection_ptr conn)
29 * {
30 * if (!e) {
31 * conn->async_write(job,
32 * boost::bind(&<functionpointer>,
33 * boost::asio::placeholders::error, conn));
34 * }
35 * ...
36 * }
37 * };
38 * \endcode
39 * where async_write or async_read expect some bound function taking again
40 * the error and the connection as arguments (i.e. a cascade of handlers).
41 *
42 */
43class Listener : public ExitflagContainer
44{
45public:
46 Listener(boost::asio::io_service& io_service, unsigned short port);
47 virtual ~Listener();
48
49 void initiateSocket();
50 void closeSocket();
51
52protected:
53 /// Handle completion for initially acceptig connection
54 virtual void handle_Accept(const boost::system::error_code& e, connection_ptr conn)=0;
55
56private:
57 /// The acceptor object used to accept incoming worker socket connections.
58 boost::asio::ip::tcp::acceptor acceptor_;
59
60 //!> Connection object
61 connection_ptr connection;
62};
63
64#endif /* LISTENER_HPP_ */
Note: See TracBrowser for help on using the repository browser.