Mercurial Hosting > luan
comparison src/org/eclipse/jetty/server/AbstractHttpConnection.java @ 1010:2712133d5bce
simplify Buffer code
| author | Franklin Schmidt <fschmidt@gmail.com> |
|---|---|
| date | Sun, 23 Oct 2016 22:23:50 -0600 |
| parents | 945568ee77ac |
| children | 6939226e0ac4 |
comparison
equal
deleted
inserted
replaced
| 1009:c3a04bded909 | 1010:2712133d5bce |
|---|---|
| 815 throw new IOException("Closed"); | 815 throw new IOException("Closed"); |
| 816 PrintWriter writer = getPrintWriter(null); | 816 PrintWriter writer = getPrintWriter(null); |
| 817 writer.print(s); | 817 writer.print(s); |
| 818 } | 818 } |
| 819 | 819 |
| 820 public void sendContent(Object content) throws IOException | 820 public final void sendContent(InputStream in) throws IOException |
| 821 { | 821 { |
| 822 Resource resource=null; | |
| 823 | |
| 824 if (_closed) | 822 if (_closed) |
| 825 throw new IOException("Closed"); | 823 throw new IOException("Closed"); |
| 826 | 824 |
| 827 if (_generator.isWritten()) | 825 if (_generator.isWritten()) |
| 828 throw new IllegalStateException("!empty"); | 826 throw new IllegalStateException("!empty"); |
| 829 | 827 |
| 830 if (content instanceof Resource) | 828 try |
| 831 { | 829 { |
| 832 resource=(Resource)content; | 830 int max = _generator.prepareUncheckedAddContent(); |
| 833 _responseFields.putDateField(HttpHeaders.LAST_MODIFIED_BUFFER, resource.lastModified()); | 831 Buffer buffer = _generator.getUncheckedBuffer(); |
| 834 content=resource.getInputStream(); | 832 |
| 835 } | 833 int len = buffer.readFrom(in,max); |
| 836 | 834 |
| 837 // Process content. | 835 while (len>=0) |
| 838 if (content instanceof Buffer) | 836 { |
| 839 { | |
| 840 _generator.addContent((Buffer) content, HttpGenerator.LAST); | |
| 841 commitResponse(HttpGenerator.LAST); | |
| 842 } | |
| 843 else if (content instanceof InputStream) | |
| 844 { | |
| 845 InputStream in = (InputStream)content; | |
| 846 | |
| 847 try | |
| 848 { | |
| 849 int max = _generator.prepareUncheckedAddContent(); | |
| 850 Buffer buffer = _generator.getUncheckedBuffer(); | |
| 851 | |
| 852 int len=buffer.readFrom(in,max); | |
| 853 | |
| 854 while (len>=0) | |
| 855 { | |
| 856 _generator.completeUncheckedAddContent(); | |
| 857 _out.flush(); | |
| 858 | |
| 859 max = _generator.prepareUncheckedAddContent(); | |
| 860 buffer = _generator.getUncheckedBuffer(); | |
| 861 len=buffer.readFrom(in,max); | |
| 862 } | |
| 863 _generator.completeUncheckedAddContent(); | 837 _generator.completeUncheckedAddContent(); |
| 864 _out.flush(); | 838 _out.flush(); |
| 865 } | 839 |
| 866 finally | 840 max = _generator.prepareUncheckedAddContent(); |
| 867 { | 841 buffer = _generator.getUncheckedBuffer(); |
| 868 if (resource!=null) | 842 len=buffer.readFrom(in,max); |
| 869 resource.release(); | 843 } |
| 870 else | 844 _generator.completeUncheckedAddContent(); |
| 871 in.close(); | 845 _out.flush(); |
| 872 } | 846 } |
| 873 } | 847 finally |
| 874 else | 848 { |
| 875 throw new IllegalArgumentException("unknown content type?"); | 849 in.close(); |
| 850 } | |
| 876 } | 851 } |
| 877 } | 852 } |
| 878 | 853 |
| 879 | 854 |
| 880 private final class HttpInput extends ServletInputStream | 855 private final class HttpInput extends ServletInputStream |
