00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00024 #ifndef SCALESTACK_ECHO_SERVER_DATAGRAM_H
00025 #define SCALESTACK_ECHO_SERVER_DATAGRAM_H
00026
00027 #include <scalestack/kernel/macros.h>
00028 #include <scalestack/network/datagram.h>
00029
00030 namespace scalestack
00031 {
00032 namespace echo
00033 {
00034 namespace server
00035 {
00036
00037 class SCALESTACK_API datagram: public network::datagram
00038 {
00039 public:
00040
00041 datagram(kernel::module& module);
00042
00046 size_t receive(uint8_t* buffer,
00047 size_t size,
00048 struct sockaddr& peer,
00049 socklen_t peer_size);
00050
00054 void flush_send(void);
00055
00056 private:
00057
00061 SCALESTACK_LOCAL
00062 datagram(const datagram&);
00063
00067 SCALESTACK_LOCAL
00068 datagram& operator=(const datagram&);
00069
00074 SCALESTACK_LOCAL
00075 size_t _echo(void);
00076
00077 size_t _size;
00078 uint8_t* _buffer;
00079 };
00080
00081 }
00082 }
00083 }
00084
00085 #endif