在启用了arenas的情况下从protobuf消息中删除成员消息的惯用方法

时间:2016-05-29 19:40:39

标签: c++ protocol-buffers

我想有条件地删除成员消息的协议缓冲消息。该消息可能已经或可能未在舞台上创建。

有没有人知道正确的方法来有效地做到这一点?

这就是我所拥有的:

void erase_nested(testing::Exception& emsg)
{
    if(emsg.GetArena()) {
        // discard pointer
        emsg.unsafe_arena_release_nested();
    }
    else {
        delete emsg.release_nested();
    }
}

我在文档中找不到任何明确的内容。

供参考,原型文件:

syntax = "proto3";

package testing;

option cc_generic_services = true;
option cc_enable_arenas = true;

/// Carry a nested exception across a comms link
message Exception
{
    string name = 1;
    string what = 2;
    Exception nested = 3;
}

0 个答案:

没有答案