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(); } }
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); } }
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; }