9 #ifndef anna_diameter_comm_Engine_hpp 10 #define anna_diameter_comm_Engine_hpp 111 void setOriginRealmName(
const std::string & originRealmName) ;
119 void setOriginHostName(
const std::string & originHostName) ;
146 void raiseAutoRecovery(
bool autoRecovery =
true) noexcept(
false);
186 bool bind() noexcept(
false);
200 void setClientCER(
const std::string & cerPathFile) noexcept(
false);
207 void setClientCER(
const anna::U32 &applicationId) noexcept(
false);
222 void setClientDWR(
const std::string & dwrPathFile =
"") noexcept(
false);
320 Entity* createEntity(
const socket_v & socketList,
const std::string & description =
"")
339 Entity* createEntity(
const std::string & addr1,
int port1,
const std::string & addr2,
int port2,
const std::string & description =
"")
384 LocalServer *createLocalServer(
const std::string & addr,
int port = Session::DefaultPort,
int maxConnections = -1,
const anna::Millisecond & allowedInactivityTime = ServerSession::DefaultAllowedInactivityTime,
int category = 1,
const std::string & description =
"")
394 void close(
bool destroy =
false) noexcept(false) { closeEntities(destroy); closeLocalServers(destroy); }
403 void closeEntities(
bool destroy =
false) noexcept(
false);
413 void closeEntity(
Entity* entity,
bool destroy =
false) noexcept(
false);
422 void closeLocalServers(
bool destroy =
false) noexcept(
false);
433 void closeLocalServer(
LocalServer * localServer,
bool destroy =
false) noexcept(
false);
440 int getOTARequestsForEntities()
const ;
447 int getOTARequestsForLocalServers()
const ;
454 int getOTARequests()
const {
return (getOTARequestsForEntities() + getOTARequestsForLocalServers()); }
475 bool idle()
const {
return (getOTARequests() == 0); }
486 bool broadcastEntities(
const Message*message) noexcept(
false);
498 bool broadcastLocalServers(
const Message*message) noexcept(
false);
506 virtual std::string asString(
void)
const ;
538 void setCEA(
const std::string &ceaPathfile) { a_ceaPathfile = ceaPathfile; }
545 const std::string &
getCEA()
const {
return a_ceaPathfile; }
600 const Response* sendRealmHost(
const Message* message,
const std::string &destinationRealm,
const std::string &destinationHost =
"") noexcept(
false);
606 void resetStatistics() ;
615 void lazyInitialize() noexcept(
false);
635 void closeServer(
Server*,
bool) noexcept(
false);
637 void closeClientSession(
ClientSession*,
bool) noexcept(
false);
640 Server* allocateServer() ;
641 void releaseServer(
Server*) ;
692 std::string a_originRealm;
693 std::string a_originHost;
695 int a_numberOfClientSessionsPerServer;
704 std::string a_ceaPathfile;
711 bool a_availableForEntities;
712 void availabilityLostForEntities() ;
713 void availabilityRecoveredForEntities() ;
714 bool refreshAvailabilityForEntities() ;
716 bool a_availableForLocalServers;
717 void availabilityLostForLocalServers() ;
718 void availabilityRecoveredForLocalServers() ;
719 bool refreshAvailabilityForLocalServers() ;
721 void eraseDeprecatedIdleEntities() ;
724 void do_initialize() noexcept(
false);
728 void checkEntityCollision(
const socket_v &) noexcept(
false);
729 void assertBaseProtocolHealth()
const noexcept(
false);
736 typedef std::string clientSession_key;
737 typedef std::map <clientSession_key, ClientSession*> clientSession_container;
738 typedef clientSession_container::value_type clientSession_value_type;
739 typedef clientSession_container::iterator clientSession_iterator;
740 typedef clientSession_container::const_iterator const_clientSession_iterator;
741 clientSession_container a_clientSessions;
743 clientSession_iterator clientSession_find(
const clientSession_key&) ;
744 clientSession_iterator clientSession_begin() {
return a_clientSessions.begin(); }
745 clientSession_iterator clientSession_end() {
return a_clientSessions.end(); }
746 static ClientSession* clientSession(clientSession_iterator ii) {
return ii->second; }
747 const_clientSession_iterator clientSession_begin()
const {
return a_clientSessions.begin(); }
748 const_clientSession_iterator clientSession_end()
const {
return a_clientSessions.end(); }
749 static const ClientSession* clientSession(const_clientSession_iterator ii) {
return ii->second; }
752 server_key getServerKey(
const std::string & addr,
int port)
const ;
753 typedef std::map <server_key, Server*> server_container;
754 typedef server_container::value_type server_value_type;
755 typedef server_container::iterator server_iterator;
756 typedef server_container::const_iterator const_server_iterator;
757 server_container a_servers;
759 server_iterator server_find(
const server_key&) ;
760 server_iterator server_begin() {
return a_servers.begin(); }
761 server_iterator server_end() {
return a_servers.end(); }
762 static Server* server(server_iterator ii) {
return ii->second; }
763 const_server_iterator server_begin()
const {
return a_servers.
begin(); }
764 const_server_iterator server_end()
const {
return a_servers.end(); }
765 static const Server* server(const_server_iterator ii) {
return ii->second; }
767 typedef std::string entity_key;
768 entity_key getEntityKey(
const socket_v &)
const ;
769 entity_key getEntityKey(
const std::string & addr1,
int port1,
const std::string & addr2,
int port2)
const ;
770 typedef std::map <entity_key, Entity*> entity_container;
771 typedef entity_container::value_type entity_value_type;
772 typedef entity_container::iterator entity_iterator;
773 typedef entity_container::const_iterator const_entity_iterator;
774 entity_container a_entities;
775 entity_iterator entity_find(
const entity_key&) ;
776 entity_iterator entity_begin() {
return a_entities.begin(); }
777 entity_iterator entity_end() {
return a_entities.end(); }
778 static Entity* entity(entity_iterator ii) {
return ii->second; }
779 const_entity_iterator entity_begin()
const {
return a_entities.
begin(); }
780 const_entity_iterator entity_end()
const {
return a_entities.end(); }
781 static const Entity* entity(const_entity_iterator ii) {
return ii->second; }
789 typedef std::map <socket_t, LocalServer*> localServer_container;
790 typedef localServer_container::value_type localServer_value_type;
791 typedef localServer_container::iterator localServer_iterator;
792 typedef localServer_container::const_iterator const_localServer_iterator;
793 localServer_container a_localServers;
794 localServer_iterator localServer_find(
const socket_t&) ;
795 localServer_iterator localServer_begin() {
return a_localServers.begin(); }
796 localServer_iterator localServer_end() {
return a_localServers.end(); }
797 static LocalServer* localServer(localServer_iterator ii) {
return ii->second; }
798 const_localServer_iterator localServer_begin()
const {
return a_localServers.begin(); }
799 const_localServer_iterator localServer_end()
const {
return a_localServers.end(); }
800 static const LocalServer* localServer(const_localServer_iterator ii) {
return ii->second; }
804 typedef std::vector<ServerSession*> server_sessions_vector_t;
805 typedef server_sessions_vector_t::const_iterator server_sessions_it_t;
806 typedef server_sessions_vector_t::iterator server_sessions_nc_it_t;
807 typedef std::map <std::string , server_sessions_vector_t> dh_server_sessions_map_t;
808 typedef dh_server_sessions_map_t::const_iterator dh_server_sessions_it_t;
809 typedef dh_server_sessions_map_t::iterator dh_server_sessions_nc_it_t;
810 typedef std::map <std::string , dh_server_sessions_map_t> dr_dh_server_sessions_map_t;
811 typedef dr_dh_server_sessions_map_t::const_iterator dr_dh_server_sessions_it_t;
812 typedef dr_dh_server_sessions_map_t::iterator dr_dh_server_sessions_nc_it_t;
813 dr_dh_server_sessions_map_t a_dr_dh_server_sessions;
814 void manageDrDhServerSession(
ServerSession *ss,
bool register_or_desregister) ;
Definition: Exception.hpp:26
Definition: Millisecond.hpp:24
Definition: Engine.hpp:42
_v
Definition: Exception.hpp:26
void setMaxConnectionDelay(const anna::Millisecond &maxConnectionDelay)
Definition: Engine.hpp:170
Definition: Engine.hpp:102
void setAutoBind(const bool autoBind)
Definition: Engine.hpp:161
Definition: Server.hpp:54
bool getAutoBind() const
Definition: Engine.hpp:152
codec::Engine * getBaseProtocolCodecEngine() const
Definition: Engine.hpp:685
bool broadcastLocalServers(const Message &message) noexcept(false)
Definition: Engine.hpp:499
uint32_t U32
Definition: defines.hpp:75
bool broadcastEntities(const Message &message) noexcept(false)
Definition: Engine.hpp:487
bool idleForLocalServers() const
Definition: Engine.hpp:468
virtual Entity * allocateEntity()
Definition: Engine.hpp:653
bool idleForEntities() const
Definition: Engine.hpp:461
Definition: Response.hpp:44
void setNumberOfClientSessionsPerServer(int numberOfClientSessionsPerServer)
Definition: Engine.hpp:243
Definition: Message.hpp:45
Definition: ServerSession.hpp:53
Definition: ClientSession.hpp:51
std::pair< std::string, int > socket_t
Definition: defines.hpp:104
Definition: Recycler.hpp:30
Definition: LocalServer.hpp:55
virtual void releaseEntity(Entity *)
Definition: Engine.hpp:660
Definition: Dictionary.hpp:50
const std::string & getCEA() const
Definition: Engine.hpp:545
void setCEA(const std::string &ceaPathfile)
Definition: Engine.hpp:538
const std::string & getOriginHostName() const
Definition: Engine.hpp:133
void close(bool destroy=false) noexcept(false)
Definition: Engine.hpp:394
std::vector< Server * >::iterator begin()
Definition: Entity.hpp:390
Definition: Component.hpp:44
std::vector< ClientSession * >::iterator begin()
Definition: Server.hpp:181
virtual void bindingClientSession(const ClientSession *) const
Definition: Engine.hpp:519
const anna::Millisecond & getMaxConnectionDelay()
Definition: Engine.hpp:179
std::vector< socket_t > socket_v
Definition: defines.hpp:109
int getNumberOfClientSessionsPerServer() const
Definition: Engine.hpp:236
Definition: Entity.hpp:50
const std::string & getOriginRealmName() const
Definition: Engine.hpp:126
Definition: Session.hpp:55
int getOTARequests() const
Definition: Engine.hpp:454
virtual LocalServer * allocateLocalServer()
Definition: Engine.hpp:670
Definition: DataBlock.hpp:24
Definition: functions.hpp:118
virtual void releaseLocalServer(LocalServer *)
Definition: Engine.hpp:677
bool idle() const
Definition: Engine.hpp:475
Definition: ServerSocket.hpp:44