Refine search
private String decode() { if (null == decoder) { decoder = UTF8.newDecoder(); } snapshot(); try { if (null == chars || chars.remaining() < buffer.remaining()) { chars = CharBuffer.allocate(buffer.remaining()); } else { chars.rewind(); } decoder.reset(); CoderResult cr = decoder.decode(buffer, chars, true); if (cr.isUnderflow()) { decoder.flush(chars); } chars.flip(); return chars.toString(); } finally { reset(); } }
public CharBuffer decodeUnsafely(byte[] byteS, int start, int len) { // Prepare buffers if (byteBuffer.capacity() < len) { byteBuffer = ByteBuffer.allocate(len * 2); } byteBuffer.clear(); byteBuffer.put(byteS, start, len); byteBuffer.flip(); int maxChars = (int) (byteBuffer.capacity() * decoder.maxCharsPerByte()); if (charBuffer.capacity() < maxChars) { charBuffer = CharBuffer.allocate(maxChars); } charBuffer.clear(); // Decode UTF-8 decoder.reset(); decoder.decode(byteBuffer, charBuffer, true); decoder.flush(charBuffer); charBuffer.flip(); return charBuffer; } }
@Nonnull public String finish (@Nonnull final ByteBuffer aByteBuffer) { ValueEnforcer.notNull (aByteBuffer, "ByteBuffer"); _decode (aByteBuffer, true); final CoderResult aResult = m_aDecoder.flush (m_aBuffer); if (aResult == CoderResult.OVERFLOW) throw new IllegalStateException ("TODO: Handle overflow?"); if (aResult != CoderResult.UNDERFLOW) throw new IllegalStateException ("TODO: Handle errors?"); // Copy out the string final String sRet = new String (m_aBuffer.array (), 0, m_aBuffer.position ()); // Reset for the next string m_aBuffer.clear (); m_aDecoder.reset (); return sRet; } }
public CharBuffer decodeUnsafely(byte[] byteS, int start, int len) { // Prepare buffers if (byteBuffer.capacity() < len) { byteBuffer = ByteBuffer.allocate(len * 2); } byteBuffer.clear(); byteBuffer.put(byteS, start, len); byteBuffer.flip(); int maxChars = (int) (byteBuffer.capacity() * decoder.maxCharsPerByte()); if (charBuffer.capacity() < maxChars) { charBuffer = CharBuffer.allocate(maxChars); } charBuffer.clear(); // Decode UTF-8 decoder.reset(); decoder.decode(byteBuffer, charBuffer, true); decoder.flush(charBuffer); charBuffer.flip(); return charBuffer; } }
private ByteBuffer processAsciiCommand(RequestReader request, Cache cache) { ByteBuffer buffer = request.getRequest(); CharBuffer flb = getFirstLineBuffer(); getAsciiDecoder().reset(); getAsciiDecoder().decode(buffer, flb, false); flb.flip(); String firstLine = getFirstLine(); String[] firstLineElements = firstLine.split(" "); boolean isGets = firstLineElements[0].equals("gets"); Set<String> keys = new HashSet<String>(); for (int i = 1; i < firstLineElements.length; i++) { keys.add(stripNewline(firstLineElements[i])); } Region<Object, ValueWrapper> r = getMemcachedRegion(cache); Map<Object, ValueWrapper> results = r.getAll(keys); return composeReply(results, isGets); }
@Nonnull public String finish (@Nonnull final ByteBuffer aByteBuffer) { ValueEnforcer.notNull (aByteBuffer, "ByteBuffer"); _decode (aByteBuffer, true); final CoderResult aResult = m_aDecoder.flush (m_aBuffer); if (aResult == CoderResult.OVERFLOW) throw new IllegalStateException ("TODO: Handle overflow?"); if (aResult != CoderResult.UNDERFLOW) throw new IllegalStateException ("TODO: Handle errors?"); // Copy out the string final String sRet = new String (m_aBuffer.array (), 0, m_aBuffer.position ()); // Reset for the next string m_aBuffer.clear (); m_aDecoder.reset (); return sRet; } }
private ByteBuffer processAsciiCommand(ByteBuffer buffer, Cache cache) { CharBuffer flb = getFirstLineBuffer(); getAsciiDecoder().reset(); getAsciiDecoder().decode(buffer, flb, false); flb.flip(); String firstLine = getFirstLine(); String[] firstLineElements = firstLine.split(" "); String key = firstLineElements[1]; int flags = Integer.parseInt(firstLineElements[2]); long expTime = Long.parseLong(firstLineElements[3]); int numBytes = Integer.parseInt(firstLineElements[4]); long casVersion = Long.parseLong(stripNewline(firstLineElements[5])); byte[] value = new byte[numBytes]; buffer.position(firstLine.length()); for (int i = 0; i < numBytes; i++) { value[i] = buffer.get(); } String reply = Reply.EXISTS.toString(); Region<Object, ValueWrapper> r = getMemcachedRegion(cache); ValueWrapper expected = ValueWrapper.getDummyValue(casVersion); if (r.replace(key, expected, ValueWrapper.getWrappedValue(value, flags))) { reply = Reply.STORED.toString(); } return asciiCharset.encode(reply); } }
private ByteBuffer processAsciiCommand(ByteBuffer buffer, Cache cache) { CharBuffer flb = getFirstLineBuffer(); getAsciiDecoder().reset(); getAsciiDecoder().decode(buffer, flb, false); flb.flip(); String firstLine = getFirstLine(); String[] firstLineElements = firstLine.split(" "); assert "delete".equals(firstLineElements[0]); String key = stripNewline(firstLineElements[1]); boolean noReply = firstLineElements.length > 2; Region<Object, ValueWrapper> r = getMemcachedRegion(cache); String reply = null; try { r.destroy(key); reply = Reply.DELETED.toString(); } catch (EntryNotFoundException e) { reply = Reply.NOT_FOUND.toString(); } return noReply ? null : asciiCharset.encode(reply); }