Code: Select all
class Transmitter(channel: AsynchronousSocketChannel) {
def transmit(bytes: Array[Byte])(onComplete: Consumer[String]): Unit = {
val buffer = ByteBuffer.wrap(bytes)
object handler extends CompletionHandler[Integer, Null] {
override def completed(result: Integer, attachment: Null): Unit = {
if result == 0 then onComplete.accept("Failure: connection closed prematurely")
else if buffer.hasRemaining then channel.write(buffer, null, handler)
else onComplete.accept("Successful")
}
override def failed(exc: Throwable, attachment: Null): Unit = onComplete.accept("Failure: connection error")
}
channel.write(buffer, null, handler)
}
}
Ich sehe also keinen Weg So senden Sie den verbleibenden Inhalt des Puffer, ohne den Puffer zu lesen, und es kann nicht zuverlässig gelesen werden. Sequentiell aufgerufen), aber eine Sichtbarkeit: Der Thread, der die abgeschlossene -Methode ausführt abgeschlossen die a Vorzeit
Code: Select all
read