private EventStreamHandler createSubscriberHandlers(ChannelConnection connection, ClassLoader loader) throws Fabric3Exception { DataType dataType = getEventType(connection.getEventStream()); EventStreamHandler head; if (dataType.getType().equals(byte[][].class)) { // multi-frame data head = handlerFactory.createHandler(TWO_DIMENSIONAL_BYTES, dataType, Collections.<Class<?>>emptyList(), loader); } else { // single frame data head = handlerFactory.createHandler(BYTES, dataType, Collections.<Class<?>>emptyList(), loader); } return head; }
private void attachConnection(ChannelConnection connection, Publisher publisher, ClassLoader loader) throws Fabric3Exception { EventStream stream = connection.getEventStream(); DataType dataType = getEventType(stream); EventStreamHandler transformer; if (dataType.getType().equals(byte[][].class)) { // multi-frame data transformer = handlerFactory.createHandler(dataType, TWO_DIMENSIONAL_BYTES, Collections.<Class<?>>emptyList(), loader); } else { // single frame data transformer = handlerFactory.createHandler(dataType, BYTES, Collections.<Class<?>>emptyList(), loader); } stream.addHandler(transformer); stream.addHandler(new PublisherHandler(publisher)); }
private void addTypeTransformer(PhysicalChannelConnection connection, EventStream stream, ClassLoader loader) { if (transformerHandlerFactory == null) { return; // bootstrap } List<DataType> sourceTypes = connection.getSource().getDataTypes(); List<DataType> targetTypes = connection.getTarget().getDataTypes(); if (sourceTypes.isEmpty() || targetTypes.isEmpty()) { return; } if (sourceTypes.size() > 1 || targetTypes.size() > 1) { // for now, only support one data type throw new Fabric3Exception("Multi-type events are not supported"); } DataType sourceType = sourceTypes.get(0); DataType targetType = targetTypes.get(0); if (sourceType.equals(targetType)) { return; } List<Class<?>> eventTypes = Collections.singletonList(stream.getEventType()); EventStreamHandler handler = transformerHandlerFactory.createHandler(sourceType, targetType, eventTypes, loader); stream.addHandler(handler); }
private void addTypeTransformer(PhysicalChannelConnection connection, EventStream stream, ClassLoader loader) { if (transformerHandlerFactory == null) { return; // bootstrap } List<DataType> sourceTypes = connection.getSource().getDataTypes(); List<DataType> targetTypes = connection.getTarget().getDataTypes(); if (sourceTypes.isEmpty() || targetTypes.isEmpty()) { return; } if (sourceTypes.size() > 1 || targetTypes.size() > 1) { // for now, only support one data type throw new Fabric3Exception("Multi-type events are not supported"); } DataType sourceType = sourceTypes.get(0); DataType targetType = targetTypes.get(0); if (sourceType.equals(targetType)) { return; } List<Class<?>> eventTypes = Collections.singletonList(stream.getEventType()); EventStreamHandler handler = transformerHandlerFactory.createHandler(sourceType, targetType, eventTypes, loader); stream.addHandler(handler); }