IBR-DTNSuite  0.12
DatagramService.h
Go to the documentation of this file.
1 /*
2  * DatagramService.h
3  *
4  * Created on: 09.11.2012
5  * Author: morgenro
6  */
7 
8 #ifndef DATAGRAMSERVICE_H_
9 #define DATAGRAMSERVICE_H_
10 
11 #include "core/Node.h"
13 #include <string>
14 
15 namespace dtn
16 {
17  namespace net
18  {
20  {
21  public:
22  DatagramException(const std::string &what) : ibrcommon::Exception(what)
23  {};
24 
25  virtual ~DatagramException() throw() {};
26  };
27 
29  {
30  public:
31  WrongSeqNoException(size_t exp_seqno)
32  : DatagramException("Wrong sequence number received"), expected_seqno(exp_seqno)
33  {};
34 
35  virtual ~WrongSeqNoException() throw() {};
36 
37  const size_t expected_seqno;
38  };
39 
41  {
42  public:
44  {
45  FLOW_NONE = 0,
48  };
49 
51  {
52  SEGMENT_FIRST = 0x02,
53  SEGMENT_LAST = 0x01,
56  };
57 
58  class Parameter
59  {
60  public:
61  // default constructor
64  initial_timeout(50), seq_check(true), retry_limit(5) { }
65 
66  // destructor
67  virtual ~Parameter() { }
68 
70  unsigned int max_seq_numbers;
73  bool seq_check;
74  size_t retry_limit;
75  };
76 
77  virtual ~DatagramService() = 0;
78 
83  virtual void bind() throw (DatagramException) = 0;
84 
88  virtual void shutdown() = 0;
89 
97  virtual void send(const char &type, const char &flags, const unsigned int &seqno, const std::string &address, const char *buf, size_t length) throw (DatagramException) = 0;
98 
105  virtual void send(const char &type, const char &flags, const unsigned int &seqno, const char *buf, size_t length) throw (DatagramException) = 0;
106 
115  virtual size_t recvfrom(char *buf, size_t length, char &type, char &flags, unsigned int &seqno, std::string &address) throw (DatagramException) = 0;
116 
121  virtual const std::string getServiceTag() const;
122 
128  virtual const std::string getServiceDescription() const = 0;
129 
134  virtual const ibrcommon::vinterface& getInterface() const = 0;
135 
140  virtual dtn::core::Node::Protocol getProtocol() const = 0;
141 
146  virtual const Parameter& getParameter() const = 0;
147  };
148  }
149 }
150 
151 #endif /* DATAGRAMSERVICE_H_ */