Advertisement
Guest User

Untitled

a guest
Feb 19th, 2020
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.58 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <iostream>
  3. #include <queue>
  4. #include <set>
  5. using namespace std;
  6.  
  7. template <typename QueryDistr, typename ProcessDistr>
  8. class server
  9. {
  10. private:
  11. enum event_type {new_query, query_complete};
  12. struct event
  13. {
  14. double time;
  15. event_type type;
  16. bool operator<(const event &rhs){ return this->time < rhs.time; }
  17. };
  18. size_t buffer_size;
  19. QueryDistr qd;
  20. ProcessDistr pd;
  21. queue<pair<string, double>> buffer;
  22. bool srv_busy;
  23. double cur_time;
  24. set<event> events;
  25. public:
  26. server(size_t BufferSize, QueryDistr A, ProcessDistr B) :
  27. buffer_size(BufferSize), qd(A), pd(B){};
  28. tuple<double, double, double> run_till(double max_time);
  29. };
  30.  
  31. template <typename QueryDistr, typename ProcessDistr>
  32. tuple<double, double, double> server<QueryDistr, ProcessDistr>::run_till(double max_time)
  33. {
  34. cur_time = 0;
  35. srv_busy = false;
  36. events.insert({ qd(), new_query });
  37.  
  38. size_t query_count = 0;
  39. double sum_buffer_size = 0;
  40. double sum_query_time = 0;
  41. size_t denied_query_count = 0;
  42.  
  43. while (cur_time < max_time)
  44. {
  45. auto ev = *events.begin();
  46. events.erase(events.begin());
  47. switch (ev.type)
  48. {
  49. case new_query:
  50. events.insert({ ev.time+qd(), new_query });
  51. query_count++;
  52. if (buffer.size < buffer_size)
  53. {
  54. if (buffer.size() || srv_busy)
  55. buffer.push({ "", ev.time })
  56. else
  57. {
  58. events.insert({ ev.time + pd(), query_complete })
  59. srv_busy = true;
  60. }
  61. }
  62. else
  63. {
  64. denied_query_count++;
  65. }
  66. break;
  67. case query_complete:
  68.  
  69. break;
  70. }
  71. }
  72. }
  73.  
  74. int main()
  75. {
  76. cout << "lol";
  77. return 0;
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement