- 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:
- a636f8
- Parents:
- 8b6572
- 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:
-
- 2 added
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Fragmentation/Automation/Makefile.am
r8b6572 r2eff32 30 30 client.cpp \ 31 31 connection.hpp \ 32 stock.hpp 32 stock.hpp \ 33 StockClient.cpp \ 34 StockClient.hpp 33 35 clients11n_LDFLAGS = $(AM_LDFLAGS) $(BOOST_ASIO_LDFLAGS) $(BOOST_SYSTEM_LDFLAGS) $(BOOST_THREAD_LDFLAGS) $(BOOST_SERIALIZATION_LDFLAGS) 34 36 clients11n_CXXFLAGS = $(AM_CPPFLAGS) -
src/Fragmentation/Automation/client.cpp
r8b6572 r2eff32 10 10 11 11 #include <boost/asio.hpp> 12 #include <boost/bind.hpp>13 12 #include <iostream> 14 #include <vector> 15 #include "connection.hpp" // Must come before boost/serialization headers. 16 #include <boost/serialization/vector.hpp> 17 #include "stock.hpp" 13 #include "StockClient.hpp" 18 14 19 namespace s11n_example {20 21 /// Downloads stock quote information from a server.22 class client23 {24 public:25 /// Constructor starts the asynchronous connect operation.26 client(boost::asio::io_service& io_service,27 const std::string& host, const std::string& service)28 : connection_(io_service)29 {30 // Resolve the host name into an IP address.31 boost::asio::ip::tcp::resolver resolver(io_service);32 boost::asio::ip::tcp::resolver::query query(host, service);33 boost::asio::ip::tcp::resolver::iterator endpoint_iterator =34 resolver.resolve(query);35 boost::asio::ip::tcp::endpoint endpoint = *endpoint_iterator;36 37 // Start an asynchronous connect operation.38 connection_.socket().async_connect(endpoint,39 boost::bind(&client::handle_connect, this,40 boost::asio::placeholders::error));41 }42 43 /// Handle completion of a connect operation.44 void handle_connect(const boost::system::error_code& e)45 {46 if (!e)47 {48 // Successfully established connection. Start operation to read the list49 // of stocks. The connection::async_read() function will automatically50 // decode the data that is read from the underlying socket.51 connection_.async_read(stocks_,52 boost::bind(&client::handle_read, this,53 boost::asio::placeholders::error));54 }55 else56 {57 // An error occurred. Log it and return. Since we are not starting a new58 // operation the io_service will run out of work to do and the client will59 // exit.60 std::cerr << e.message() << std::endl;61 }62 }63 64 /// Handle completion of a read operation.65 void handle_read(const boost::system::error_code& e)66 {67 if (!e)68 {69 // Print out the data that was received.70 for (std::size_t i = 0; i < stocks_.size(); ++i)71 {72 std::cout << "Stock number " << i << "\n";73 std::cout << " code: " << stocks_[i].code << "\n";74 std::cout << " name: " << stocks_[i].name << "\n";75 std::cout << " open_price: " << stocks_[i].open_price << "\n";76 std::cout << " high_price: " << stocks_[i].high_price << "\n";77 std::cout << " low_price: " << stocks_[i].low_price << "\n";78 std::cout << " last_price: " << stocks_[i].last_price << "\n";79 std::cout << " buy_price: " << stocks_[i].buy_price << "\n";80 std::cout << " buy_quantity: " << stocks_[i].buy_quantity << "\n";81 std::cout << " sell_price: " << stocks_[i].sell_price << "\n";82 std::cout << " sell_quantity: " << stocks_[i].sell_quantity << "\n";83 }84 }85 else86 {87 // An error occurred.88 std::cerr << e.message() << std::endl;89 }90 91 // Since we are not starting a new operation the io_service will run out of92 // work to do and the client will exit.93 }94 95 private:96 /// The connection to the server.97 connection connection_;98 99 /// The data received from the server.100 std::vector<stock> stocks_;101 };102 103 } // namespace s11n_example104 15 105 16 int main(int argc, char* argv[]) … … 115 26 116 27 boost::asio::io_service io_service; 117 s11n_example:: client client(io_service, argv[1], argv[2]);28 s11n_example::StockClient client(io_service, argv[1], argv[2]); 118 29 io_service.run(); 119 30 }
Note:
See TracChangeset
for help on using the changeset viewer.