- Timestamp:
- May 4, 2012, 2:15:41 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:
- 963c3b
- Parents:
- 2eff32
- git-author:
- Frederik Heber <heber@…> (11/18/11 20:29:36)
- git-committer:
- Frederik Heber <heber@…> (05/04/12 14:15:41)
- Location:
- src/Fragmentation/Automation
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Fragmentation/Automation/StockClient.cpp
r2eff32 ra636f8 15 15 #include "StockClient.hpp" 16 16 17 namespace s11n_example { 17 using namespace s11n_example; 18 18 19 /// Constructor starts the asynchronous connect operation. 20 StockClient::StockClient( 21 boost::asio::io_service& io_service, 22 const std::string& host, 23 const std::string& service) : 24 connection_(io_service) 19 /// Constructor starts the asynchronous connect operation. 20 StockClient::StockClient( 21 boost::asio::io_service& io_service, 22 const std::string& host, 23 const std::string& service) : 24 connection_(io_service) 25 { 26 // Resolve the host name into an IP address. 27 boost::asio::ip::tcp::resolver resolver(io_service); 28 boost::asio::ip::tcp::resolver::query query(host, service); 29 boost::asio::ip::tcp::resolver::iterator endpoint_iterator = 30 resolver.resolve(query); 31 boost::asio::ip::tcp::endpoint endpoint = *endpoint_iterator; 32 33 // Start an asynchronous connect operation. 34 connection_.socket().async_connect(endpoint, 35 boost::bind(&StockClient::handle_connect, this, 36 boost::asio::placeholders::error)); 37 } 38 39 /// Handle completion of a connect operation. 40 void StockClient::handle_connect(const boost::system::error_code& e) 41 { 42 if (!e) 25 43 { 26 // Resolve the host name into an IP address. 27 boost::asio::ip::tcp::resolver resolver(io_service); 28 boost::asio::ip::tcp::resolver::query query(host, service); 29 boost::asio::ip::tcp::resolver::iterator endpoint_iterator = 30 resolver.resolve(query); 31 boost::asio::ip::tcp::endpoint endpoint = *endpoint_iterator; 44 // Successfully established connection. Start operation to read the list 45 // of stocks. The connection::async_read() function will automatically 46 // decode the data that is read from the underlying socket. 47 connection_.async_read(stocks_, 48 boost::bind(&StockClient::handle_read, this, 49 boost::asio::placeholders::error)); 50 } 51 else 52 { 53 // An error occurred. Log it and return. Since we are not starting a new 54 // operation the io_service will run out of work to do and the client will 55 // exit. 56 std::cerr << e.message() << std::endl; 57 } 58 } 32 59 33 // Start an asynchronous connect operation. 34 connection_.socket().async_connect(endpoint, 35 boost::bind(&StockClient::handle_connect, this, 36 boost::asio::placeholders::error)); 60 /// Handle completion of a read operation. 61 void StockClient::handle_read(const boost::system::error_code& e) 62 { 63 if (!e) 64 { 65 // Print out the data that was received. 66 for (std::size_t i = 0; i < stocks_.size(); ++i) 67 { 68 std::cout << "Stock number " << i << "\n"; 69 std::cout << " code: " << stocks_[i].code << "\n"; 70 std::cout << " name: " << stocks_[i].name << "\n"; 71 std::cout << " open_price: " << stocks_[i].open_price << "\n"; 72 std::cout << " high_price: " << stocks_[i].high_price << "\n"; 73 std::cout << " low_price: " << stocks_[i].low_price << "\n"; 74 std::cout << " last_price: " << stocks_[i].last_price << "\n"; 75 std::cout << " buy_price: " << stocks_[i].buy_price << "\n"; 76 std::cout << " buy_quantity: " << stocks_[i].buy_quantity << "\n"; 77 std::cout << " sell_price: " << stocks_[i].sell_price << "\n"; 78 std::cout << " sell_quantity: " << stocks_[i].sell_quantity << "\n"; 79 } 80 } 81 else 82 { 83 // An error occurred. 84 std::cerr << e.message() << std::endl; 37 85 } 38 86 39 /// Handle completion of a connect operation. 40 void StockClient::handle_connect(const boost::system::error_code& e) 41 { 42 if (!e) 43 { 44 // Successfully established connection. Start operation to read the list 45 // of stocks. The connection::async_read() function will automatically 46 // decode the data that is read from the underlying socket. 47 connection_.async_read(stocks_, 48 boost::bind(&StockClient::handle_read, this, 49 boost::asio::placeholders::error)); 50 } 51 else 52 { 53 // An error occurred. Log it and return. Since we are not starting a new 54 // operation the io_service will run out of work to do and the client will 55 // exit. 56 std::cerr << e.message() << std::endl; 57 } 58 } 87 // Since we are not starting a new operation the io_service will run out of 88 // work to do and the client will exit. 89 } 59 90 60 /// Handle completion of a read operation.61 void StockClient::handle_read(const boost::system::error_code& e)62 {63 if (!e)64 {65 // Print out the data that was received.66 for (std::size_t i = 0; i < stocks_.size(); ++i)67 {68 std::cout << "Stock number " << i << "\n";69 std::cout << " code: " << stocks_[i].code << "\n";70 std::cout << " name: " << stocks_[i].name << "\n";71 std::cout << " open_price: " << stocks_[i].open_price << "\n";72 std::cout << " high_price: " << stocks_[i].high_price << "\n";73 std::cout << " low_price: " << stocks_[i].low_price << "\n";74 std::cout << " last_price: " << stocks_[i].last_price << "\n";75 std::cout << " buy_price: " << stocks_[i].buy_price << "\n";76 std::cout << " buy_quantity: " << stocks_[i].buy_quantity << "\n";77 std::cout << " sell_price: " << stocks_[i].sell_price << "\n";78 std::cout << " sell_quantity: " << stocks_[i].sell_quantity << "\n";79 }80 }81 else82 {83 // An error occurred.84 std::cerr << e.message() << std::endl;85 }86 87 // Since we are not starting a new operation the io_service will run out of88 // work to do and the client will exit.89 }90 91 } // namespace s11n_example -
src/Fragmentation/Automation/StockClient.hpp
r2eff32 ra636f8 13 13 #include "connection.hpp" // Must come before boost/serialization headers. 14 14 #include "stock.hpp" 15 16 namespace s11n_example {17 15 18 16 /// Downloads stock quote information from a server. … … 31 29 private: 32 30 /// The connection to the server. 33 connection connection_;31 s11n_example::connection connection_; 34 32 35 33 /// The data received from the server. … … 37 35 }; 38 36 39 } // namespace s11n_example40 41 37 #endif /* STOCKCLIENT_HPP_ */ -
src/Fragmentation/Automation/client.cpp
r2eff32 ra636f8 26 26 27 27 boost::asio::io_service io_service; 28 s11n_example::StockClient client(io_service, argv[1], argv[2]);28 StockClient client(io_service, argv[1], argv[2]); 29 29 io_service.run(); 30 30 }
Note:
See TracChangeset
for help on using the changeset viewer.