All Downloads are FREE. Search and download functionalities are using the official Maven repository.

enkan.system.repl.jshell.SystemIoTransport Maven / Gradle / Ivy

There is a newer version: 0.10.0
Show newest version
package enkan.system.repl.jshell;

import enkan.system.ReplResponse;
import enkan.system.Transport;
import jline.internal.InputStreamReader;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.UncheckedIOException;

import static enkan.system.ReplResponse.ResponseStatus.DONE;

public class SystemIoTransport implements Transport {
    public static final String CHUNK_DELIMITER = "-----------------END------------------";
    private final BufferedReader reader;

    public SystemIoTransport() {
        reader = new BufferedReader(new InputStreamReader(System.in));
    }

    @Override
    public void send(ReplResponse response) {
        synchronized (this) {
            String out = response.getOut();
            if (out != null) {
                System.out.println(out);
                System.out.flush();
            }
            String err = response.getErr();
            if (err != null) {
                System.err.println(err);
                System.err.flush();
            }

            if (response.getStatus().contains(DONE)) {
                System.out.println(CHUNK_DELIMITER);
                System.out.flush();
            }
        }
    }

    @Override
    public String recv(long timeout) {
        try {
            return reader.readLine();
        } catch (IOException e) {
            throw new UncheckedIOException(e);
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy