protected static RootMessage recvDelimited(InputStream in) throws IOException {
		byte[] lenBuf = recvAll(in, Integer.BYTES);
		if (lenBuf == null) {
			return null;
		}
		int len = ByteBuffer.wrap(lenBuf).getInt();
		byte[] datBuf = recvAll(in, len);
		if (datBuf == null) {
			return null;
		}
		RootMessage msg = RootMessage.parseFrom(datBuf);
		return msg;
	}
Create a handler

<p>
Note it is common for this to be constructed by a TCP <em>client</em>.

@param plugin the Trace RMI plugin
@param socket the socket to the back-end debugger
@throws IOException if there is an issue with the I/O streams
Ghidra/Debug/Debugger-rmi-trace/src/main/java/ghidra/app/plugin/core/debug/service/tracermi/TraceRmiHandler.java