Rev 1593 | Rev 1595 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | SVN | RSS feed
#include <iostream>#include <fstream>#include <vector>#include <string>#include <boost/bind.hpp>#include <boost/program_options.hpp>#include "net/Manager.h"#include "net/Types.h"#include "timer/Manager.h"#include "timer/Types.h"#include "config/Manager.h"#include "logging/Logger.h"using namespace atom;net::Manager::Pointer NM = net::Manager::Instance();net::ServerId server_id = 0;timer::TimerId timer_id;void Main_SlotOnNewState(net::ClientId client_id, net::ServerId server_id, net::ClientState client_state){std::cout << "client:" << client_id << " - New state: " << client_state << std::endl;}void Main_SlotOnNewData(net::ClientId client_id, net::ServerId server_id, net::Buffer data){std::string s(data.data());std::cout << "client:" << client_id << " - New data: " << s << std::endl;net::Buffer out_data;strncpy(out_data.c_array(), data.data(), out_data.size());NM->SendTo(client_id, out_data);}void Main_SlotOnTimeout(timer::TimerId timer_id){std::cout << "timer:" << timer_id << " - expired" << std::endl;std::string out_string = "Timeout!";net::Buffer out_data;strncpy(out_data.c_array(), out_string.data(), out_data.size());NM->SendToAll(server_id, out_data);}int main(int argc, char **argv){logging::Logger LOG("Main");config::Manager::Pointer CM = config::Manager::Instance();if (!CM->Set(argc, argv)){return 0;}if (CM->Exist("MonitorPort")){LOG.Info("MonitorPort: " + boost::lexical_cast<std::string>(CM->GetAsInt("MonitorPort")));}if (CM->Exist("CanNet")){std::vector<std::string> cannets = CM->GetAsStringVector("CanNet");for (int n = 0; n < cannets.size(); n++){LOG.Info("CanNet[" + boost::lexical_cast<std::string>(n) + "]=" + cannets[n]);}}LOG.Info("Done!");return 0;// Declare a group of options that will be// allowed only on command lineboost::program_options::options_description generic("Generic options");generic.add_options() ("version,v", "print version string")("help", "produce help message");// Declare a group of options that will be// allowed both on command line and in// config fileboost::program_options::options_description config("Configuration");config.add_options()("MonitorPort", boost::program_options::value<int>()->default_value(2000), "TCP port to expose for monitoring")("CommandPort", boost::program_options::value<int>()->default_value(2001), "TCP port to expose for monitoring")("LogFile", boost::program_options::value<std::string>(), "File to log output to")("ScriptsPath", boost::program_options::value<std::string>(), "File to log output to")("ProtocolFile", boost::program_options::value<std::string>(), "File to log output to")("DaemonMode,D", "File to log output to")("CanNet_1", boost::program_options::value<std::vector<std::string> >(), "include path");LOG.Debug("a");boost::program_options::options_description cmdline_options;cmdline_options.add(generic).add(config);boost::program_options::options_description config_file_options;config_file_options.add(config);boost::program_options::options_description visible("Allowed options");visible.add(generic).add(config);boost::program_options::variables_map vm;store(boost::program_options::command_line_parser(argc, argv).options(cmdline_options).run(), vm);LOG.Debug("b");std::ifstream ifs("atom.conf");store(parse_config_file(ifs, config_file_options), vm);notify(vm);LOG.Debug("c");if (vm.count("help")){LOG.Info("Help");}if (vm.count("MonitorPort")){LOG.Info("MonitorPort: " + boost::lexical_cast<std::string>(vm["MonitorPort"].as<int>()));}if (vm.count("LogFile")){LOG.Info("LogFile: " + vm["LogFile"].as<std::string>());}if (vm.count("DaemonMode")){LOG.Info("DaemonMode: " + vm["DaemonMode"].as<std::string>());}net::Manager::Delete();return 0;LOG.Error("test sdsdsds sds ");return 0;timer::Manager::Pointer TM = timer::Manager::Instance();//TM->Set(10000, true);TM->ConnectSlots(boost::bind(&Main_SlotOnTimeout, _1));std::cout << "connect slots2" << std::endl;NM->ConnectSlots(boost::bind(&Main_SlotOnNewState, _1, _2, _3), boost::bind(&Main_SlotOnNewData, _1, _2, _3));try{server_id = NM->StartServer(net::PROTOCOL_TCP, 2000);timer_id = TM->Set(10000, true);/*net::ClientId client_id_udp = NM->Connect(net::PROTOCOL_UDP, "192.168.1.250", 1100);std::cout << "connected" << std::endl;char c[2] = { 251, 0 };*///NM->SendTo(client_id_udp, std::string(c));}catch (std::exception e){std::cerr << e.what() << std::endl;}std::cout << "sleep" << std::endl;sleep(100000000);return 0;}