From 4582a4fd95ca6d3cb5bd0d1c2d3f1785743fd0a8 Mon Sep 17 00:00:00 2001 From: orignal Date: Tue, 1 Nov 2016 13:57:25 -0400 Subject: [PATCH] eliminate some overhead --- Event.cpp | 2 ++ Event.h | 3 ++- NTCPSession.cpp | 4 ++++ SSUData.cpp | 7 ++++++- TransportSession.h | 2 +- Transports.cpp | 10 ++++++++++ 6 files changed, 25 insertions(+), 3 deletions(-) diff --git a/Event.cpp b/Event.cpp index 72fcc751..e148538e 100644 --- a/Event.cpp +++ b/Event.cpp @@ -5,7 +5,9 @@ namespace i2p { namespace event { +#ifdef WITH_EVENTS EventCore core; +#endif void EventCore::SetListener(EventListener * l) { diff --git a/Event.h b/Event.h index 7998a15b..1ab37847 100644 --- a/Event.h +++ b/Event.h @@ -27,8 +27,9 @@ namespace i2p private: EventListener * m_listener = nullptr; }; - +#ifdef WITH_EVENTS extern EventCore core; +#endif } } void EmitEvent(const EventType & ev); diff --git a/NTCPSession.cpp b/NTCPSession.cpp index e68feb75..f9116e3d 100644 --- a/NTCPSession.cpp +++ b/NTCPSession.cpp @@ -11,7 +11,9 @@ #include "Transports.h" #include "NetDb.h" #include "NTCPSession.h" +#ifdef WITH_EVENTS #include "Event.h" +#endif using namespace i2p::crypto; @@ -606,7 +608,9 @@ namespace transport { if (!m_NextMessage->IsExpired ()) { +#ifdef WITH_EVENTS EmitEvent({{"type", "transport.recvmsg"} , {"ident", GetIdentHashBase64()}, {"number", "1"}}); +#endif m_Handler.PutNextMessage (m_NextMessage); } else diff --git a/SSUData.cpp b/SSUData.cpp index 5e9a62ab..ad38cf25 100644 --- a/SSUData.cpp +++ b/SSUData.cpp @@ -5,7 +5,9 @@ #include "NetDb.h" #include "SSU.h" #include "SSUData.h" +#ifdef WITH_EVENTS #include "Event.h" +#endif namespace i2p { @@ -235,8 +237,11 @@ namespace transport { m_ReceivedMessages.insert (msgID); m_LastMessageReceivedTime = i2p::util::GetSecondsSinceEpoch (); - if (!msg->IsExpired ()) { + if (!msg->IsExpired ()) + { +#ifdef WITH_EVENTS EmitEvent({{"type", "transport.recvmsg"} , {"ident", m_Session.GetIdentHashBase64()}, {"number", "1"}}); +#endif m_Handler.PutNextMessage (msg); } else diff --git a/TransportSession.h b/TransportSession.h index 5d5468cf..5950fb06 100644 --- a/TransportSession.h +++ b/TransportSession.h @@ -65,7 +65,7 @@ namespace transport virtual ~TransportSession () {}; virtual void Done () = 0; - std::string GetIdentHashBase64() const { return m_RemoteIdentity->GetIdentHash().ToBase64(); } + std::string GetIdentHashBase64() const { return m_RemoteIdentity ? m_RemoteIdentity->GetIdentHash().ToBase64() : ""; } std::shared_ptr GetRemoteIdentity () { return m_RemoteIdentity; }; void SetRemoteIdentity (std::shared_ptr ident) { m_RemoteIdentity = ident; }; diff --git a/Transports.cpp b/Transports.cpp index e7062db0..913106ae 100644 --- a/Transports.cpp +++ b/Transports.cpp @@ -5,8 +5,10 @@ #include "NetDb.h" #include "Transports.h" #include "Config.h" +#ifdef WITH_EVENTS #include "Event.h" #include "util.h" +#endif using namespace i2p::data; @@ -232,7 +234,9 @@ namespace transport void Transports::SendMessages (const i2p::data::IdentHash& ident, const std::vector >& msgs) { +#ifdef WITH_EVENTS EmitEvent({{"type" , "transport.sendmsg"}, {"ident", ident.ToBase64()}, {"number", std::to_string(msgs.size())}}); +#endif m_Service.post (std::bind (&Transports::PostMessages, this, ident, msgs)); } @@ -571,7 +575,9 @@ namespace transport auto it = m_Peers.find (ident); if (it != m_Peers.end ()) { +#ifdef WITH_EVENTS EmitEvent({{"type" , "transport.connected"}, {"ident", ident.ToBase64()}, {"inbound", "false"}}); +#endif bool sendDatabaseStore = true; if (it->second.delayedMessages.size () > 0) { @@ -597,7 +603,9 @@ namespace transport session->Done(); return; } +#ifdef WITH_EVENTS EmitEvent({{"type" , "transport.connected"}, {"ident", ident.ToBase64()}, {"inbound", "true"}}); +#endif session->SendI2NPMessages ({ CreateDatabaseStoreMsg () }); // send DatabaseStore std::unique_lock l(m_PeersMutex); m_Peers.insert (std::make_pair (ident, Peer{ 0, nullptr, { session }, i2p::util::GetSecondsSinceEpoch (), {} })); @@ -612,7 +620,9 @@ namespace transport auto remoteIdentity = session->GetRemoteIdentity (); if (!remoteIdentity) return; auto ident = remoteIdentity->GetIdentHash (); +#ifdef WITH_EVENTS EmitEvent({{"type" , "transport.disconnected"}, {"ident", ident.ToBase64()}}); +#endif auto it = m_Peers.find (ident); if (it != m_Peers.end ()) {