private static <T> T slowCreate(final EventConsumer consumer, Class<T> clazz) { int msgIdx = FieldReferenceOffsetManager.lookupTemplateLocator(clazz.getAnnotation(ProngTemplateMessage.class).templateId(), Pipe.from(consumer.output)); if (PipeWriter.tryWriteFragment(consumer.output, msgIdx)) { T result = (T) Proxy.newProxyInstance( clazz.getClassLoader(), new Class[] { clazz }, new OutputPipeInvocationHandler(consumer.output, msgIdx, clazz)); consumer.cached = result; //TODO: needs smarter pool but this is fine for now. consumer.cachedMsgId = msgIdx; return result; } else { return null; } }
private static <T> T slowCreate(final EventConsumer consumer, Class<T> clazz) { int msgIdx = FieldReferenceOffsetManager.lookupTemplateLocator(clazz.getAnnotation(ProngTemplateMessage.class).templateId(), Pipe.from(consumer.output)); if (PipeWriter.tryWriteFragment(consumer.output, msgIdx)) { T result = (T) Proxy.newProxyInstance( clazz.getClassLoader(), new Class[] { clazz }, new OutputPipeInvocationHandler(consumer.output, msgIdx, clazz)); consumer.cached = result; //TODO: needs smarter pool but this is fine for now. consumer.cachedMsgId = msgIdx; return result; } else { return null; } }
private static <T> T slowCreate(final EventConsumer consumer, Class<T> clazz) { int msgIdx = FieldReferenceOffsetManager.lookupTemplateLocator(clazz.getAnnotation(ProngTemplateMessage.class).templateId(), Pipe.from(consumer.output)); if (PipeWriter.tryWriteFragment(consumer.output, msgIdx)) { T result = (T) Proxy.newProxyInstance( clazz.getClassLoader(), new Class[] { clazz }, new OutputPipeInvocationHandler(consumer.output, msgIdx, clazz)); consumer.cached = result; //TODO: needs smarter pool but this is fine for now. consumer.cachedMsgId = msgIdx; return result; } else { return null; } }