C ++ Bloomberg API корреляции ID

Я использую API Bloomberg для кодирования проекта CPP.
Когда мне нужно отправить запрос в фид данных Bloomberg, я должен отправить запрос с идентификатором. Например:

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

CorrelationId предоставляется API Bloomberg для создания идентификатора.
Идентификатор здесь равен 20. Результат, поступающий из фида данных Bloomberg, содержит идентификатор 20, чтобы я мог идентифицировать результат и запрос. Это означает, что когда я получаю результат из потока данных, происходит что-то вроде этого:
correlationId=[ valueType=INT classId=0 value=20 ]

Теперь я хочу сделать идентификатор строки вместо int ID. Например, я хочу создать идентификатор как CorrelationId("US543119ES"),
Если я делаю это, я не получаю ошибку, но идентификатор в результате становится:
correlationId=[ valueType=POINTER classId=0 value=00731378 ]

Кажется, что идентификатор становится указателем и отправляет значение указателя, а не содержимое указателя. очевидно value=00731378 это адрес.

Разве невозможно создать идентификатор строки?
Если возможно, что мне делать?
Я нашел документацию CorrelationId.

Есть два конструктора CorrelationId что я не знаю, как использовать, я не знаю, является ли один из них тем, что мне нужно:

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

3

Решение

Если мы хотим сгенерировать идентификатор строки, мы можем просто отправить адрес строки. Затем канал данных 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".
4

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector