c++ bloomberg api correlationId

c++ bloomberg api correlationId

本文关键字:correlationId api bloomberg c++      更新时间:2023-10-16

我正在使用bloomberg api编写一个cpp项目。
当我需要向彭博数据提要发送请求时,我必须发送带有ID的请求。例如:

session->sendRequest(*request, CorrelationId(20));

CorrelationId由bloomberg api提供,用于生成ID。
这里的ID是20。来自bloomberg数据提要的结果包含ID 20,以便我可以标识结果和请求。这意味着当我从数据提要获得结果时,会出现如下内容:
correlationId=[ valueType=INT classId=0 value=20 ]

现在我想创建一个字符串ID,而不是int ID。例如,我想生成一个ID: CorrelationId("US543119ES")
如果我这样做,我没有得到错误,但结果中的ID变成了:
correlationId=[ valueType=POINTER classId=0 value=00731378 ]

看起来ID变成了一个指针,它发送的是指针的值,而不是指针的内容。显然value=00731378是一个地址。

生成字符串ID是不可能的吗?
如果可能的话,我该怎么办?
我找到了CorrelationId的文档。

有两个CorrelationId的构造函数,我不知道如何使用,我不知道是否其中一个是我需要的:

CorrelationId (void *value, int classId=0);
template<typename TYPE >
CorrelationId (const TYPE &smartPtr, void *pointerValue, int classId=0);

如果我们想要生成一个字符串ID,我们可以只发送字符串的地址。然后彭博数据馈送将向我们发回地址,其类型为void *。所以我们只需要把它转换成char *。下面是一个例子:

// sending
const char * id = "abc";
session->sendRequest(*request, CorrelationId(const_cast<char *>(id))); // it can't take "const char *"
// handling response
cout << (char *)message.correlationId().asPointer(); // it will show "abc".