package se.sics.gvod.ls.http; import com.sun.net.httpserver.Headers; import com.sun.net.httpserver.HttpExchange; import com.sun.net.httpserver.HttpHandler; import java.io.IOException; import java.io.OutputStream; import org.slf4j.LoggerFactory; import se.sics.gvod.video.msgs.Piece; import se.sics.gvod.video.msgs.SubPiece; /** * * @author Niklas Wahlén <nwahlen@kth.se> */ public class HTTPRequestHandler implements HttpHandler { private final org.slf4j.Logger logger = LoggerFactory.getLogger(HTTPRequestHandler.class); private OutputStream os; public HTTPRequestHandler() { } @Override public void handle(HttpExchange he) throws IOException { Headers headers = he.getResponseHeaders(); // Header according to VLC HLS response headers.add("Content-Type", "application/octet-stream"); headers.add("Cache-Control", "no-cache"); he.sendResponseHeaders(200, 0); // Get OutputStream to body os = he.getResponseBody(); logger.info("New OutputStream connected"); } public void deliver(SubPiece sp) throws IOException { logger.debug("Writing SubPiece " + sp.getParent() + "," + sp.getId()); if (os != null) { os.write(sp.getData()); os.flush(); } } public void stop() throws IOException { if (os != null) { os.close(); logger.info("OutputStream closed"); } } }