public MultiMap<String, String> parseHeaders(String header) { if (Str.isEmpty(header)) { return null; } MultiMap<String, String> params = new MultiMapImpl<>(); final char[][] split = CharScanner.split(FastStringUtils.toCharArray(header), (char) Protocol.PROTOCOL_ENTRY_HEADER_DELIM); for (char[] entry : split) { final char[][] kvSplit = CharScanner.split(entry, (char) PROTOCOL_KEY_HEADER_DELIM); if (kvSplit.length > 1) { char[] ckey = kvSplit[0]; char[] valuesAsOne = kvSplit[1]; final char[][] values = CharScanner.split(valuesAsOne, (char) PROTOCOL_VALUE_HEADER_DELIM); String key = new String(ckey); for (char[] value : values) { params.add(key, new String(value)); } } } return params; }
@Override public List<Message<Object>> parse(String address, String args) { final char[] chars = FastStringUtils.toCharArray(args); if (chars.length > 2 && chars[PROTOCOL_MARKER_POSITION] == PROTOCOL_MARKER) { final char versionMarker = chars[VERSION_MARKER_POSITION]; if (versionMarker == PROTOCOL_MESSAGE_TYPE_GROUP) { final char[][] cargs = CharScanner.splitFromStartWithLimit(chars, (char) PROTOCOL_SEPARATOR, 0, METHOD_NAME_POS + 2); char[] returnAddressChars = cargs[RETURN_ADDRESS_POS]; final String returnAddress = FastStringUtils.noCopyStringFromChars(returnAddressChars); final char[][] messageBuffers = CharScanner.splitFrom(chars, (char) PROTOCOL_MESSAGE_SEPARATOR, 2); List<Message<Object>> messages = new ArrayList<>(messageBuffers.length); for (int index = 1; index < messageBuffers.length; index++) { char[] messageBuffer = messageBuffers[index]; final Message<Object> m = parseMessageFromChars(returnAddress, messageBuffer); messages.add(m); } return messages; } else { die("Unsupported method call", args); return null; } } return null; }
public String toString() { return FastStringUtils.noCopyStringFromCharsNoCheck(buffer, location); }
private Response<Object> parseResponseFromChars(char[] args, final String returnAddress) { final char[][] chars = CharScanner.splitFromStartWithLimit(args, (char) PROTOCOL_SEPARATOR, 0, RESPONSE_RETURN); String messageId = FastStringUtils.noCopyStringFromChars(chars[MESSAGE_ID_POS]); long id = 0L; if (!Str.isEmpty(messageId)) { id = Long.parseLong(messageId); } String address = FastStringUtils.noCopyStringFromChars(chars[ADDRESS_POS]); String stime = FastStringUtils.noCopyStringFromChars(chars[TIMESTAMP_POS]); long timestamp = 0L; if (!Str.isEmpty(stime)) { timestamp = Long.parseLong(stime); } char[] wasErrorsStr = chars[WAS_ERRORS_POS]; boolean wasErrors = wasErrorsStr != null && wasErrorsStr.length == 1 && wasErrorsStr[0] == '1'; char[] messageBodyChars = chars[RESPONSE_RETURN]; Object messageBody; if (!Chr.isEmpty(messageBodyChars)) { messageBody = jsonParser.parse(messageBodyChars); } else { messageBody = null; } return new ResponseImpl<>(id, timestamp, address, returnAddress, null, messageBody, null, wasErrors); }
public Object parse ( byte[] bytes, Charset charset ) { final char[] chars = FastStringUtils.toCharArrayFromBytes(bytes, charset); return parse( chars ); }
String address = FastStringUtils.noCopyStringFromChars(args[ADDRESS_POS]); String headerBlock = FastStringUtils.noCopyStringFromChars(args[HEADER_POS]); String paramBlock = FastStringUtils.noCopyStringFromChars(args[PARAMS_POS]); String methodName = FastStringUtils.noCopyStringFromChars(args[METHOD_NAME_POS]); String objectName = FastStringUtils.noCopyStringFromChars(args[OBJECT_NAME_POS]);
public Object parse ( byte[] bytes, Charset charset ) { final char[] chars = FastStringUtils.toCharArrayFromBytes(bytes, charset); return parse( chars ); }
/** * Checks to see if a string is inside of another * @param start start * @param inStr input string * @param end index at end * @return inside of result */ public static boolean insideOf(String start, String inStr, String end) { return Chr.insideOf(FastStringUtils.toCharArray(start), FastStringUtils.toCharArray(inStr), FastStringUtils.toCharArray(end)); }
/** * Add one string to another * @param str string 1 * @param str2 string 2 * @return new string */ public static String add( String str, String str2 ) { return FastStringUtils.noCopyStringFromChars( Chr.add( FastStringUtils.toCharArray(str), FastStringUtils.toCharArray(str2) ) ); }
public Object parse ( byte[] bytes, Charset charset ) { final char[] chars = FastStringUtils.toCharArrayFromBytes(bytes, charset); return parse( chars ); }
public String toString () { if ( startIndex == 0 && endIndex == buffer.length ) { return FastStringUtils.noCopyStringFromCharsNoCheck(buffer); } else { return new String ( buffer, startIndex, ( endIndex - startIndex ) ); } }
/** * Checks to see if a string is inside of another * @param start start * @param inStr input string * @param end index at end * @return inside of result */ public static boolean insideOf(String start, String inStr, String end) { return Chr.insideOf(FastStringUtils.toCharArray(start), FastStringUtils.toCharArray(inStr), FastStringUtils.toCharArray(end)); }
/** * Add one string to another * @param str string 1 * @param str2 string 2 * @return new string */ public static String add( String str, String str2 ) { return FastStringUtils.noCopyStringFromChars( Chr.add( FastStringUtils.toCharArray(str), FastStringUtils.toCharArray(str2) ) ); }
public String toString () { if ( startIndex == 0 && endIndex == buffer.length ) { return FastStringUtils.noCopyStringFromCharsNoCheck(buffer); } else { return new String ( buffer, startIndex, ( endIndex - startIndex ) ); } }
/** * See if they are equal or die * @param a a * @param b b */ public static void equalsOrDie(CharSequence a, CharSequence b) { char[] ac = FastStringUtils.toCharArray(a); char[] bc = FastStringUtils.toCharArray(b); Chr.equalsOrDie(ac, bc); }
/** * Gets slice of a string. * @param str string * @param start start index of slice * @return new string */ public static String slc( String str, int start ) { return FastStringUtils.noCopyStringFromChars(Chr.slc(FastStringUtils.toCharArray(str), start)); }
public String toString () { if (this.decodeStrings) { return stringValue(); } else if ( startIndex == 0 && endIndex == buffer.length ) { return FastStringUtils.noCopyStringFromCharsNoCheck(buffer); } else { return new String ( buffer, startIndex, ( endIndex - startIndex ) ); } }
/** * See if they are equal or die * @param a a * @param b b */ public static void equalsOrDie(CharSequence a, CharSequence b) { char[] ac = FastStringUtils.toCharArray(a); char[] bc = FastStringUtils.toCharArray(b); Chr.equalsOrDie(ac, bc); }
/** * Gets end slice of a string. * @param str string * @param end end index of slice * @return new string */ public static String slcEnd( String str, int end ) { return FastStringUtils.noCopyStringFromChars( Chr.slcEnd( FastStringUtils.toCharArray(str), end ) ); }
public String toString () { if (this.decodeStrings) { return stringValue(); } else if ( startIndex == 0 && endIndex == buffer.length ) { return FastStringUtils.noCopyStringFromCharsNoCheck(buffer); } else { return new String ( buffer, startIndex, ( endIndex - startIndex ) ); } }