Example #1
0
void CGroupClient::cutMessageFromBuffer()
{
	QByteArray rest;

	if (currentMessageLen == 0) {
		int index = buffer.indexOf(' ');

		if (index == -1) {
			print_debug(DEBUG_GROUP, "Incoming buffer contains broken message");
			// zap the buffer in this case, and hope for the best
			buffer.clear();
			return;
		}

		QByteArray len = buffer.left(index);
		currentMessageLen = len.toInt();
//		print_debug(DEBUG_GROUP, "Incoming buffer length: %i, incoming message length %i",
//				buffer.size(), currentMessageLen);

		rest = buffer.right( buffer.size() - index - 1);
		buffer = rest;

		if (buffer.size() == currentMessageLen)
			cutMessageFromBuffer();

		return;
	}

//	print_debug(DEBUG_GROUP, "cutting off one message case");
	getParent()->incomingData(this, buffer.left(currentMessageLen));
	rest = buffer.right( buffer.size() - currentMessageLen);
	buffer = rest;
	currentMessageLen = 0;
}
Example #2
0
void CGroupClient::cutMessageFromBuffer()
{
  QByteArray rest;

  if (currentMessageLen == 0) {
    int index = buffer.indexOf(' ');

    QString len = buffer.left(index + 1);
    currentMessageLen = len.toInt();
//              qDebug( "Incoming buffer length: %i, incoming message length %i",
//                              buffer.size(), currentMessageLen);

    rest = buffer.right( buffer.size() - index - 1);
    buffer = rest;

    if (buffer.size() == currentMessageLen)
      cutMessageFromBuffer();

    //printf("returning from cutMessageFromBuffer\r\n");
    return;
  }

//      qDebug( "cutting off one message case");
  getParent()->incomingData(this, buffer.left(currentMessageLen));
  rest = buffer.right( buffer.size() - currentMessageLen);
  buffer = rest;
  currentMessageLen = 0;
}
Example #3
0
void CGroupClient::dataIncoming()
{
	QByteArray message;
	QByteArray rest;

//	print_debug(DEBUG_GROUP, "Incoming Data [conn %i, IP: %s]", socketDescriptor(),
//			(const char *) peerAddress().toString().toLocal8Bit() );

	QByteArray tmp = readAll();

	buffer += tmp;

//	print_debug(DEBUG_GROUP, "RAW data buffer: %s", (const char *) buffer);

	while ( currentMessageLen < buffer.size()) {
//		print_debug(DEBUG_GROUP, "in data-receiving cycle, buffer %s", (const char *) buffer);
		cutMessageFromBuffer();
	}
}