Changeset 2eff32 for src


Ignore:
Timestamp:
May 4, 2012, 2:15:41 PM (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:
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)
Message:

Renamed client -> StockClient, split off StockClient into own module.

Location:
src/Fragmentation/Automation
Files:
2 added
2 edited

Legend:

Unmodified
Added
Removed
  • src/Fragmentation/Automation/Makefile.am

    r8b6572 r2eff32  
    3030  client.cpp \
    3131  connection.hpp \
    32   stock.hpp
     32  stock.hpp \
     33  StockClient.cpp \
     34  StockClient.hpp
    3335clients11n_LDFLAGS = $(AM_LDFLAGS) $(BOOST_ASIO_LDFLAGS) $(BOOST_SYSTEM_LDFLAGS) $(BOOST_THREAD_LDFLAGS) $(BOOST_SERIALIZATION_LDFLAGS)
    3436clients11n_CXXFLAGS = $(AM_CPPFLAGS)
  • src/Fragmentation/Automation/client.cpp

    r8b6572 r2eff32  
    1010
    1111#include <boost/asio.hpp>
    12 #include <boost/bind.hpp>
    1312#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"
    1814
    19 namespace s11n_example {
    20 
    21 /// Downloads stock quote information from a server.
    22 class client
    23 {
    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 list
    49       // of stocks. The connection::async_read() function will automatically
    50       // 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     else
    56     {
    57       // An error occurred. Log it and return. Since we are not starting a new
    58       // operation the io_service will run out of work to do and the client will
    59       // 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     else
    86     {
    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 of
    92     // 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_example
    10415
    10516int main(int argc, char* argv[])
     
    11526
    11627    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]);
    11829    io_service.run();
    11930  }
Note: See TracChangeset for help on using the changeset viewer.