Idee für den Mechanismus: Anstatt das gesamte Archiv in den Arbeitsspeicher zu laden und dann zu verschicken, wird ein Buffer fester Größe (bspw. 32kB oder 1MB) gefüllt und dessen Inhalt als einzelne Pakete verschickt. Anders als bisher enthalten die Paketheader folgende Attribute: In wie viele Teile das Archiv zerteilt wird, der wie vielte Teil dieses Paket ist. Ansatzpunkte: - neue Klasse von TransferDescription ableiten, die zusätzliche Infos enthält - XMPPTransmitter.sendProjectArchive() benötigt neue (und alte) Senderoutine - XMPPTransmitter.receiveArchive() benötigt neue (und alte) Empfangsroutine TransferDescription: - neuen Typ anlegen (Konstante) - in neuer Klasse 2 Attribute anlegen (+ Methoden entsprechend anpassen) Mechanismus im Pseudecode: XMPPTransmitter.sendProjectArchive(): if(client hat neue Saros-Version): Buffer anlegen (Größe=Chunksize) while(noch Archivstücke offen): Buffer füllen neues TransferDescription-Objekt anlegen Bufferinhalt+Description versenden else: //altes Verfahren Buffer anlegen (Größe=Archivgröße) Buffer füllen (gesamte Datei) altes TransferDescription-Objekt anlegen Bufferinhalt+Description versenden XMPPTransmitter.receiveArchive(): Zwei PacketFilter samt SarosPacketCollector besorgen (um auf neu und alt zu lauschen) (nötig??) abwarten, bis einer von beiden etwas empfangen hat if(Paket neuen Typs angekommen): Temporäre Datei anlegen (RandomAccessFile) while(noch offene pakete): Paketinhalt an richtige Stelle in Datei schreiben auf neues Paket warten InputStream zum FileHandle zurückgeben else: //altes verfahren Paket annehmen Zugehörigen Stream zurückgeben Offen: Wie behandeln wir den Monitor, der dem Fortschrittsbalken Rückmeldung gibt?