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
This commit is contained in:
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)
{
DSTACK(__FUNCTION_NAME);
verbosestream<<"Server: Announcing files to id("<<peer_id<<")"
<<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));
}
verbosestream << "Server: Announcing files to id(" << peer_id << ")"
<< std::endl;
// Make packet
std::ostringstream os(std::ios_base::binary);
NetworkPacket pkt(TOCLIENT_ANNOUNCE_MEDIA, 0, peer_id);
pkt << (u16) file_announcements.size();
pkt << (u16) m_media.size();
for (std::vector<SendableMediaAnnouncement>::iterator
j = file_announcements.begin();
j != file_announcements.end(); ++j) {
pkt << j->name << j->sha1_digest;
for (std::map<std::string, MediaInfo>::iterator i = m_media.begin();
i != m_media.end(); ++i) {
pkt << i->first << i->second.sha1_digest;
}
pkt << g_settings->get("remote_media");