Xirema

Server Main.cpp

Feb 17th, 2016
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.57 KB | None | 0 0
  1. #define ASIO_STANDALONE
  2. #define ASIO_HAS_STD_ADDRESSOF
  3. #define ASIO_HAS_STD_ARRAY
  4. #define ASIO_HAS_CSTDINT
  5. #define ASIO_HAS_STD_SHARED_PTR
  6. #define ASIO_HAS_STD_TYPE_TRAITS
  7. #include<asio.hpp>
  8. #include<vector>
  9. #include<thread>
  10. #include<string>
  11. #include<iostream>
  12. #include<iomanip>
  13. #include<chrono>
  14. #include<sstream>
  15. #include<random>
  16. #include<functional>
  17. #include<fstream>
  18.  
  19. #include "Concurrent Queue.h"
  20. #include "Basic Server.h"
  21.  
  22. int main()
  23. {
  24.     server::basic_server server;
  25.  
  26.     server.start_listening("::1", "6118");
  27.     volatile bool stop = false;
  28.     auto then = std::chrono::system_clock::now();
  29.     size_t bytes = 0;
  30.     std::thread wait_for_exit([&stop]() {
  31.         std::string line;
  32.         std::getline(std::cin, line);
  33.         stop = true;
  34.     });
  35.    
  36.     while (!stop) {
  37.         server::data_pair read_from_server;
  38.         if (!server.read_from_queue(read_from_server)) {
  39.             std::this_thread::yield();
  40.             continue;
  41.         }
  42.         std::string id = read_from_server.first;
  43.         server::data_vector & data = read_from_server.second;
  44.         std::string line;
  45.         line.insert(line.end(), data.begin(), data.end());
  46.         std::fstream output(id + ".txt", std::ios::out | std::ios::binary | std::ios::app);
  47.         output << line;
  48.         output.flush();
  49.         auto now = std::chrono::system_clock::now();
  50.         bytes += data.size();
  51.         if (now - then > std::chrono::milliseconds(100)) {
  52.             std::cout << "Received " << bytes << " bytes." << std::endl;
  53.             then += std::chrono::milliseconds(100);
  54.         }
  55.     }
  56.     std::cout << "Received " << bytes << " bytes." << std::endl;
  57.     std::cout << std::endl;
  58.     wait_for_exit.join();
  59.     system("pause");
  60.     return 0;
  61. }
Add Comment
Please, Sign In to add comment