/*
|
* =====================================================================================
|
*
|
* 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<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;
|
};
|
}
|