1 // ANNA - Anna is Not Nothingness Anymore //
3 // (c) Copyright 2005-2015 Eduardo Ramos Testillano & Francisco Ruiz Rayo //
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 //
9 #ifndef anna_diameter_codec_Engine_hpp
10 #define anna_diameter_codec_Engine_hpp
16 #include <anna/core/util/Recycler.hpp>
18 #include <anna/diameter/codec/Message.hpp>
19 #include <anna/diameter/codec/Avp.hpp>
20 #include <anna/diameter/codec/EngineImpl.hpp>
23 using namespace anna::diameter::codec;
26 //------------------------------------------------------------------------------
27 //---------------------------------------------------------------------- #define
28 //------------------------------------------------------------------------------
40 * Standard inheritance for engine component implementation, allocating basic Avp and Message classes.
42 class Engine : public EngineImpl {
46 static const char* getClassName() throw() { return "anna::diameter::codec::Engine"; }
48 Engine() : EngineImpl(getClassName()) {;}
50 void releaseAvp(Avp* avp) throw() {
51 if(avp == NULL) return;
53 //Avp* aux = static_cast <Avp*> (avp);
54 // avp/*aux*/->clear(); // free internal data-part storage specially for grouped avps which will release its childrens
55 a_avps.release(avp/*aux*/);
58 void releaseMessage(Message* message) throw() {
59 if(message == NULL) return;
61 //Message* aux = static_cast <Message*> (message);
62 // message/*aux*/->clear(); // free internal data-part storage specially for childrens releasing
63 a_messages.release(message/*aux*/);
68 anna::Recycler<Avp> a_avps;
69 anna::Recycler<Message> a_messages;
71 anna::diameter::codec::Avp* allocateAvp() throw() { return a_avps.create(); }
72 anna::diameter::codec::Message* allocateMessage() throw() { return a_messages.create(); }