鲲鹏社区首页
中文
注册
开发者
我要评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

offlineCalculate

服务端生成分桶数据,方便线上查询时快速查询结果。

int offlineCalculate(
     DG_TeeCtx *dgTeeCtx, 
     DG_PairList *pairList, 
     DG_BucketMap **bucketMap
)

参数

表1 参数说明

参数名

描述

取值范围

输入/输出

dgTeeCtx

KCAL上下文信息

initTeeCtx成功初始化的结果

输入

pairList

输入的查询结构,为key-value结构体

-

输入

bucketMap

生成的分桶数据

-

输出

表2 DG_PairList结构体

名称

类型

说明

dgPair

key-value结构体数组DG_Pair

-

size

包含的key-value结构体的个数unsigned long

-

表3 DG_Pair结构体

名称

类型

说明

key

key值,类型DG_String

查询结构的key值

value

value值,与key值对应的value值,类型DG_String

查询结构的value值

表4 DG_String结构体

名称

类型

说明

str

char *

定义的DG_String中的数据内容

size

unsigned long

定义的DG_String中的数据内容的长度

返回值

  • 成功:返回0
  • 失败:返回错误码。

错误码

表5 错误码

错误码

错误码值

描述

特殊说明

DG_SUCCESS

0

成功

-

DG_FAILURE

1

失败

向桶内写key-value对失败

DG_ERR_MALLOC_FAIL

51

申请内存失败

-

DG_ERR_MPC_TEE_INVALID_NODE_INFO

4503

无效的tee节点信息

-

DG_ERR_MPC_TEE_INVALID_PARAM

4501

参数校验失败

DgCfgNULLdgTeeCtx二级指针为空

依赖

  • dgCfg依赖DataGuard操作集设置类接口设置KCAL配置信息成功,用设定好的dgCfg作为此接口的入参
  • pirOpts依赖DG_InitPirOpts的成功初始化PIR类算子函数组
  • 依赖的头文件为 #include "data_guard_mpc.h"

示例

#include  "data_guard_mpc.h" 
 
void BuildDgPairList(std::vector<std::pair<std::string, std::string>>& data, DG_PairList **pairList) {
        auto size = data.size();
        *pairList = new DG_PairList;
        (*pairList)->dgPair = new DG_Pair[size];
        for (unsigned long i = 0; i < size; ++i) {
            (*pairList)->dgPair[i].key = BuildPairString(data[i].first);
            (*pairList)->dgPair[i].value = BuildPairString(data[i].second);
        }
        (*pairList)->size = data.size();   
}
    DG_PairList *pairList = nullptr;
   DG_BucketMap *bucketMap = nullptr;
   unsigned int size;
 
   BuildDgPairList(datas, &pairList);
// pirOpts为DG_InitPirOpts成功后的结果,dgTee为initTeeCtx成功后的结果
   rv = pirOpts.offlineCalculate(dgTee, pairList, &bucketMap);
   if (rv != 0) {
        return rv;
   }

调用DG_InitPirOpts成功后的pirOpts来调用offlineCalculate接口