in src/tick_cursor.cpp [70:92]
NextResult TickCursor::nextIfAvailable() {
if (cursor_ == nullptr)
THROW("Cursor is null.");
if (cursor_->isClosed())
THROW("Cursor is closed.");
if (cursor_->isAtEnd())
return NextResult::END_OF_CURSOR;
if (instrument_message_ == nullptr)
instrument_message_ = std::shared_ptr<DxApi::InstrumentMessage>(new DxApi::InstrumentMessage());
bool has_next = cursor_->nextIfAvailable(instrument_message_.get());
if (has_next) {
decodeCurrentMessage();
return NextResult::OK;
}
return instrument_message_->cursorState >= CursorState::END ?
NextResult::END_OF_CURSOR :
NextResult::UNAVAILABLE;
}