Small SendableMediaAnnouncement cleanup
authorLoic Blot <loic.blot@unix-experience.fr>
Thu, 30 Jul 2015 21:14:05 +0000 (23:14 +0200)
committerest31 <MTest31@outlook.com>
Thu, 30 Jul 2015 23:01:00 +0000 (01:01 +0200)
-> 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

src/server.cpp

index 33cba17e51bdb0832b044d2ff29ad27dcba6d1ec..70fe5ae2c6fc98e4d9927ab75bd77662ac04bbb6 100644 (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");