Small SendableMediaAnnouncement cleanup

-> Remove the SendableMediaAnnouncement struct
-> Forge the packet directly in the m_media loop, spare one loop and the construction of a vector
-> Use preincrement to spare iterator copies
master
Loic Blot 2015-07-30 23:14:05 +02:00 committed by est31
parent eb3aac20c8
commit 05fe9ab2d4
1 changed files with 6 additions and 28 deletions

View File

@ -2330,44 +2330,22 @@ void Server::fillMediaCache()
} }
} }
struct SendableMediaAnnouncement
{
std::string name;
std::string sha1_digest;
SendableMediaAnnouncement(const std::string &name_="",
const std::string &sha1_digest_=""):
name(name_),
sha1_digest(sha1_digest_)
{}
};
void Server::sendMediaAnnouncement(u16 peer_id) void Server::sendMediaAnnouncement(u16 peer_id)
{ {
DSTACK(__FUNCTION_NAME); DSTACK(__FUNCTION_NAME);
verbosestream<<"Server: Announcing files to id("<<peer_id<<")" verbosestream << "Server: Announcing files to id(" << peer_id << ")"
<<std::endl; << std::endl;
std::vector<SendableMediaAnnouncement> file_announcements;
for (std::map<std::string, MediaInfo>::iterator i = m_media.begin();
i != m_media.end(); i++){
// Put in list
file_announcements.push_back(
SendableMediaAnnouncement(i->first, i->second.sha1_digest));
}
// Make packet // Make packet
std::ostringstream os(std::ios_base::binary); std::ostringstream os(std::ios_base::binary);
NetworkPacket pkt(TOCLIENT_ANNOUNCE_MEDIA, 0, peer_id); NetworkPacket pkt(TOCLIENT_ANNOUNCE_MEDIA, 0, peer_id);
pkt << (u16) file_announcements.size(); pkt << (u16) m_media.size();
for (std::vector<SendableMediaAnnouncement>::iterator for (std::map<std::string, MediaInfo>::iterator i = m_media.begin();
j = file_announcements.begin(); i != m_media.end(); ++i) {
j != file_announcements.end(); ++j) { pkt << i->first << i->second.sha1_digest;
pkt << j->name << j->sha1_digest;
} }
pkt << g_settings->get("remote_media"); pkt << g_settings->get("remote_media");