public ConnectionMetadata(InputStream rawInputStream, OutputStream rawOutputStream)
Creates a DataInputStream and a DataOutputStream from the given raw streams and
pushes these as the current streams to use for communication for a connection.
public Tuple<DataInputStream,DataOutputStream> pushNewStreams()
Creates a new buffered DataInputStream and DataOutputStream tuple to use for
the connection. This is used for the COPY sub-protocol to prevent mixing the buffers used for
the normal protocol with the COPY protocol, as that would cause multithreaded access to those
buffers.