public static String to8859_1_String(Buffer buffer) { if (buffer.isImmutable()) return buffer.toString(); try { byte[] bytes=buffer.array(); if (bytes!=null) return new String(bytes,buffer.getIndex(),buffer.length(),StringUtil.__ISO_8859_1); StringBuffer b = new StringBuffer(buffer.length()); for (int i=buffer.getIndex(),c=0;c<buffer.length();i++,c++) b.append((char)(0x7f&buffer.peek(i))); return b.toString(); } catch(UnsupportedEncodingException e) { e.printStackTrace(); return buffer.toString(); } } }
/** * @return The {@link Buffer#capacity} of the underlying buffer. */ public int capacity() { return _buffer.capacity(); }
private Field(Buffer name, Buffer value, long numValue, int revision) { _name = name.asImmutableBuffer(); _value = value.isImmutable() ? value : new View(value); _next = null; _prev = null; _revision = revision; _numValue = numValue; _stringValue=null; }
int length=_buffer.length(); filled=_buffer.length(); if (_buffer.markIndex() == 0 && _buffer.putIndex() == _buffer.capacity()) throw new IOException("FULL"); _buffer.compact(); if (_buffer.space() == 0) throw new IOException("FULL "+(_buffer==_body?"body":"head")); length=_buffer.length(); byte[] array=_buffer.array(); ch=_buffer.get(); _buffer.mark(); _state=STATE_FIELD0; _tok0.update(_buffer.markIndex(), _buffer.getIndex() - 1); _state=STATE_SPACE1; continue; _buffer.mark(); _state=STATE_FIELD1; _tok1.update(_buffer.markIndex(), _buffer.getIndex() - 1);
Buffer buf0 = header==null?null:header.buffer(); Buffer buf1 = buffer==null?null:buffer.buffer(); header!=null && header.length()!=0 && header instanceof NIOBuffer && buffer!=null && buffer.length()!=0 && buffer instanceof NIOBuffer) bbuf0.position(header.getIndex()); bbuf0.limit(header.putIndex()); bbuf1.position(buffer.getIndex()); bbuf1.limit(buffer.putIndex()); int hl=header.length(); if (length>hl) header.clear(); buffer.skip(length-hl); header.skip(length); if (!header.isImmutable()) header.setGetIndex(bbuf0.position()); if (!buffer.isImmutable()) buffer.setGetIndex(bbuf1.position()); if (header!=null && header.length()>0) length=flush(header); if ((header==null || header.length()==0) && buffer!=null && buffer.length()>0)
public View(Buffer buffer) { super(READWRITE,!buffer.isImmutable()); _buffer=buffer.buffer(); setPutIndex(buffer.putIndex()); setGetIndex(buffer.getIndex()); setMarkIndex(buffer.markIndex()); _access=buffer.isReadOnly()?READONLY:READWRITE; }
if (_content != null && _content.length() > 0 && _buffer != null && _buffer.space() > 0) int len = _buffer.put(_content); _content.skip(len); if (_content.length() == 0) _content = null; int size = _buffer == null ? 0 : _buffer.length(); if (size > 0) if (_buffer.getIndex() == CHUNK_SPACE) _buffer.poke(_buffer.getIndex() - 2, HttpTokens.CRLF, 0, 2); _buffer.setGetIndex(_buffer.getIndex() - 2); BufferUtil.prependHexInt(_buffer, size); _buffer.poke(_buffer.getIndex() - 2, HttpTokens.CRLF, 0, 2); _buffer.setGetIndex(_buffer.getIndex() - 2); _needCRLF = false; if (_header.length() > 0) throw new IllegalStateException("EOC"); _header.put(HttpTokens.CRLF); _needCRLF = false; _header.put(HttpTokens.CRLF); if (_buffer.space() >= 2) _buffer.put(HttpTokens.CRLF); else
public int flush(Buffer buffer) throws IOException Buffer buf = buffer.buffer(); int len=0; if (buf instanceof NIOBuffer) bbuf.position(buffer.getIndex()); bbuf.limit(buffer.putIndex()); len=_channel.write(bbuf); buffer.skip(len); bbuf.position(0); bbuf.limit(bbuf.capacity()); else if (buffer.array()!=null) ByteBuffer b = ByteBuffer.wrap(buffer.array(), buffer.getIndex(), buffer.length()); len=_channel.write(b); if (len>0) buffer.skip(len);
_responseStatus=0; if (_buffer!=null && _buffer.length()>0 && _eol == HttpTokens.CARRIAGE_RETURN && _buffer.peek() == HttpTokens.LINE_FEED) _buffer.skip(1); _eol=HttpTokens.LINE_FEED; if (_body.hasContent()) _header.setMarkIndex(-1); _header.compact(); _body.skip(_header.put(_body)); if (_body.length()==0) _body.setMarkIndex(-1); _body.compact(); _header.setMarkIndex(-1); if (!_header.hasContent() && _buffers!=null && returnBuffers) _header.compact(); _tok0.update(_header); _tok0.update(0,0);
_header.put(_method); _header.put((byte)' '); _header.put(_uri.getBytes("utf-8")); // TODO WRONG! _header.put(HttpTokens.CRLF); _state = STATE_FLUSHING; _noContent=true; _header.put(_method); _header.put((byte)' '); _header.put(_uri.getBytes("utf-8")); // TODO WRONG! _header.put((byte)' '); _header.put(_version==HttpVersions.HTTP_1_0_ORDINAL?HttpVersions.HTTP_1_0_BUFFER:HttpVersions.HTTP_1_1_BUFFER); _header.put(HttpTokens.CRLF); _header.put(HttpVersions.HTTP_1_1_BUFFER); _header.put((byte) ' '); _header.put((byte) ('0' + _status / 100)); _header.put((byte) ('0' + (_status % 100) / 10)); _header.put((byte) ('0' + (_status % 10))); _header.put((byte) ' '); if (_reason==null) _header.put((byte) ('0' + _status / 100)); _header.put((byte) ('0' + (_status % 100) / 10)); _header.put((byte) ('0' + (_status % 10))); _header.put(_reason); _header.put(HttpTokens.CRLF);
_buffer.put(HttpTokens.CRLF); if (_needEOC && _buffer!=null && !_head) _buffer.put(LAST_CHUNK); _needCRLF=false; _needEOC=false; int to_flush = ((_header != null && _header.length() > 0)?4:0) | ((_buffer != null && _buffer.length() > 0)?2:0) | ((_bypass && _content != null && _content.length() > 0)?1:0); switch (to_flush) _header.clear(); _buffer.clear(); if (_contentLength == HttpTokens.CHUNKED_CONTENT) _buffer.setPutIndex(CHUNK_SPACE); _buffer.setGetIndex(CHUNK_SPACE); if (_content != null && _content.length() < _buffer.space() && _state != STATE_FLUSHING) _buffer.put(_content); _content.clear(); _content = null; break Flushing; if (!_needCRLF && !_needEOC && (_content == null || _content.length() == 0))
public void returnBuffer(Buffer buffer) buffer.clear(); if (_loss++>BUFFER_LOSS_RATE) buffer.clear(); if (!buffer.isVolatile() && !buffer.isImmutable()) int c=buffer.capacity(); if (c==_headerBufferSize)
byte[] array=src.array(); if (array!=null) int length = poke(index,array,src.getIndex(),src.length()); return length; Buffer src_buf=src.buffer(); if (src_buf instanceof NIOBuffer) int space = _buf.remaining(); int length=src.length(); if (length>space) length=space; src_bytebuf.position(src.getIndex()); src_bytebuf.limit(src.getIndex()+length);
public boolean equalsIgnoreCase(Buffer b) { if (b==this) return true; // reject different lengths if (b.length() != length()) return false; // reject AbstractBuffer with different hash value if (_hash != 0 && b instanceof AbstractBuffer) { AbstractBuffer ab = (AbstractBuffer) b; if (ab._hash != 0 && _hash != ab._hash) return false; } // Nothing for it but to do the hard grind. for (int i = length(); i-- > 0;) { byte b1 = peek(getIndex() + i); byte b2 = b.peek(b.getIndex() + i); if (b1 != b2) { if ('a' <= b1 && b1 <= 'z') b1 = (byte) (b1 - 'a' + 'A'); if ('a' <= b2 && b2 <= 'z') b2 = (byte) (b2 - 'a' + 'A'); if (b1 != b2) return false; } } return true; }
buffer.put(_name); else int s=_name.getIndex(); int e=_name.putIndex(); while (s<e) byte b=_name.peek(s++); switch(b) continue; default: buffer.put(b); buffer.put((byte) ':'); buffer.put((byte) ' '); buffer.put(_value); else int s=_value.getIndex(); int e=_value.putIndex(); while (s<e) byte b=_value.peek(s++); switch(b) continue; default:
content.clear(); return; content.clear(); return; if (_content!=null && _content.length()>0 || _bufferChunked) if (_content != null && _content.length()>0 || _bufferChunked) throw new IllegalStateException("FULL"); _contentWritten += content.length(); content.clear(); _content=null; else if (_endp != null && _buffer == null && content.length() > 0 && _last) int len=_buffer.put(_content); _content.skip(len); if (_content.length() == 0) _content = null;