Non preoccuparti...alla fine il problema è generale.

Anche con bytesAvaiable, resterebbe l'incognita di readyRead() che se nonn ho capito male partirebbe ogni volta che arrivano dati.
Al massimo potrei cambiare così
codice:
void read(){
   if(s->bytesAvaiable() < 360)
       return;
   qint64 len = s->read(buffer, 360);
   this->saveData();
}
Giusto?