- Timestamp:
- May 4, 2012, 2:14:11 PM (13 years ago)
- 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:
- 8b6572
- Parents:
- 72eaf7f
- git-author:
- Frederik Heber <heber@…> (11/18/11 20:29:36)
- git-committer:
- Frederik Heber <heber@…> (05/04/12 14:14:11)
- Location:
- src/Fragmentation/Automation
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Fragmentation/Automation/StockServer.cpp
r72eaf7f red2c5b 17 17 #include "StockServer.hpp" 18 18 19 namespace s11n_example { 19 using namespace s11n_example; 20 20 21 StockServer::StockServer(boost::asio::io_service& io_service, unsigned short port) : 22 acceptor_(io_service, 23 boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(), port) 24 ) 21 StockServer::StockServer(boost::asio::io_service& io_service, unsigned short port) : 22 acceptor_(io_service, 23 boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(), port) 24 ) 25 { 26 // Create the data to be sent to each client. 27 stock s; 28 s.code = "ABC"; 29 s.name = "A Big Company"; 30 s.open_price = 4.56; 31 s.high_price = 5.12; 32 s.low_price = 4.33; 33 s.last_price = 4.98; 34 s.buy_price = 4.96; 35 s.buy_quantity = 1000; 36 s.sell_price = 4.99; 37 s.sell_quantity = 2000; 38 stocks_.push_back(s); 39 s.code = "DEF"; 40 s.name = "Developer Entertainment Firm"; 41 s.open_price = 20.24; 42 s.high_price = 22.88; 43 s.low_price = 19.50; 44 s.last_price = 19.76; 45 s.buy_price = 19.72; 46 s.buy_quantity = 34000; 47 s.sell_price = 19.85; 48 s.sell_quantity = 45000; 49 stocks_.push_back(s); 50 51 // Start an accept operation for a new connection. 52 connection_ptr new_conn(new connection(acceptor_.get_io_service())); 53 acceptor_.async_accept(new_conn->socket(), 54 boost::bind(&StockServer::handle_accept, this, 55 boost::asio::placeholders::error, new_conn)); 56 } 57 58 void StockServer::handle_accept(const boost::system::error_code& e, connection_ptr conn) 59 { 60 std::cout << "handle_accept called." << std::endl; 61 if (!e) 25 62 { 26 // Create the data to be sent to each client. 27 stock s; 28 s.code = "ABC"; 29 s.name = "A Big Company"; 30 s.open_price = 4.56; 31 s.high_price = 5.12; 32 s.low_price = 4.33; 33 s.last_price = 4.98; 34 s.buy_price = 4.96; 35 s.buy_quantity = 1000; 36 s.sell_price = 4.99; 37 s.sell_quantity = 2000; 38 stocks_.push_back(s); 39 s.code = "DEF"; 40 s.name = "Developer Entertainment Firm"; 41 s.open_price = 20.24; 42 s.high_price = 22.88; 43 s.low_price = 19.50; 44 s.last_price = 19.76; 45 s.buy_price = 19.72; 46 s.buy_quantity = 34000; 47 s.sell_price = 19.85; 48 s.sell_quantity = 45000; 49 stocks_.push_back(s); 63 // Successfully accepted a new connection. Send the list of stocks to the 64 // client. The connection::async_write() function will automatically 65 // serialize the data structure for us. 66 conn->async_write(stocks_, 67 boost::bind(&StockServer::handle_write, this, 68 boost::asio::placeholders::error, conn)); 69 } 50 70 51 // Start an accept operation for a new connection. 52 connection_ptr new_conn(new connection(acceptor_.get_io_service())); 53 acceptor_.async_accept(new_conn->socket(), 54 boost::bind(&StockServer::handle_accept, this, 55 boost::asio::placeholders::error, new_conn)); 56 } 71 connection_ptr new_conn(new connection(acceptor_.get_io_service())); 72 acceptor_.async_accept(new_conn->socket(), 73 boost::bind(&StockServer::handle_accept, this, 74 boost::asio::placeholders::error, new_conn)); 75 } 57 76 58 void StockServer::handle_accept(const boost::system::error_code& e, connection_ptr conn) 59 { 60 std::cout << "handle_accept called." << std::endl; 61 if (!e) 62 { 63 // Successfully accepted a new connection. Send the list of stocks to the 64 // client. The connection::async_write() function will automatically 65 // serialize the data structure for us. 66 conn->async_write(stocks_, 67 boost::bind(&StockServer::handle_write, this, 68 boost::asio::placeholders::error, conn)); 69 } 70 71 connection_ptr new_conn(new connection(acceptor_.get_io_service())); 72 acceptor_.async_accept(new_conn->socket(), 73 boost::bind(&StockServer::handle_accept, this, 74 boost::asio::placeholders::error, new_conn)); 75 } 76 77 void StockServer::handle_write(const boost::system::error_code& e, connection_ptr conn) 78 { 79 // Nothing to do. The socket will be closed automatically when the last 80 // reference to the connection object goes away. 81 } 82 83 } // namespace s11n_example 77 void StockServer::handle_write(const boost::system::error_code& e, connection_ptr conn) 78 { 79 // Nothing to do. The socket will be closed automatically when the last 80 // reference to the connection object goes away. 81 } -
src/Fragmentation/Automation/StockServer.hpp
r72eaf7f red2c5b 14 14 #include "stock.hpp" 15 15 16 namespace s11n_example {17 18 16 /// Serves stock quote information to any client that connects to it. 19 17 class StockServer … … 25 23 26 24 /// Handle completion of a accept operation. 27 void handle_accept(const boost::system::error_code& e, connection_ptr conn);25 void handle_accept(const boost::system::error_code& e, s11n_example::connection_ptr conn); 28 26 29 27 /// Handle completion of a write operation. 30 void handle_write(const boost::system::error_code& e, connection_ptr conn);28 void handle_write(const boost::system::error_code& e, s11n_example::connection_ptr conn); 31 29 32 30 private: … … 35 33 36 34 /// The data to be sent to each client. 37 std::vector<s tock> stocks_;35 std::vector<s11n_example::stock> stocks_; 38 36 }; 39 37 40 } // namespace s11n_example41 42 38 #endif /* STOCKSERVER_HPP_ */ -
src/Fragmentation/Automation/server.cpp
r72eaf7f red2c5b 28 28 29 29 boost::asio::io_service io_service; 30 s11n_example::StockServer server(io_service, port);30 StockServer server(io_service, port); 31 31 io_service.run(); 32 32 }
Note:
See TracChangeset
for help on using the changeset viewer.