lichao
2021-04-23 dc86ace85e437ecb8a2e728e4dce36d02bbb8a6e
src/failed_msg.cpp
@@ -17,18 +17,13 @@
 */
#include "failed_msg.h"
FailedMsgQ::Func FailedMsgQ::PrepareSender(const std::string &remote, Msg const &msg)
FailedMsgQ::Func FailedMsgQ::PrepareSender(const std::string &remote, Msg msg)
{
   msg.AddRef();
   return [remote, msg](void *valid_sock) {
   return [remote, msg](void *valid_sock) mutable {
      assert(valid_sock);
      ShmSocket &sock = *static_cast<ShmSocket *>(valid_sock);
      bool r = sock.Send(remote.data(), msg);
      //TODO check remote removed.
      if (r && msg.IsCounted()) {
         auto tmp = msg; // Release() is not const, but it's safe to release.
         tmp.Release(sock.shm());
      }
      return r;
      DEFER1(msg.Release(sock.shm())); // Release() is not const, but it's safe to release.
      return sock.Send(remote.data(), msg);
   };
}