package org.arbeitspferde.groningen.utility.logstream.format.open; import com.google.protobuf.Message; import org.arbeitspferde.groningen.utility.logstream.OutputLogStream; import org.arbeitspferde.groningen.utility.logstream.OutputLogStreamFactory; import javax.annotation.concurrent.ThreadSafe; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; /** * <p>{@link DelimitedFactory} furnishes {@link OutputLogStream}s that use use Protocol Buffers' * underlying delimited encoding per {@link Message#writeDelimitedTo(OutputStream)}. * </p> * * {@inheritDoc} */ @ThreadSafe public class DelimitedFactory implements OutputLogStreamFactory { @Override public OutputLogStream forStream(final OutputStream stream) throws IOException { return new Delimited(stream); } @Override public OutputLogStream rotatingStreamForSpecification(final Specification specification) throws IOException { final String baseName = String.format("%s.on_port_%s.log", specification.getFilenamePrefix(), specification.getServingPort()); final FileOutputStream outputStream = new FileOutputStream(baseName); return new Delimited(outputStream); } }