|
|
@ -5,8 +5,10 @@ |
|
|
|
#include "NetDb.h" |
|
|
|
#include "NetDb.h" |
|
|
|
#include "Transports.h" |
|
|
|
#include "Transports.h" |
|
|
|
#include "Config.h" |
|
|
|
#include "Config.h" |
|
|
|
|
|
|
|
#ifdef WITH_EVENTS |
|
|
|
#include "Event.h" |
|
|
|
#include "Event.h" |
|
|
|
#include "util.h" |
|
|
|
#include "util.h" |
|
|
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
using namespace i2p::data; |
|
|
|
using namespace i2p::data; |
|
|
|
|
|
|
|
|
|
|
@ -232,7 +234,9 @@ namespace transport |
|
|
|
|
|
|
|
|
|
|
|
void Transports::SendMessages (const i2p::data::IdentHash& ident, const std::vector<std::shared_ptr<i2p::I2NPMessage> >& msgs) |
|
|
|
void Transports::SendMessages (const i2p::data::IdentHash& ident, const std::vector<std::shared_ptr<i2p::I2NPMessage> >& msgs) |
|
|
|
{ |
|
|
|
{ |
|
|
|
|
|
|
|
#ifdef WITH_EVENTS |
|
|
|
EmitEvent({{"type" , "transport.sendmsg"}, {"ident", ident.ToBase64()}, {"number", std::to_string(msgs.size())}}); |
|
|
|
EmitEvent({{"type" , "transport.sendmsg"}, {"ident", ident.ToBase64()}, {"number", std::to_string(msgs.size())}}); |
|
|
|
|
|
|
|
#endif |
|
|
|
m_Service.post (std::bind (&Transports::PostMessages, this, ident, msgs)); |
|
|
|
m_Service.post (std::bind (&Transports::PostMessages, this, ident, msgs)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -571,7 +575,9 @@ namespace transport |
|
|
|
auto it = m_Peers.find (ident); |
|
|
|
auto it = m_Peers.find (ident); |
|
|
|
if (it != m_Peers.end ()) |
|
|
|
if (it != m_Peers.end ()) |
|
|
|
{ |
|
|
|
{ |
|
|
|
|
|
|
|
#ifdef WITH_EVENTS |
|
|
|
EmitEvent({{"type" , "transport.connected"}, {"ident", ident.ToBase64()}, {"inbound", "false"}}); |
|
|
|
EmitEvent({{"type" , "transport.connected"}, {"ident", ident.ToBase64()}, {"inbound", "false"}}); |
|
|
|
|
|
|
|
#endif |
|
|
|
bool sendDatabaseStore = true; |
|
|
|
bool sendDatabaseStore = true; |
|
|
|
if (it->second.delayedMessages.size () > 0) |
|
|
|
if (it->second.delayedMessages.size () > 0) |
|
|
|
{ |
|
|
|
{ |
|
|
@ -597,7 +603,9 @@ namespace transport |
|
|
|
session->Done(); |
|
|
|
session->Done(); |
|
|
|
return; |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
#ifdef WITH_EVENTS |
|
|
|
EmitEvent({{"type" , "transport.connected"}, {"ident", ident.ToBase64()}, {"inbound", "true"}}); |
|
|
|
EmitEvent({{"type" , "transport.connected"}, {"ident", ident.ToBase64()}, {"inbound", "true"}}); |
|
|
|
|
|
|
|
#endif |
|
|
|
session->SendI2NPMessages ({ CreateDatabaseStoreMsg () }); // send DatabaseStore
|
|
|
|
session->SendI2NPMessages ({ CreateDatabaseStoreMsg () }); // send DatabaseStore
|
|
|
|
std::unique_lock<std::mutex> l(m_PeersMutex); |
|
|
|
std::unique_lock<std::mutex> l(m_PeersMutex); |
|
|
|
m_Peers.insert (std::make_pair (ident, Peer{ 0, nullptr, { session }, i2p::util::GetSecondsSinceEpoch (), {} })); |
|
|
|
m_Peers.insert (std::make_pair (ident, Peer{ 0, nullptr, { session }, i2p::util::GetSecondsSinceEpoch (), {} })); |
|
|
@ -612,7 +620,9 @@ namespace transport |
|
|
|
auto remoteIdentity = session->GetRemoteIdentity (); |
|
|
|
auto remoteIdentity = session->GetRemoteIdentity (); |
|
|
|
if (!remoteIdentity) return; |
|
|
|
if (!remoteIdentity) return; |
|
|
|
auto ident = remoteIdentity->GetIdentHash (); |
|
|
|
auto ident = remoteIdentity->GetIdentHash (); |
|
|
|
|
|
|
|
#ifdef WITH_EVENTS |
|
|
|
EmitEvent({{"type" , "transport.disconnected"}, {"ident", ident.ToBase64()}}); |
|
|
|
EmitEvent({{"type" , "transport.disconnected"}, {"ident", ident.ToBase64()}}); |
|
|
|
|
|
|
|
#endif |
|
|
|
auto it = m_Peers.find (ident); |
|
|
|
auto it = m_Peers.find (ident); |
|
|
|
if (it != m_Peers.end ()) |
|
|
|
if (it != m_Peers.end ()) |
|
|
|
{ |
|
|
|
{ |
|
|
|