view src/main/java/org/monetdb/jdbc/MonetDownloadHandle.java @ 513:d771bfdd5288 onclient

We were sending one newline too many
author Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
date Mon, 23 Aug 2021 09:10:39 +0200 (2021-08-23)
parents 13b48891ac54
children
line wrap: on
line source
package org.monetdb.jdbc;

import org.monetdb.mcl.net.MapiSocket;

import java.io.*;

public class MonetDownloadHandle {
	private final MapiSocket server;
	private MapiSocket.DownloadStream stream = null;
	private String error = null;
	boolean closed = false;

	MonetDownloadHandle(MapiSocket server) {
		this.server = server;
	}

	public void sendError(String errorMessage) throws IOException {
		if (error != null) {
			throw new IOException("another error has already been sent: " + error);
		}
		error = errorMessage;
	}

	public InputStream getStream() throws IOException {
		if (error != null) {
			throw new IOException("cannot receive data after error has been sent");
		}
		if (stream == null) {
			stream = server.downloadStream();
			server.getOutputStream().flush();
		}
		return stream;
	}

	public boolean hasBeenUsed() {
		return error != null || stream != null;
	}

	public String getError() {
		return error;
	}

	public void close() throws IOException {
		if (closed) {
			return;
		}
		if (stream != null) {
			stream.close();
		}
		closed = true;
	}
}