33 m_pSocket->setSocket ( nSocket, MSocketDevice::Stream );
37 struct linger ling = {1, 1};
39 if ( setsockopt(
socket(), SOL_SOCKET, SO_LINGER, (
const char *)&ling,
41 LOG(VB_GENERAL, LOG_ERR,
42 "BufferedSocketDevice: setsockopt - SO_LINGER: " +
ENO);
137 QHostAddress hostAddress, quint16 nPort)
170 qlonglong maxToRead = 0;
176 if ( maxToRead <= 0 )
180 qlonglong nbytes =
m_pSocket->bytesAvailable();
182 QByteArray *a =
nullptr;
186 a =
new QByteArray();
190 a->data(), maxToRead ? std::min(nbytes, maxToRead) : nbytes);
192 if (( nread > 0 ) && ( nread != a->size() ))
203 for(
long n = 0; n < a->count(); n++ )
204 msg += QString(
"%1").arg(a->at(n));
205 LOG(VB_GENERAL, LOG_DEBUG, msg);
260 bool osBufferFull =
false;
277 int s = a->size() - j;
279 while ( a && i+s < out.size() )
281 memcpy( out.data()+i, a->data()+j, s );
286 s = a ? a->size() : 0;
292 nwritten =
m_pSocket->writeBlock( out.data(), i );
349 m_bufRead.consumeBytes( (qulonglong)index,
nullptr );
386 std::chrono::milliseconds msecs,
bool *pTimeout )
388 bool bTimeout =
false;
424 nBytes =
m_pSocket->waitForMore( msecs, &bTimeout );
426 if (pTimeout !=
nullptr)
427 *pTimeout = bTimeout;
472 if ( data ==
nullptr && maxlen != 0 )
480 if ( maxlen >= (qulonglong)
m_bufRead.size() )
500 bool writeNow = ( (
m_nWriteSize + len >= 1400) || (len > 512) );
502 if ( a && (a->size() + len < 128) )
508 memcpy( a->data()+i, data, len );
513 m_bufWrite.push_back(
new QByteArray(data, len));
529 const char *data, qulonglong len)
531 qlonglong nWritten = 0;
540 nWritten =
m_pSocket->writeBlock( data, len );
574 std::array <char,2> buf {
static_cast<char>(ch), 0 };
576 return WriteBlock(buf.data(), 1) == 1 ? ch : -1;
643 bool bTimeout =
false;
650 LOG(VB_HTTP, LOG_DEBUG,
"Can't Read Line... Waiting for more." );
655 if ( timer.
elapsed() >= msecs )
658 LOG(VB_HTTP, LOG_INFO,
"Exceeded Total Elapsed Wait Time." );