Ich habe hier mal einen Vorschlag abgelegt, wie man cResponsePacket überarbeiten könnte.
Die grobe Idee ist
- es gibt kein cResponsePacket::init* mehr, dafür aber dann drei Konstruktoren, je nach Art von response.
init* taucht zur Zeit nach jedem neuen cResponsePacket auf, das macht keinen Sinn.
- cResponsePacket::finalise() wird private member der Klasse, verschwindet im sonstigen code.
finalise() wird zur Zeit jedesmal aufgerufen, bevor die fertigen Daten verwendet werden. Unmittelbar danach wird das Objekt zerstört.
Warum dann nicht das einfach intern aufrufen.
- die neue Version soll binär kompatibel die Daten übertragen - 1:1 gleiche Bytes.
Das macht das debuggen wirklich einfacher.
- die Speicherverwaltung übernimmt neu dann std::vector<uint8_t>, keine lokalen Baustellen mit Speicher mehr in der Klasse.
- es gibt einen neuen Ordner /tests im sourcecode, der solche tiefen Eingriffe im Plugin isoliert testen lässt.
- Ausführungsgeschwindigkeit etwa mit der alten Klasse vergleichbar. Siehe neuer Ordner tests, da gibt es dafür ein Programm.
Aber wenn(!) man diese Klasse cResponsePacket überarbeiten würde, dann müsste man das Gegenstück, cRequestpacket ebenso anfassen müssen.
Was denkt ihr? Weiter verfolgen oder verwerfen?
Ist noch nicht am lebenden Objekt getestet.