X-Git-Url: https://git.teslayout.com/public/public/public/?a=blobdiff_plain;f=example%2Fdiameter%2FrxSimpleTest%2FMyDiameterEngine.hpp;fp=example%2Fdiameter%2FrxSimpleTest%2FMyDiameterEngine.hpp;h=93f26e482a900518d8263cfbe2465c1ec7d7da09;hb=26ae04c7e1eba19d02823bcc87c0ee9f6ce76186;hp=0000000000000000000000000000000000000000;hpb=398d53cb90e9f25dc89a46396225eef981f0ab24;p=anna.git diff --git a/example/diameter/rxSimpleTest/MyDiameterEngine.hpp b/example/diameter/rxSimpleTest/MyDiameterEngine.hpp new file mode 100755 index 0000000..93f26e4 --- /dev/null +++ b/example/diameter/rxSimpleTest/MyDiameterEngine.hpp @@ -0,0 +1,60 @@ +// ANNA - Anna is Not Nothingness Anymore // +// // +// (c) Copyright 2005-2015 Eduardo Ramos Testillano & Francisco Ruiz Rayo // +// // +// See project site at http://redmine.teslayout.com/projects/anna-suite // +// See accompanying file LICENSE or copy at http://www.teslayout.com/projects/public/anna.LICENSE // + + +#ifndef example_diameter_rxSimpleTest_MyDiameterEngine_hpp +#define example_diameter_rxSimpleTest_MyDiameterEngine_hpp + +// Project +#include + +// Process +#include +#include + +// Standard +#include + + +namespace anna { + namespace diameter { + namespace stack { + class Dictionary; + } + } +} + +class MyDiameterEngine : public anna::diameter::comm::Engine { +public: + + MyDiameterEngine(const char *className, const anna::diameter::stack::Dictionary *baseProtocolDictionary) : Engine(className, baseProtocolDictionary) {;} + +// Default implementation is enough +// void readDPA(anna::DataBlock &dpa, const anna::DataBlock & dpr) throw() {;} // DPA is not replied +// void readDWA(anna::DataBlock &dwa, const anna::DataBlock & dwr) throw() {;} // DWA is not replied + +private: + anna::Recycler a_entitiesRecycler; + + anna::diameter::comm::Entity* allocateEntity() throw() { return a_entitiesRecycler.create(); } + + void releaseEntity(anna::diameter::comm::Entity* entity) throw() { + MyDiameterEntity* aux = static_cast (entity); + a_entitiesRecycler.release(aux); + } + + anna::Recycler a_localServersRecycler; + + anna::diameter::comm::LocalServer* allocateLocalServer() throw() { return a_localServersRecycler.create(); } + + void releaseLocalServer(anna::diameter::comm::LocalServer* localServer) throw() { + MyLocalServer* aux = static_cast (localServer); + a_localServersRecycler.release(aux); + } +}; + +#endif