in provider/fastbin/src/main/java/org/apache/aries/rsa/provider/fastbin/tcp/ServerInvokerImpl.java [231:274]
protected void onCommand(final Transport transport, Object data) {
try {
final DataByteArrayInputStream bais = new DataByteArrayInputStream((Buffer) data);
final int size = bais.readInt();
final long correlation = bais.readVarLong();
// Use UTF8Buffer instead of string to avoid encoding/decoding UTF-8 strings
// for every request.
final UTF8Buffer service = readBuffer(bais).utf8();
final Buffer encoded_method = readBuffer(bais);
final ServiceFactoryHolder holder = holders.get(service);
Runnable task = null;
if(holder==null) {
String message = "The requested service {"+service+"} is not available";
LOGGER.warn(message);
task = new SendTask(bais, correlation, transport, message);
}
final Object svc = holder==null ? null : holder.factory.get();
if(holder!=null) {
try {
final MethodData methodData = holder.getMethodData(encoded_method);
task = new SendTask(svc, bais, holder, correlation, methodData, transport);
}
catch (ReflectiveOperationException reflectionEx) {
final String methodName = encoded_method.utf8().toString();
String message = "The requested method {"+methodName+"} is not available";
LOGGER.warn(message);
task = new SendTask(bais, correlation, transport, message);
}
}
Executor executor;
if( svc instanceof Dispatched ) {
executor = ((Dispatched)svc).queue();
} else {
executor = blockingExecutor;
}
executor.execute(task);
} catch (Exception e) {
LOGGER.info("Error while reading request", e);
}
}