ANNA Suite  2020b
Multipurpose development suite for Telco applications
ReceiverFactoryImpl.hpp
Go to the documentation of this file.
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_ReceiverFactoryImpl_hpp
10 #define anna_diameter_comm_ReceiverFactoryImpl_hpp
11 
12 #include <anna/comm/Receiver.hpp>
15 
16 
17 namespace anna {
18 
19 namespace diameter {
20 
21 namespace comm {
22 
23 class R;
24 
36 template <typename R, typename T> class ReceiverFactoryImpl : public anna::comm::ReceiverFactory {
37 public:
41  ReceiverFactoryImpl(R *reference) : anna::comm::ReceiverFactory(T::className()), a_reference(reference) {;}
42 
43 private:
44  R *a_reference;
45  anna::Recycler<T> a_receivers;
46 
47  anna::comm::Receiver* do_create() {
48  T *result = a_receivers.create();
49  result->setReference(a_reference);
50  return result;
51  }
52 
53  void do_release(anna::comm::Receiver* receiver) { a_receivers.release(static_cast <T*>(receiver)); }
54 };
55 
56 }
57 }
58 }
59 
60 #endif
61 
T * create() noexcept(false)
Definition: Recycler.hpp:88
Definition: ReceiverFactory.hpp:53
Definition: Receiver.hpp:33
Definition: app.hpp:12
void release(T *t)
Definition: Recycler.hpp:144