openYuanrong进阶教程——接口免序列化与反序列化

📅 2026/6/26 18:12:02
openYuanrong进阶教程——接口免序列化与反序列化
openYuanrong 官网官网gitcode仓库仓库接口免序列化与反序列化openYuanrong 支持在使用Put及invoke接口时直接传入YR::Buffer类型的参数此时可免序列化。在使用Get接口时支持直接返回YR::Buffer类型此时可免反序列化。这种方式可以有效提高接口性能。在Put接口中传入的YR::Buffer参数不能为空指针或 size 为0否则会抛出异常 1001。使用场景Put接口传入YR::Buffer类型的参数使用Get接口获取YR::Buffer类型的返回值。Cpp 程序跨语言调用 Python 函数时在invoke接口中传入YR::Buffer类型的参数调用Get接口获取YR::Buffer类型的返回值。使用示例使用 Put/Get 接口示例使用Put接口传入YR::Buffer类型的参数然后调用Get接口获取YR::Buffer类型的返回值。示例代码:#include string #include yr/yr.h int main(int argc, char *argv[]) { YR::Init(YR::Config{}, argc, argv); YR::CreateParam param; param.writeMode YR::WriteMode::NONE_L2_CACHE_EVICT; param.consistencyType YR::ConsistencyType::PRAM; std::string str success; YR::Buffer yrBuf(str.data(), str.length()); auto resRef YR::Put(yrBuf, param); auto value YR::Get(resRef); std::string result std::string(static_castconst char*(value-ImmutableData()), value-GetSize()); std::cout result std::endl; YR::Finalize(); return 0; }Cpp 程序中调用 Python 函数这是一个 Cpp 程序跨语言调用 Python 函数的示例在invoke接口中传入YR::Buffer类型参数然后使用Get接口获取YR::Buffer类型的返回值。示例代码importyrdefecho(str):returnstr#include string #include yr/yr.h int main(int argc, char *argv[]) { YR::Init(YR::Config{}, argc, argv); YR::CreateParam param; param.writeMode YR::WriteMode::NONE_L2_CACHE_EVICT; param.consistencyType YR::ConsistencyType::PRAM; std::string str success; YR::Buffer yrBuf(str.data(), str.length()); auto ret YR::PyFunctionYR::Buffer(common, echo) .SetUrn(sn:cn:yrk:default:function:0-yr-stpython:$latest) .Invoke(yrBuf); auto value YR::Get(ret); std::string result std::string(static_castconst char*(value-ImmutableData()), value-GetSize()); std::cout result std::endl; YR::Finalize(); return 0; }