Revised OpenFlow Library  v0.6.0dev
 All Classes Files Functions Variables Friends Groups Pages
csegmentation.h
1 /*
2  * csegmentation.h
3  *
4  * Created on: 13.03.2014
5  * Author: andreas
6  */
7 
8 #ifndef CSEGMENTATION_H_
9 #define CSEGMENTATION_H_
10 
11 #include <inttypes.h>
12 
13 #include <iostream>
14 #include <map>
15 
16 #include "rofl/common/logging.h"
17 #include "rofl/common/croflexception.h"
18 #include "rofl/common/csegmsg.h"
19 #include "rofl/common/ciosrv.h"
20 #include "rofl/common/ctimerid.h"
21 
22 namespace rofl {
23 
24 class eSegmentationBase : public RoflException {};
27 
29  public ciosrv
30 {
31 
32  std::map<uint32_t, csegmsg> segmsgs; // all current pending transactions with fragments
33 
34  enum csegmentation_timer_t {
35  TIMER_CHECK_EXPIRATION = 1,
36  };
37 
38  ctimerid check_expiration_id; // timer-id
39  time_t check_expiration_interval;
40 
41  static time_t const DEFAULT_CHECK_EXPIRATION_INTERVAL = 8; // seconds
42 
43 public:
44 
49  time_t check_expiration_interval = DEFAULT_CHECK_EXPIRATION_INTERVAL);
50 
54  virtual
55  ~csegmentation();
56 
61  csegmentation const& seg);
62 
67  operator= (csegmentation const& seg);
68 
69 public:
70 
74  csegmsg&
75  add_transaction(uint32_t xid);
76 
80  void
81  drop_transaction(uint32_t xid);
82 
86  csegmsg&
87  set_transaction(uint32_t xid);
88 
92  csegmsg const&
93  get_transaction(uint32_t xid) const;
94 
98  bool
99  has_transaction(uint32_t xid);
100 
101 private:
102 
106  virtual void
107  handle_timeout(int opaque, void *data = (void*)0);
108 
112  void
113  drop_expired_sessions();
114 
115 public:
116 
117  friend std::ostream&
118  operator<< (std::ostream& os, csegmentation const& seg) {
119  os << rofl::indent(0) << "<csegmentation #transactions:" << (int)seg.segmsgs.size() << " >" << std::endl;
120  rofl::indent i(2);
121  for (std::map<uint32_t, csegmsg>::const_iterator
122  it = seg.segmsgs.begin(); it != seg.segmsgs.end(); ++it) {
123  os << it->second;
124  }
125  return os;
126  };
127 };
128 
129 }; // end of namespace rofl
130 
131 #endif /* CSEGMENTATION_H_ */
Definition: csegmentation.h:26
Timer handle used by class rofl::cioloop.
Definition: ctimerid.h:21
Definition: csegmentation.h:28
Definition: csegmentation.h:24
Definition: csegmentation.h:25
Base class for IO services.
Definition: ciosrv.h:491
Definition: logging.h:76
Definition: csegmsg.h:40
Definition: croflexception.h:27