c ++ bloomberg api correlationId

时间:2015-09-06 10:16:19

标签: c++ bloomberg

我正在使用bloomberg api编写cpp项目代码 当我需要向Bloomberg数据源发送请求时,我必须发送带有ID的请求。例如:

Execution failed for task ':app:preDexDebug'.
\> com.android.ide.common.process.ProcessException:
org.gradle.process.internal.ExecException: Process 'command 'C:\Program
Files\Java\jdk.1.7.0_80\bin\java.exe'' finished with non-zero exit value 3

bloomberg api提供session->sendRequest(*request, CorrelationId(20)); 以生成ID 此处的ID为20.来自bloomberg数据馈送的结果包含ID 20,以便我可以识别结果和请求。这意味着当我从数据提要中得到结果时,会出现这样的情况:
CorrelationId

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

似乎ID成为指针,它发送指针的值,而不是指针的内容。显然correlationId=[ valueType=POINTER classId=0 value=00731378 ]是一个地址。

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

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

CorrelationId

1 个答案:

答案 0 :(得分:4)

如果我们想生成字符串ID,我们只需发送字符串的地址即可。然后,bloomberg数据馈送将向我们发回地址,其类型为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".