@Override public void sendStreamTo (Object connectionInformation, InputStream stream, int size, String type, Object additionalInformation) { final int streamId = (int)(Math.random() * Integer.MAX_VALUE); Packet.StreamHeader streamHeader = new Packet.StreamHeader(); streamHeader.additionalInfo = additionalInformation; streamHeader.streamId = streamId; streamHeader.type = type; streamHeader.streamLength = size; sendTo(connectionInformation, streamHeader, true); // Send data in 512 byte chunks. ((Connection)connectionInformation).addListener(new InputStreamSender(stream, 1024) { @Override protected Object next (byte[] bytes) { Packet.StreamChunk chunkPacket = new Packet.StreamChunk(); chunkPacket.streamId = streamId; chunkPacket.chunkBytes = bytes; return chunkPacket; } }); }