public synchronized void record(ByteBuffer block, int offset)
		throws IOException {
		if (this.data == null || offset == 0) {
			this.data = ByteBuffer.allocate(this.length);
		}

		int pos = block.position();
		this.data.position(offset);
		this.data.put(block);
		block.position(pos);

		if (block.remaining() + offset == this.length) {
			this.data.rewind();
			logger.trace("Recording " + this + "...");
			this.bucket.write(this.data, this.offset);
			this.data = null;
		}
	}