public OutputPort<IMonitoringRecord> getOutputPort() { return this.binaryFile2RecordFilter.getOutputPort(); }
@Override public void onStarting() { super.onStarting(); this.recordFromBinaryFileCreator = new RecordFromBinaryFileCreator(this.classNameRegistryRepository); }
public DirWithBin2RecordFilter(final ClassNameRegistryRepository classNameRegistryRepository) { this.classNameRegistryRepository = classNameRegistryRepository; this.classNameRegistryCreationFilter = new ClassNameRegistryCreationFilter(classNameRegistryRepository); this.binaryFile2RecordFilter = new BinaryFile2RecordFilter(classNameRegistryRepository); }
public Dir2RecordsFilter(final ClassNameRegistryRepository classNameRegistryRepository) { this.classNameRegistryRepository = classNameRegistryRepository; // does not yet work with more than one thread due to classNameRegistryRepository: classNameRegistryRepository is set after the ctor // create stages final ClassNameRegistryCreationFilter tempClassNameRegistryCreationFilter = new ClassNameRegistryCreationFilter(this.classNameRegistryRepository); final Directory2FilesFilter directory2FilesFilter = new Directory2FilesFilter(); final FileExtensionSwitch fileExtensionSwitch = new FileExtensionSwitch(); final DatFile2RecordFilter datFile2RecordFilter = new DatFile2RecordFilter(this.classNameRegistryRepository); final BinaryFile2RecordFilter binaryFile2RecordFilter = new BinaryFile2RecordFilter(this.classNameRegistryRepository); this.recordMerger = new Merger<>(); // store ports due to readability reasons final OutputPort<File> datFileOutputPort = fileExtensionSwitch.addFileExtension(FSUtil.DAT_FILE_EXTENSION); final OutputPort<File> binFileOutputPort = fileExtensionSwitch.addFileExtension(BinaryCompressionMethod.NONE.getFileExtension()); // connect ports by pipes this.connectPorts(tempClassNameRegistryCreationFilter.getOutputPort(), directory2FilesFilter.getInputPort()); this.connectPorts(directory2FilesFilter.getOutputPort(), fileExtensionSwitch.getInputPort()); this.connectPorts(datFileOutputPort, datFile2RecordFilter.getInputPort()); this.connectPorts(binFileOutputPort, binaryFile2RecordFilter.getInputPort()); this.connectPorts(datFile2RecordFilter.getOutputPort(), this.recordMerger.getNewInputPort()); this.connectPorts(binaryFile2RecordFilter.getOutputPort(), this.recordMerger.getNewInputPort()); // prepare pipeline this.classNameRegistryCreationFilter = tempClassNameRegistryCreationFilter; }
final DataInputStream inputStream = new DataInputStream(filter.chainInputStream(new FileInputStream(binaryFile))); try { this.recordFromBinaryFileCreator.createRecordsFromBinaryFile(binaryFile, inputStream, this.outputPort); } catch (final MonitoringRecordException e) { this.logger.error("Error reading file: " + binaryFile, e); } finally { if (inputStream != null) { this.closeStream(inputStream);
private void processBuffer(final ReaderRegistry<String> registry, final IValueDeserializer deserializer, final OutputPort<IMonitoringRecord> outputPort) throws IOException { this.buffer.flip(); try { /** Needs at least an record id. */ while ((this.buffer.position() + 4) <= this.buffer.limit()) { this.buffer.mark(); final IMonitoringRecord record = this.deserializeRecord(registry, deserializer); if (record == null) { return; } else { outputPort.send(record); } } this.buffer.mark(); this.buffer.compact(); } catch (final BufferUnderflowException ex) { RecordFromBinaryFileCreator.LOGGER.warn("Unexpected buffer underflow. Resetting and compacting buffer.", ex); this.buffer.reset(); this.buffer.compact(); throw ex; } }
this.processBuffer(registry, deserializer, outputPort);