public Buffer peek(int index, int length) { if (_view == null) { _view = new View(this, -1, index, index + length, isReadOnly() ? READONLY : READWRITE); } else { _view.update(this.buffer()); _view.setMarkIndex(-1); _view.setGetIndex(0); _view.setPutIndex(index + length); _view.setGetIndex(index); } return _view; }
public void update(int get, int put) { int a=_access; _access=READWRITE; setGetIndex(0); setPutIndex(put); setGetIndex(get); setMarkIndex(-1); _access=a; }
public Buffer getBuffer() { if (_buffer==null) return null; return new View(_buffer); }
/** * Parse one HTTP request or response * @param rawHTTP Raw HTTP to parse * @return Any unparsed data in the rawHTTP (eg pipelined requests) * @throws IOException */ public String parse(String rawHTTP) throws IOException { ByteArrayBuffer buf = new ByteArrayBuffer(rawHTTP); View view = new View(buf); HttpParser parser = new HttpParser(view,new PH()); parser.parse(); return view.toString(); }
/** * */ public void clear() { setMarkIndex(-1); setGetIndex(0); setPutIndex(_buffer.getIndex()); setGetIndex(_buffer.getIndex()); }
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; }
/** * @param buffer The <code>Buffer</code> on which we are presenting a <code>View</code>. * @param mark The initial value of the {@link Buffer#markIndex mark index} * @param get The initial value of the {@link Buffer#getIndex get index} * @param put The initial value of the {@link Buffer#putIndex put index} * @param access The access level - one of the constants from {@link Buffer}. */ public View(Buffer buffer, int mark, int get, int put,int access) { super(READWRITE,!buffer.isImmutable()); _buffer=buffer.buffer(); setPutIndex(put); setGetIndex(get); setMarkIndex(mark); _access=access; }
public Buffer asReadOnlyBuffer() { if (isReadOnly()) return this; return new View(this, markIndex(), getIndex(), putIndex(), READONLY); }
/** * Update view to buffer */ public void update(Buffer buffer) { _access=READWRITE; _buffer=buffer.buffer(); setGetIndex(0); setPutIndex(buffer.putIndex()); setGetIndex(buffer.getIndex()); setMarkIndex(buffer.markIndex()); _access=buffer.isReadOnly()?READONLY:READWRITE; }
public Buffer asMutableBuffer() { if (!isImmutable()) return this; Buffer b=this.buffer(); if (b.isReadOnly()) { return duplicate(READWRITE); } return new View(b, markIndex(), getIndex(), putIndex(), _access); }
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; }
/** * Utility method to send an error response. If the builder is not committed, this call is * equivalent to a setResponse, addcontent and complete call. * * @param code * @param reason * @param content * @param close * @throws IOException */ public void sendError(int code, String reason, String content, boolean close) throws IOException { if (!isCommitted()) { setResponse(code, reason); _close = close; completeHeader(null, false); if (content != null) addContent(new View(new ByteArrayBuffer(content)), Generator.LAST); complete(); } }
public String generate() throws IOException { Buffer bb=new ByteArrayBuffer(32*1024 + (_genContent!=null?_genContent.length:0)); Buffer sb=new ByteArrayBuffer(4*1024); StringEndPoint endp = new StringEndPoint(); HttpGenerator generator = new HttpGenerator(new SimpleBuffers(new Buffer[]{sb,bb}),endp, sb.capacity(), bb.capacity()); if (_method!=null) { generator.setRequest(getMethod(),getURI()); if (_version==null) generator.setVersion(HttpVersions.HTTP_1_1_ORDINAL); else generator.setVersion(HttpVersions.CACHE.getOrdinal(HttpVersions.CACHE.lookup(_version))); generator.completeHeader(_fields,false); if (_genContent!=null) generator.addContent(new View(new ByteArrayBuffer(_genContent)),false); else if (_parsedContent!=null) generator.addContent(new ByteArrayBuffer(_parsedContent.toByteArray()),false); } generator.complete(); generator.flush(); return endp.getOutput(); }