@Override String etag(final FileSender sender) throws IOException { return Long.toHexString(sender.getLastModified()); } }
@Override String etag(final FileSender sender) throws IOException { return sender.getTailChecksum(); } }
final FileSender sender; try { sender = new FileSender(obj); } catch (FileNotFoundException e) { rsp.sendError(SC_NOT_FOUND); final long lastModified = (sender.getLastModified() / 1000) * 1000; rsp.setDateHeader(HDR_LAST_MODIFIED, lastModified); rsp.setContentType(contentType); sender.serve(req, rsp, sendBody); } finally { sender.close();
private boolean initRangeRequest(final HttpServletRequest req, final HttpServletResponse rsp) throws IOException { final Enumeration<String> rangeHeaders = getRange(req); if (!rangeHeaders.hasMoreElements()) { if (ifRange != null && !getTailChecksum().equals(ifRange)) {
void serve(final HttpServletRequest req, final HttpServletResponse rsp, final boolean sendBody) throws IOException { if (!initRangeRequest(req, rsp)) { rsp.sendError(SC_REQUESTED_RANGE_NOT_SATISFIABLE); return; } rsp.setHeader(HDR_ACCEPT_RANGES, "bytes"); rsp.setHeader(HDR_CONTENT_LENGTH, Long.toString(end - pos)); if (sendBody) { final OutputStream out = rsp.getOutputStream(); try { final byte[] buf = new byte[4096]; source.seek(pos); while (pos < end) { final int r = (int) Math.min(buf.length, end - pos); final int n = source.read(buf, 0, r); if (n < 0) { throw new EOFException(MessageFormat.format(HttpServerText.get().unexpectedeOFOn, path)); } out.write(buf, 0, n); pos += n; } out.flush(); } finally { out.close(); } } }
final FileSender sender; try { sender = new FileSender(obj); } catch (FileNotFoundException e) { rsp.sendError(SC_NOT_FOUND); final long lastModified = (sender.getLastModified() / 1000) * 1000; rsp.setDateHeader(HDR_LAST_MODIFIED, lastModified); rsp.setContentType(contentType); sender.serve(req, rsp, sendBody); } finally { sender.close();
private boolean initRangeRequest(final HttpServletRequest req, final HttpServletResponse rsp) throws IOException { final Enumeration<String> rangeHeaders = getRange(req); if (!rangeHeaders.hasMoreElements()) { if (ifRange != null && !getTailChecksum().equals(ifRange)) {
void serve(final HttpServletRequest req, final HttpServletResponse rsp, final boolean sendBody) throws IOException { if (!initRangeRequest(req, rsp)) { rsp.sendError(SC_REQUESTED_RANGE_NOT_SATISFIABLE); return; } rsp.setHeader(HDR_ACCEPT_RANGES, "bytes"); rsp.setHeader(HDR_CONTENT_LENGTH, Long.toString(end - pos)); if (sendBody) { final OutputStream out = rsp.getOutputStream(); try { final byte[] buf = new byte[4096]; source.seek(pos); while (pos < end) { final int r = (int) Math.min(buf.length, end - pos); final int n = source.read(buf, 0, r); if (n < 0) { throw new EOFException(MessageFormat.format(HttpServerText.get().unexpectedeOFOn, path)); } out.write(buf, 0, n); pos += n; } out.flush(); } finally { out.close(); } } }
@Override String etag(final FileSender sender) throws IOException { return Long.toHexString(sender.getLastModified()); } }
@Override String etag(final FileSender sender) throws IOException { return sender.getTailChecksum(); } }