virtual QPair<QByteArray, bool> GetBulkData(int) { QByteArray data(1024, 0); CreateDescriptor(data); SetTriggered(); int my_idx = GetGroup().GetIndex(GetLocalId()); int bad = Random::GetInstance().GetInt(0, GetGroup().Count()); while(bad == my_idx) { bad = Random::GetInstance().GetInt(0, GetGroup().Count()); } qDebug() << my_idx << "setting bad hash at" << bad; const Descriptor &cdes = GetMyDescriptor(); QVector<QByteArray> hashes = cdes.XorMessageHashes(); hashes[bad] = Hash().ComputeHash(data); Descriptor descriptor(cdes.Length(), cdes.PublicDh(), hashes, cdes.CleartextHash()); SetMyDescriptor(descriptor); QByteArray my_desc; QDataStream desstream(&my_desc, QIODevice::WriteOnly); desstream << GetMyDescriptor(); return QPair<QByteArray, bool>(my_desc, false); }
BulkRound::Descriptor BulkRound::ParseDescriptor(const QByteArray &data) { Descriptor descriptor; QDataStream desstream(data); desstream >> descriptor; _expected_bulk_size += descriptor.Length(); return descriptor; }
QPair<QByteArray, bool> BulkRound::GetBulkData(int max) { QPair<QByteArray, bool> pair = GetData(max); const QByteArray &data = pair.first; if(data.size() == 0) { return QPair<QByteArray, bool>(QByteArray(), false); } CreateDescriptor(pair.first); QByteArray my_desc; QDataStream desstream(&my_desc, QIODevice::WriteOnly); desstream << GetMyDescriptor(); return QPair<QByteArray, bool>(my_desc, false); }