void CDaemon::handleClientRead()
{
	QTcpSocket * socket = qobject_cast<QTcpSocket *>(sender());

	while(socket->bytesAvailable() > 8)
	{
		QDataStream stream(socket);
		quint64 size;

		stream >> size;
		if(socket->bytesAvailable() >= size)
		{
			QByteArray buffer(socket->read(size));
			QDataStream bStream(buffer);
			quint8 opcode;

			bStream >> opcode;
			switch(opcode)
			{
			case OPCODE_ADD:
				handleAdd(bStream); break;
			case OPCODE_REMOVE:
				handleRemove(bStream); break;
			case OPCODE_START:
				handleStart(bStream); break;
			case OPCODE_STOP:
				handleAbort(bStream); break;
			case OPCODE_QUEUE:
				handleQueue(bStream); break;
			default:
				qWarning() << "Unhandled packet:" << quint32(opcode); break;
			}
		}
	}
Example #2
0
void handlePacket(void* packet, uint8_t type){
  switch(type){
    case ROLL_CALL:
      handleRollCall();
      break;
    case OPEN_FILE:
      handleOpenFile((OpenFilePacket*)packet);
      break;
    case WRITE_BLOCK:
      handleWriteBlock((WriteBlockPacket*)packet);
      break;
    case COMMIT_REQUEST:
      handleCommitRequest((CommitRequestPacket*)packet);
      break;
    case COMMIT:
      handleCommit((CommitPacket*)packet);
      break;
    case ABORT:
      handleAbort((AbortPacket*)packet);
      break;
  }
}