bool LocalCommunication::sendRaw(QByteArray data, QLocalSocket *socket)
{
    if (data.length() > MAX_PKT_SIZE)
        return false;

    QByteArray header = QString::number(data.length())
            .rightJustified(numOfDigits(MAX_PKT_SIZE), '0').toUtf8();

    int written = 0;
    while (written < header.length()) {
        int bytes = socket->write(header);

        if (bytes > -1)
            written += bytes;
        else
            return false;
    }

    written = 0;
    while (written < data.length()) {
        int bytes = socket->write(data);

        if (bytes > -1)
            written += bytes;
        else
            return false;
    }

    return true;
}
QByteArray LocalCommunication::receiveRaw(QLocalSocket *socket)
{
    QByteArray header;
    int bytes = QString(numOfDigits(MAX_PKT_SIZE), '0').toUtf8().length();

    while (header.length() < bytes) {
        header.append(socket->read(bytes - header.length()));
        socket->waitForReadyRead(100);
    }

    QString sizeStr = QString::fromUtf8(header);
    bool ok;
    int size = sizeStr.toInt(&ok);

    if (ok)
    {
        QByteArray msgData;

        while (msgData.length() < size) {
            msgData.append(socket->read(size - msgData.length()));
        }

        return msgData;
    } else {
        return QByteArray();
    }
}
Beispiel #3
0
	void bucketSort(int a[])
	{
		int digits=numOfDigits(a);
		for(int i=1;i<=digits;i++)
		{
			distributeElments(a,b,i);
			collectElments(a,b);
			if(i!=digits)
				zeroBucket(b);
		}
	}
Beispiel #4
0
int isArmstrong(int num)
{
	int d,r,sum=0,num2;
	num2=num;
	d=numOfDigits(num);
	while(num!=0)
	{
		r=num%10;
		sum=sum+pow(r,d);
		num=num/10;
	}
	if(sum==num2)
		return TRUE;
	else
		return FALSE;
}