Subversion Repositories HomeAutomation

Rev

Rev 1592 | Blame | Last modification | View Log | SVN | RSS feed

  1. #include <iostream>
  2.  
  3. #include <boost/bind.hpp>
  4.  
  5. #include "net/Manager.h"
  6. #include "net/Types.h"
  7.  
  8. #include "timer/Manager.h"
  9. #include "timer/Types.h"
  10.  
  11.  
  12. using namespace atom;
  13.  
  14.  
  15. net::Manager::Pointer NM = net::Manager::Instance();
  16.  
  17. net::ServerId server_id = 0;
  18. timer::TimerId timer_id;
  19.  
  20. void Main_SlotOnNewState(net::ClientId client_id, net::ServerId server_id, net::ClientState client_state)
  21. {
  22.     std::cout << "client:" << client_id << " - New state: " << client_state << std::endl;
  23. }
  24.  
  25. void Main_SlotOnNewData(net::ClientId client_id, net::ServerId server_id, net::Buffer data)
  26. {
  27.     std::string s(data.data());
  28.    
  29.     std::cout << "client:" << client_id << " - New data: " << s << std::endl;
  30.    
  31.     net::Buffer out_data;
  32.    
  33.     strncpy(out_data.c_array(), data.data(), out_data.size());
  34.    
  35.     NM->SendTo(client_id, out_data);
  36. }
  37.  
  38. void Main_SlotOnTimeout(timer::TimerId timer_id)
  39. {
  40.     std::cout << "timer:" << timer_id << " - expired" << std::endl;
  41.    
  42.     std::string out_string = "Timeout!";
  43.    
  44.     net::Buffer out_data;
  45.    
  46.     strncpy(out_data.c_array(), out_string.data(), out_data.size());
  47.    
  48.     NM->SendToAll(server_id, out_data);
  49. }
  50.  
  51. int main(int argc, char **argv)
  52. {
  53.     std::cout << "connect slots" << std::endl;
  54.    
  55.     timer::Manager::Pointer TM = timer::Manager::Instance();
  56.    
  57.    
  58.     //TM->Set(10000, true);
  59.    
  60.     TM->ConnectSlots(boost::bind(&Main_SlotOnTimeout, _1));
  61.    
  62.    
  63.     std::cout << "connect slots2" << std::endl;
  64.     NM->ConnectSlots(boost::bind(&Main_SlotOnNewState, _1, _2, _3), boost::bind(&Main_SlotOnNewData, _1, _2, _3));
  65.    
  66.    
  67.     try
  68.     {
  69.         server_id = NM->StartServer(net::PROTOCOL_TCP, 2000);
  70.    
  71.         timer_id = TM->Set(10000, true);
  72.        
  73.         /*
  74.         net::ClientId client_id_udp = NM->Connect(net::PROTOCOL_UDP, "192.168.1.250", 1100);
  75.        
  76.         std::cout << "connected" << std::endl;
  77.        
  78.         char c[2] = { 251, 0 };
  79.         */
  80.         //NM->SendTo(client_id_udp, std::string(c));
  81.     }
  82.     catch (std::exception e)
  83.     {
  84.         std::cerr << e.what() << std::endl;
  85.     }
  86.    
  87.     std::cout << "sleep" << std::endl;
  88.    
  89.     sleep(100000000);
  90.    
  91.     return 0;
  92. }
  93.