c ++ serialize std :: error_code用于通过网络传输还是保存到磁盘?

时间:2013-10-23 16:59:08

标签: c++ serialization c++11 std error-code

我想序列化一个std :: error_code,通过网络传输它并再次反序列化它。无论如何都要这样做,还是需要一个转换表(switch-case),它将整数值映射到std :: error_code?

int encode_error(const std::error_code& ec);
std::error_code decode_error(int value);

感谢。

2 个答案:

答案 0 :(得分:2)

您需要使用std::error_condition,这是一个可移植的错误代码。

答案 1 :(得分:1)

std::error_code是两件事的组合:

  1. 整数值(通常从某种枚举映射);和
  2. 指向生成它们的类别的指针。
  3. 在一般情况下序列化它们非常困难,因为您需要知道可以使用的所有可能类别,然后传输哪个类别以及值。接收器然后需要在本地查找匹配类别,并使用它来创建错误代码。

    更简单的情况是获取消息,类别名称和错误值,然后发送。将其转换回error_code是不切实际的,但根据您的使用情况,这可能就足够了。

    如果你想从你控制的自定义类别序列化error_codes要简单得多,因为你不需要确定错误来自哪个类别,所以序列化它应该是微不足道的。

相关问题