public String encodeMethodCalls(String returnAddress, Collection<MethodCall<Object>> methodCalls) { CharBuf buf = bufRef.get(); buf.recycle(); buf.addChar(PROTOCOL_MARKER); buf.addChar(PROTOCOL_MESSAGE_TYPE_GROUP); buf.addChar(PROTOCOL_SEPARATOR); buf.add(returnAddress); buf.addChar(PROTOCOL_SEPARATOR); buf.addChar(PROTOCOL_MESSAGE_SEPARATOR); for (MethodCall<Object> methodCall : methodCalls) { encodeMethodCallAsString(buf, methodCall); buf.addChar(PROTOCOL_MESSAGE_SEPARATOR); } return buf.toString(); }
private void encodeResponseAsString(CharBuf buf, Response<Object> response, boolean encodeAddress) { buf.addChar(PROTOCOL_MESSAGE_TYPE_RESPONSE); buf.addChar(PROTOCOL_SEPARATOR); buf.add(response.id()); buf.addChar(PROTOCOL_SEPARATOR); buf.add(response.address()); buf.addChar(PROTOCOL_SEPARATOR); buf.addChar(PROTOCOL_SEPARATOR); //reserved for header buf.addChar(PROTOCOL_SEPARATOR); //reserved for params buf.addChar(PROTOCOL_SEPARATOR); //reserved for object name buf.addChar(PROTOCOL_SEPARATOR); //reserved for method name buf.add(response.timestamp()); buf.addChar(PROTOCOL_SEPARATOR); buf.add(response.wasErrors() ? 1 : 0); buf.addChar(PROTOCOL_SEPARATOR); final Object body = response.body(); final JsonSerializer serializer = jsonSerializer.get(); if (body != null) { serializer.serialize(buf, body); } else { buf.addNull(); } }
private String getURICreateParamsIfNeeded(HttpRequest request) { String uri = request.getUri(); final MultiMap<String, String> params = request.params(); if (params != null && params.size() > 0) { CharBuf charBuf = CharBuf.create(request.getUri().length() + params.size() * 10); charBuf.add(request.getUri()).add("?"); for (Map.Entry<String, Collection<String>> entry : params) { try { String key = URLEncoder.encode(entry.getKey(), "UTF-8"); final Collection<String> values = entry.getValue(); for (String val : values) { val = URLEncoder.encode(val, "UTF-8"); charBuf.addString(key).add('=').addString(val).add('&'); } } catch (UnsupportedEncodingException e) { errorHandler.accept(e); throw new IllegalStateException(e); } } charBuf.removeLastChar(); uri = charBuf.toString(); } return uri; }
public static void stackTraceToJson(CharBuf buffer, StackTraceElement[] stackTrace) { if (stackTrace.length == 0) { buffer.addLine("[]"); return; } buffer.multiply(' ', 16).addLine('['); for (int index = 0; index < stackTrace.length; index++) { StackTraceElement element = stackTrace[index]; if (element.getClassName().contains("Exceptions")) { continue; } buffer.indent(17).add("[ ").asJsonString(element.getMethodName()) .add(','); buffer.indent(3).asJsonString(element.getClassName()); if (element.getLineNumber() > 0) { buffer.add(","); buffer.indent(3).asJsonString("" + element.getLineNumber()) .addLine(" ],"); } else { buffer.addLine(" ],"); } } buffer.removeLastChar(); //trailing \n buffer.removeLastChar(); //trailing , buffer.addLine().multiply(' ', 15).add(']'); }
public String encodeResponses(String returnAddress, Collection<Response<Object>> responses) { CharBuf buf = bufRef.get(); buf.recycle(); buf.addChar(PROTOCOL_MARKER); buf.addChar(PROTOCOL_MESSAGE_TYPE_GROUP); buf.addChar(PROTOCOL_SEPARATOR); buf.add(returnAddress); buf.addChar(PROTOCOL_SEPARATOR); buf.addChar(PROTOCOL_MESSAGE_SEPARATOR); int index = 0; for (Response<Object> response : responses) { boolean encodeAddress = index == 0; encodeResponseAsString(buf, response, encodeAddress); buf.addChar(PROTOCOL_MESSAGE_SEPARATOR); index++; } return buf.toString(); }
public CharBuf multiply(char c, int len) { for (int index=0; index<len; index++) { this.add(c); } return this; }
private void encodeHeadersAndParams(CharBuf buf, MultiMap<String, String> headerOrParams) { if (headerOrParams == null) { return; } final Map<? extends String, ? extends Collection<String>> map = headerOrParams.baseMap(); final Set<? extends Map.Entry<? extends String, ? extends Collection<String>>> entries = map.entrySet(); for (Map.Entry<? extends String, ? extends Collection<String>> entry : entries) { final Collection<String> values = entry.getValue(); if (values.size() == 0) { continue; } buf.add(entry.getKey()); buf.addChar(Protocol.PROTOCOL_KEY_HEADER_DELIM); for (String value : values) { buf.add(value); buf.addChar(Protocol.PROTOCOL_VALUE_HEADER_DELIM); } buf.addChar(Protocol.PROTOCOL_ENTRY_HEADER_DELIM); } } }
private void encodeMethodCallAsString(CharBuf buf, MethodCall<Object> methodCall) { buf.addChar(PROTOCOL_MESSAGE_TYPE_METHOD); buf.addChar(PROTOCOL_SEPARATOR); buf.add(methodCall.id()); buf.addChar(PROTOCOL_SEPARATOR); buf.add(methodCall.address()); encodeHeadersAndParams(buf, methodCall.params()); buf.addChar(PROTOCOL_SEPARATOR); buf.add(methodCall.objectName()); buf.addChar(PROTOCOL_SEPARATOR); buf.add(methodCall.name()); buf.addChar(PROTOCOL_SEPARATOR); buf.add(methodCall.timestamp()); buf.addChar(PROTOCOL_SEPARATOR); final Object body = methodCall.body();
public CharBuf multiply(CharSequence str, int len) { for (int index=0; index<len; index++) { this.add(str.toString()); } return this; }
public void addAsUTF( byte[] value ) { String str = new String(value, StandardCharsets.UTF_8); final char[] chars = FastStringUtils.toCharArray(str); this.add(chars); }
public static String joinObjects( char delim, Object... args ) { CharBuf builder = CharBuf.create( 10 * args.length ); int index = 0; for ( Object arg : args ) { builder.add( arg == null ? "null" : arg.toString() ); if ( !( index == args.length - 1 ) ) { builder.add( delim ); } index++; } return builder.toString(); }
public CharBuf add( String string, int start, int end ) { int charsLength = end - start ; if ( charsLength + location > capacity ) { buffer = Chr.grow( buffer, buffer.length * 2 + charsLength ); } return this.add(string.substring(start, end)); }
public static String join( String... args ) { CharBuf builder = CharBuf.create( 10 * args.length ); for ( String arg : args ) { builder.add( arg ); } return builder.toString(); }
public static String join( String... args ) { CharBuf builder = CharBuf.create( 10 * args.length ); for ( String arg : args ) { builder.add( arg ); } return builder.toString(); }