Mercurial Hosting > luan
comparison src/org/eclipse/jetty/http/HttpParser.java @ 1038:b71ad168fe34
rename Buffer.length() to remaining()
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Thu, 03 Nov 2016 22:16:11 -0600 |
parents | 3c4c7cc7904f |
children | 35e3c864d7a7 |
comparison
equal
deleted
inserted
replaced
1037:3c4c7cc7904f | 1038:b71ad168fe34 |
---|---|
142 public boolean parseAvailable() throws IOException | 142 public boolean parseAvailable() throws IOException |
143 { | 143 { |
144 boolean progress = parseNext() > 0; | 144 boolean progress = parseNext() > 0; |
145 | 145 |
146 // continue parsing | 146 // continue parsing |
147 while (!isComplete() && _buffer!=null && _buffer.length()>0 && !_contentView.hasRemaining()) | 147 while (!isComplete() && _buffer!=null && _buffer.remaining()>0 && !_contentView.hasRemaining()) |
148 { | 148 { |
149 progress |= parseNext()>0; | 149 progress |= parseNext()>0; |
150 } | 150 } |
151 return progress; | 151 return progress; |
152 } | 152 } |
175 _state=STATE_END; | 175 _state=STATE_END; |
176 _handler.messageComplete(_contentPosition); | 176 _handler.messageComplete(_contentPosition); |
177 return 1; | 177 return 1; |
178 } | 178 } |
179 | 179 |
180 int length = _buffer.length(); | 180 int length = _buffer.remaining(); |
181 | 181 |
182 // Fill buffer if we can | 182 // Fill buffer if we can |
183 if (length == 0) | 183 if (length == 0) |
184 { | 184 { |
185 int filled=-1; | 185 int filled=-1; |
186 IOException ex=null; | 186 IOException ex=null; |
187 try | 187 try |
188 { | 188 { |
189 filled=fill(); | 189 filled=fill(); |
190 LOG.debug("filled {}/{}",filled,_buffer.length()); | 190 LOG.debug("filled {}/{}",filled,_buffer.remaining()); |
191 } | 191 } |
192 catch(IOException e) | 192 catch(IOException e) |
193 { | 193 { |
194 LOG.debug(this.toString(),e); | 194 LOG.debug(this.toString(),e); |
195 ex=e; | 195 ex=e; |
202 _persistent = false; | 202 _persistent = false; |
203 | 203 |
204 // do we have content to deliver? | 204 // do we have content to deliver? |
205 if (_state>STATE_END) | 205 if (_state>STATE_END) |
206 { | 206 { |
207 if (_buffer.length()>0 && !_headResponse) | 207 if (_buffer.remaining()>0 && !_headResponse) |
208 { | 208 { |
209 Buffer chunk = _buffer.get(_buffer.length()); | 209 Buffer chunk = _buffer.get(_buffer.remaining()); |
210 _contentPosition += chunk.length(); | 210 _contentPosition += chunk.remaining(); |
211 _contentView.update(chunk); | 211 _contentView.update(chunk); |
212 _handler.content(); // May recurse here | 212 _handler.content(); // May recurse here |
213 } | 213 } |
214 } | 214 } |
215 | 215 |
239 if (!isComplete() && !isIdle()) | 239 if (!isComplete() && !isIdle()) |
240 throw new EofException(); | 240 throw new EofException(); |
241 | 241 |
242 return -1; | 242 return -1; |
243 } | 243 } |
244 length=_buffer.length(); | 244 length=_buffer.remaining(); |
245 } | 245 } |
246 | 246 |
247 | 247 |
248 // Handle header states | 248 // Handle header states |
249 byte ch; | 249 byte ch; |
577 | 577 |
578 if (_cached!=null) | 578 if (_cached!=null) |
579 { | 579 { |
580 _length = _cached.length(); | 580 _length = _cached.length(); |
581 _buffer.setGetIndex(_buffer.markIndex()+_length); | 581 _buffer.setGetIndex(_buffer.markIndex()+_length); |
582 length = _buffer.length(); | 582 length = _buffer.remaining(); |
583 } | 583 } |
584 } | 584 } |
585 } | 585 } |
586 } | 586 } |
587 } | 587 } |
730 | 730 |
731 | 731 |
732 // ========================== | 732 // ========================== |
733 | 733 |
734 // Handle _content | 734 // Handle _content |
735 length=_buffer.length(); | 735 length=_buffer.remaining(); |
736 Buffer chunk; | 736 Buffer chunk; |
737 last=_state; | 737 last=_state; |
738 while (_state > STATE_END && length > 0) | 738 while (_state > STATE_END && length > 0) |
739 { | 739 { |
740 if (last!=_state) | 740 if (last!=_state) |
744 } | 744 } |
745 | 745 |
746 if (_eol == HttpTokens.CARRIAGE_RETURN && _buffer.peek() == HttpTokens.LINE_FEED) | 746 if (_eol == HttpTokens.CARRIAGE_RETURN && _buffer.peek() == HttpTokens.LINE_FEED) |
747 { | 747 { |
748 _eol=_buffer.get(); | 748 _eol=_buffer.get(); |
749 length=_buffer.length(); | 749 length=_buffer.remaining(); |
750 continue; | 750 continue; |
751 } | 751 } |
752 _eol=0; | 752 _eol=0; |
753 switch (_state) | 753 switch (_state) |
754 { | 754 { |
755 case STATE_EOF_CONTENT: | 755 case STATE_EOF_CONTENT: |
756 chunk=_buffer.get(_buffer.length()); | 756 chunk=_buffer.get(_buffer.remaining()); |
757 _contentPosition += chunk.length(); | 757 _contentPosition += chunk.remaining(); |
758 _contentView.update(chunk); | 758 _contentView.update(chunk); |
759 _handler.content(); // May recurse here | 759 _handler.content(); // May recurse here |
760 // TODO adjust the _buffer to keep unconsumed content | 760 // TODO adjust the _buffer to keep unconsumed content |
761 return 1; | 761 return 1; |
762 | 762 |
776 // or equal to length which is already an int. | 776 // or equal to length which is already an int. |
777 length=(int)remaining; | 777 length=(int)remaining; |
778 } | 778 } |
779 | 779 |
780 chunk=_buffer.get(length); | 780 chunk=_buffer.get(length); |
781 _contentPosition += chunk.length(); | 781 _contentPosition += chunk.remaining(); |
782 _contentView.update(chunk); | 782 _contentView.update(chunk); |
783 _handler.content(); // May recurse here | 783 _handler.content(); // May recurse here |
784 | 784 |
785 if(_contentPosition == _contentLength) | 785 if(_contentPosition == _contentLength) |
786 { | 786 { |
867 break; | 867 break; |
868 } | 868 } |
869 else if (length > remaining) | 869 else if (length > remaining) |
870 length=remaining; | 870 length=remaining; |
871 chunk=_buffer.get(length); | 871 chunk=_buffer.get(length); |
872 _contentPosition += chunk.length(); | 872 _contentPosition += chunk.remaining(); |
873 _chunkPosition += chunk.length(); | 873 _chunkPosition += chunk.remaining(); |
874 _contentView.update(chunk); | 874 _contentView.update(chunk); |
875 _handler.content(); // May recurse here | 875 _handler.content(); // May recurse here |
876 // TODO adjust the _buffer to keep unconsumed content | 876 // TODO adjust the _buffer to keep unconsumed content |
877 return 1; | 877 return 1; |
878 } | 878 } |
879 | 879 |
880 case STATE_SEEKING_EOF: | 880 case STATE_SEEKING_EOF: |
881 { | 881 { |
882 // Close if there is more data than CRLF | 882 // Close if there is more data than CRLF |
883 if (_buffer.length()>2) | 883 if (_buffer.remaining()>2) |
884 { | 884 { |
885 _state = STATE_END; | 885 _state = STATE_END; |
886 _endp.close(); | 886 _endp.close(); |
887 } | 887 } |
888 else | 888 else |
889 { | 889 { |
890 // or if the data is not white space | 890 // or if the data is not white space |
891 while (_buffer.length()>0) | 891 while (_buffer.remaining()>0) |
892 if (!Character.isWhitespace(_buffer.get())) | 892 if (!Character.isWhitespace(_buffer.get())) |
893 { | 893 { |
894 _state = STATE_END; | 894 _state = STATE_END; |
895 _endp.close(); | 895 _endp.close(); |
896 _buffer.clear(); | 896 _buffer.clear(); |
900 _buffer.clear(); | 900 _buffer.clear(); |
901 break; | 901 break; |
902 } | 902 } |
903 } | 903 } |
904 | 904 |
905 length=_buffer.length(); | 905 length=_buffer.remaining(); |
906 } | 906 } |
907 | 907 |
908 return progress; | 908 return progress; |
909 } | 909 } |
910 catch(HttpException e) | 910 catch(HttpException e) |
927 | 927 |
928 // Is there unconsumed content in body buffer | 928 // Is there unconsumed content in body buffer |
929 if (_state>STATE_END && _buffer==_header && !_header.hasRemaining() && _body.hasRemaining()) | 929 if (_state>STATE_END && _buffer==_header && !_header.hasRemaining() && _body.hasRemaining()) |
930 { | 930 { |
931 _buffer = _body; | 931 _buffer = _body; |
932 return _buffer.length(); | 932 return _buffer.remaining(); |
933 } | 933 } |
934 | 934 |
935 // Shall we switch to a body buffer? | 935 // Shall we switch to a body buffer? |
936 if (_buffer==_header && _state>STATE_END && _header.length()==0 && ((_contentLength-_contentPosition)>_header.capacity())) | 936 if (_buffer==_header && _state>STATE_END && _header.remaining()==0 && ((_contentLength-_contentPosition)>_header.capacity())) |
937 { | 937 { |
938 _buffer = _body; | 938 _buffer = _body; |
939 } | 939 } |
940 | 940 |
941 // Shall we compact the body? | 941 // Shall we compact the body? |
976 _contentLength); | 976 _contentLength); |
977 } | 977 } |
978 | 978 |
979 public Buffer blockForContent(long maxIdleTime) throws IOException | 979 public Buffer blockForContent(long maxIdleTime) throws IOException |
980 { | 980 { |
981 if (_contentView.length()>0) | 981 if (_contentView.remaining()>0) |
982 return _contentView; | 982 return _contentView; |
983 | 983 |
984 if (_state <= STATE_END || _state==STATE_SEEKING_EOF) | 984 if (_state <= STATE_END || _state==STATE_SEEKING_EOF) |
985 return null; | 985 return null; |
986 | 986 |
987 try | 987 try |
988 { | 988 { |
989 parseNext(); | 989 parseNext(); |
990 | 990 |
991 // parse until some progress is made (or IOException thrown for timeout) | 991 // parse until some progress is made (or IOException thrown for timeout) |
992 while(_contentView.length() == 0 && !(_state==STATE_END||_state==STATE_SEEKING_EOF) && _endp.isOpen()) | 992 while(_contentView.remaining() == 0 && !(_state==STATE_END||_state==STATE_SEEKING_EOF) && _endp.isOpen()) |
993 { | 993 { |
994 if (!_endp.isBlocking()) | 994 if (!_endp.isBlocking()) |
995 { | 995 { |
996 if (parseNext()>0) | 996 if (parseNext()>0) |
997 continue; | 997 continue; |
1011 // TODO is this needed? | 1011 // TODO is this needed? |
1012 _endp.close(); | 1012 _endp.close(); |
1013 throw e; | 1013 throw e; |
1014 } | 1014 } |
1015 | 1015 |
1016 return _contentView.length()>0 ? _contentView : null; | 1016 return _contentView.remaining()>0 ? _contentView : null; |
1017 } | 1017 } |
1018 | 1018 |
1019 /* ------------------------------------------------------------ */ | 1019 /* ------------------------------------------------------------ */ |
1020 /* (non-Javadoc) | 1020 /* (non-Javadoc) |
1021 * @see java.io.InputStream#available() | 1021 * @see java.io.InputStream#available() |
1022 */ | 1022 */ |
1023 public int available() throws IOException | 1023 public int available() throws IOException |
1024 { | 1024 { |
1025 if (_contentView!=null && _contentView.length()>0) | 1025 if (_contentView!=null && _contentView.remaining()>0) |
1026 return _contentView.length(); | 1026 return _contentView.remaining(); |
1027 | 1027 |
1028 if (_endp.isBlocking()) | 1028 if (_endp.isBlocking()) |
1029 { | 1029 { |
1030 return 0; | 1030 return 0; |
1031 } | 1031 } |
1032 | 1032 |
1033 parseNext(); | 1033 parseNext(); |
1034 return _contentView==null?0:_contentView.length(); | 1034 return _contentView==null?0:_contentView.remaining(); |
1035 } | 1035 } |
1036 | 1036 |
1037 | 1037 |
1038 public interface EventHandler | 1038 public interface EventHandler |
1039 { | 1039 { |