73a520547fc65e4aa61343fe934ba8baf0c91889
[anna.git] / ClientSessionReceiver.hpp
1 // ANNA - Anna is Not Nothingness Anymore                                                         //
2 //                                                                                                //
3 // (c) Copyright 2005-2015 Eduardo Ramos Testillano & Francisco Ruiz Rayo                         //
4 //                                                                                                //
5 // See project site at http://redmine.teslayout.com/projects/anna-suite                           //
6 // See accompanying file LICENSE or copy at http://www.teslayout.com/projects/public/anna.LICENSE //
7
8
9 #ifndef anna_diameter_comm_ClientSessionReceiver_hpp
10 #define anna_diameter_comm_ClientSessionReceiver_hpp
11
12 #include <anna/comm/Receiver.hpp>
13 #include <anna/core/RuntimeException.hpp>
14
15
16 namespace anna {
17 namespace comm {
18 class Message;
19 class ClientSocket;
20 class Server;
21 }
22 }
23
24
25 namespace anna {
26
27 namespace diameter {
28
29 namespace comm {
30
31
32 class ClientSession;
33
34
35 class ClientSessionReceiver : public anna::comm::Receiver {
36 public:
37   virtual ~ClientSessionReceiver() {;}
38
39   static const char* className() { return "diameter.comm.ClientSessionReceiver"; }
40   void setReference(ClientSession *s) { a_session = s; }
41
42   // base class virtuals
43   void eventBreakConnection(const anna::comm::ClientSocket&) ;
44   void eventCreateConnection(const anna::comm::Server*) ;
45
46 private:
47   ClientSessionReceiver() : anna::comm::Receiver("diameter.comm.ClientSessionReceiver") { a_session = NULL; }
48   void initialize() noexcept(false) {;}
49   void apply(anna::comm::ClientSocket&, const anna::comm::Message&) noexcept(false);
50
51
52   anna::diameter::comm::ClientSession *a_session;
53
54   friend class anna::Allocator <ClientSessionReceiver>;
55 };
56
57
58 }
59 }
60 }
61
62 #endif
63