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); }
@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; }
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]);
/** * Convert arrays of chars to arrays of strings * @param split array of chars * @return string array */ public static String[] fromCharArrayOfArrayToStringArray( char[][] split ) { String[] results = new String[ split.length ]; char[] array; for ( int index = 0; index < split.length; index++ ) { array = split[ index ]; results[ index ] = array.length == 0 ? EMPTY_STRING : FastStringUtils.noCopyStringFromChars( array ); } return results; }
/** * 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 ) ); }
/** * Add a char to a string * @param str string * @param c char * @return new string */ public static String add( String str, char c ) { return FastStringUtils.noCopyStringFromChars( Chr.add( FastStringUtils.toCharArray(str), c ) ); }
/** * Convert to camel case and pass upper or lower * @param inStr string to convert * @param upper upper flag * @return new string */ public static String camelCase( String inStr, boolean upper ) { char[] in = FastStringUtils.toCharArray(inStr); char[] out = Chr.camelCase( in, upper ); return FastStringUtils.noCopyStringFromChars( out ); }
/** * 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)); }
/** * 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 ) ); }
/** * Gets rid of null characters lurking in the string * @param str string * @return new string */ public static String compact( String str ) { return FastStringUtils.noCopyStringFromChars( Chr.compact( FastStringUtils.toCharArray(str) ) ); }
/** * Convert to camel case and pass upper or lower * @param inStr string to convert * @param upper upper flag * @return new string */ public static String camelCase( String inStr, boolean upper ) { char[] in = FastStringUtils.toCharArray(inStr); char[] out = Chr.camelCase( in, upper ); return FastStringUtils.noCopyStringFromChars( out ); }
/** * 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)); }
/** * Get slice of string * @param str string * @param start start index * @param end end index * @return new string */ public static String slc( String str, int start, int end ) { return FastStringUtils.noCopyStringFromChars(Chr.slc(FastStringUtils.toCharArray(str), start, end)); }
/** * Gets rid of null characters lurking in the string * @param str string * @return new string */ public static String compact( String str ) { return FastStringUtils.noCopyStringFromChars( Chr.compact( FastStringUtils.toCharArray(str) ) ); }
/** * Get slice of string * @param str string * @param start start index * @param end end index * @return new string */ public static String slc( String str, int start, int end ) { return FastStringUtils.noCopyStringFromChars(Chr.slc(FastStringUtils.toCharArray(str), start, end)); }
/** * Add a char to a string * @param str string * @param c char * @return new string */ public static String add( String str, char c ) { return FastStringUtils.noCopyStringFromChars( Chr.add( FastStringUtils.toCharArray(str), c ) ); }
/** * Convert to under bar case * @param inStr input string * @return new string */ public static String underBarCase( String inStr ) { char[] in = FastStringUtils.toCharArray(inStr); char[] out = Chr.underBarCase( in ); return FastStringUtils.noCopyStringFromChars( out ); }
/** * Convert to under bar case * @param inStr input string * @return new string */ public static String underBarCase( String inStr ) { char[] in = FastStringUtils.toCharArray(inStr); char[] out = Chr.underBarCase( in ); return FastStringUtils.noCopyStringFromChars( out ); }
/** * 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) ) ); }
/** * 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) ) ); }