libtasks Documentation  1.6
echoserver.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2013-2014 ADTECH GmbH
3  * Licensed under MIT (https://github.com/adtechlabs/libtasks/blob/master/COPYING)
4  *
5  * Author: Andreas Pohl
6  */
7 
8 #ifndef _ECHO_SERVER_H_
9 #define _ECHO_SERVER_H_
10 
11 #include <tasks/net_io_task.h>
12 #include <tasks/timer_task.h>
13 #include <tasks/worker.h>
14 #include <vector>
15 #include <queue>
16 #include <atomic>
17 #include <ctime>
18 
19 class stats : public tasks::timer_task {
20  public:
21  stats() : timer_task(10., 10.) { m_last = std::time(nullptr); }
22 
23  bool handle_event(tasks::worker*, int revents);
24 
25  static void inc_req() { m_req_count++; }
26 
27  static void inc_clients() { m_clients++; }
28 
29  static void dec_clients() { m_clients--; }
30 
31  private:
32  static std::atomic<int> m_req_count;
33  static std::atomic<int> m_clients;
34  std::time_t m_last;
35 };
36 
38  public:
40 
42 
43  bool handle_event(tasks::worker* worker, int revents);
44 
45  private:
46  std::queue<std::vector<char> > m_write_queue;
47  ssize_t m_write_offset = 0;
48 };
49 
50 #endif // _ECHO_SERVER_H_
static void inc_clients()
Definition: echoserver.h:27
The net_io_task implements the base for socket based network tasks.
Definition: net_io_task.h:21
bool handle_event(tasks::worker *worker, int revents)
Definition: echoserver.cpp:28
bool handle_event(tasks::worker *, int revents)
Definition: echoserver.cpp:72
The socket class.
Definition: socket.h:35
echo_handler(tasks::net::socket &socket)
Definition: echoserver.h:39
net_io_task(int events)
Definition: net_io_task.h:23
net::socket & socket()
Provide access to the underlying socket object.
Definition: net_io_task.h:35
std::queue< std::vector< char > > m_write_queue
Definition: echoserver.h:46
ssize_t m_write_offset
Definition: echoserver.h:47
static std::atomic< int > m_req_count
Definition: echoserver.h:32
static std::atomic< int > m_clients
Definition: echoserver.h:33
stats()
Definition: echoserver.h:21
static void inc_req()
Definition: echoserver.h:25
std::time_t m_last
Definition: echoserver.h:34
timer_task(double after, double repeat)
Definition: timer_task.cpp:15
static void dec_clients()
Definition: echoserver.h:29