90 m_pSocket = std::make_unique<QTcpSocket>();
92 QString host = QString::fromStdString(
m_info.data_host());
93 quint16 port =
static_cast<quint16
>(
m_info.data_port());
95 if (host.isEmpty() || port == 0) {
97 throw std::runtime_error(
"[lsl::stream_inlet] Invalid data host or port in stream_info");
102 if (!
m_pSocket->waitForConnected(5000)) {
105 throw std::runtime_error(std::string(
"[lsl::stream_inlet] Failed to connect to outlet: ") + err.toStdString());
109 if (!
m_pSocket->waitForReadyRead(5000)) {
111 throw std::runtime_error(
"[lsl::stream_inlet] Timeout waiting for handshake from outlet");
115 while (header.size() < 8) {
117 if (!
m_pSocket->waitForReadyRead(5000)) {
121 header.append(
m_pSocket->read(8 - header.size()));
124 if (header.size() < 8 || header.left(4) != QByteArray(
"LSL1", 4)) {
126 throw std::runtime_error(
"[lsl::stream_inlet] Invalid handshake from outlet");
130 int headerChannels = 0;
131 std::memcpy(&headerChannels, header.constData() + 4,
sizeof(
int));
133 qDebug() <<
"[lsl::stream_inlet] Warning: outlet reports" << headerChannels
191 std::vector<std::vector<float>> chunk;
206 if (nCompleteSamples == 0) {
210 chunk.reserve(nCompleteSamples);
213 for (
int s = 0; s < nCompleteSamples; ++s) {
216 chunk.push_back(std::move(sample));