Nabend Leute,
vorab erstmal sollte man erwähnen, dass ich mit Mina arbeite.
Meine Problem:
Meine Programmlogig baut darauf auf, dass ich ByteBuffer[] bzw IoBuffer[] übertragen kann. Ich könnte natürlich nun beim
eigentlich senden ByteBuffer[] zu einem IoBuffer zusammenfassen und dann später wieder in ein ByteBuffer[] Array.
Aber irgendwie fand ich das ziemlich unschön und ansich auch unnötig.
Zur Zeit mache ich es so:
Wenn ein ByteBuffer[] Array reinkommt, synchronisiere ich auf die IoSession und pack dann die ByteBuffers aus dem Array der Reihe nach einzeln in die Warteschlange von Mina.
Das Synchronisieren mach ich, damit ein zweiter Thread nicht gleichzeitig anfängt, ein ByteBuffer[] Array (Also die einzelnen Buffers) der Reihe nach zu schreiben.
Ich könnte mir nämlich vorstellen das könnte problematisch werden, wenn auf der anderen Seite dann die ByteBuffers in der falschen Reihenfolge eintreffen.
Funktionieren tut das alles ganz gut, vorallem weil nun das Programm mehr Flexibilität hat. Angenommen ich will ein ByteBuffer schicken wo bereits Datan drinstehen aus einer Datei, aber das Protokoll muss jetzt noch einen Header erstellen für die Gegenseite, dann würde es ja wenig Sinn machen, einen weiteren IoBuffer zu erstellen wo dann der HEader und die Daten aus dem anderen Buffer reinkommen.
Meine Frage:
Ist das so in Ordnung ? Macht es Sinn lieber kleine Packete der Reihe nach zu schreiben, anstatt ein großes ?
Oder verursacht das verschicken von vielen kleinen Packeten mehr Overhead als das ständige umkopieren von Buffern ?
Gruß, Chris
vorab erstmal sollte man erwähnen, dass ich mit Mina arbeite.
Meine Problem:
Meine Programmlogig baut darauf auf, dass ich ByteBuffer[] bzw IoBuffer[] übertragen kann. Ich könnte natürlich nun beim
eigentlich senden ByteBuffer[] zu einem IoBuffer zusammenfassen und dann später wieder in ein ByteBuffer[] Array.
Aber irgendwie fand ich das ziemlich unschön und ansich auch unnötig.
Zur Zeit mache ich es so:
Wenn ein ByteBuffer[] Array reinkommt, synchronisiere ich auf die IoSession und pack dann die ByteBuffers aus dem Array der Reihe nach einzeln in die Warteschlange von Mina.
Das Synchronisieren mach ich, damit ein zweiter Thread nicht gleichzeitig anfängt, ein ByteBuffer[] Array (Also die einzelnen Buffers) der Reihe nach zu schreiben.
Ich könnte mir nämlich vorstellen das könnte problematisch werden, wenn auf der anderen Seite dann die ByteBuffers in der falschen Reihenfolge eintreffen.
Funktionieren tut das alles ganz gut, vorallem weil nun das Programm mehr Flexibilität hat. Angenommen ich will ein ByteBuffer schicken wo bereits Datan drinstehen aus einer Datei, aber das Protokoll muss jetzt noch einen Header erstellen für die Gegenseite, dann würde es ja wenig Sinn machen, einen weiteren IoBuffer zu erstellen wo dann der HEader und die Daten aus dem anderen Buffer reinkommen.
Meine Frage:
Ist das so in Ordnung ? Macht es Sinn lieber kleine Packete der Reihe nach zu schreiben, anstatt ein großes ?
Oder verursacht das verschicken von vielen kleinen Packeten mehr Overhead als das ständige umkopieren von Buffern ?
Gruß, Chris