/* * ===================================================================================== * * Filename: failed_msg.cpp * * Description: * * Version: 1.0 * Created: 2021年04月12日 16时10分53秒 * Revision: none * Compiler: gcc * * Author: Li Chao (), lichao@aiotlink.com * Organization: * * ===================================================================================== */ #include "failed_msg.h" FailedMsgQ::Func FailedMsgQ::PrepareSender(const std::string &remote, Msg const &msg) { msg.AddRef(); return [remote, msg](void *valid_sock) { assert(valid_sock); ShmSocket &sock = *static_cast(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; }; }