All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.fluxtion.runtime.dataflow.function.PeekFlowFunction Maven / Gradle / Ivy

The newest version!
package com.fluxtion.runtime.dataflow.function;

import com.fluxtion.runtime.annotations.NoTriggerReference;
import com.fluxtion.runtime.annotations.OnTrigger;
import com.fluxtion.runtime.dataflow.DoubleFlowFunction;
import com.fluxtion.runtime.dataflow.FlowFunction;
import com.fluxtion.runtime.dataflow.IntFlowFunction;
import com.fluxtion.runtime.dataflow.LongFlowFunction;
import com.fluxtion.runtime.partition.LambdaReflection.SerializableConsumer;
import lombok.ToString;

public class PeekFlowFunction> extends AbstractFlowFunction {

    @NoTriggerReference
    final SerializableConsumer eventStreamConsumer;
    transient final String auditInfo;

    public PeekFlowFunction(S inputEventStream, SerializableConsumer eventStreamConsumer) {
        super(inputEventStream, eventStreamConsumer);
        this.eventStreamConsumer = eventStreamConsumer;
        auditInfo = eventStreamConsumer.method().getDeclaringClass().getSimpleName()
                + "->" + eventStreamConsumer.method().getName();
    }

    @OnTrigger
    public void peek() {
        auditLog.info("peekConsumer", auditInfo);
        eventStreamConsumer.accept(get());
    }

    @Override
    public T get() {
        return getInputEventStream().get();
    }

    @ToString
    public static class IntPeekFlowFunction extends PeekFlowFunction implements IntFlowFunction {

        public IntPeekFlowFunction(IntFlowFunction inputEventStream, SerializableConsumer eventStreamConsumer) {
            super(inputEventStream, eventStreamConsumer);
        }

        @Override
        public int getAsInt() {
            return getInputEventStream().getAsInt();
        }
    }


    @ToString
    public static class DoublePeekFlowFunction extends PeekFlowFunction implements DoubleFlowFunction {

        public DoublePeekFlowFunction(DoubleFlowFunction inputEventStream, SerializableConsumer eventStreamConsumer) {
            super(inputEventStream, eventStreamConsumer);
        }

        @Override
        public double getAsDouble() {
            return getInputEventStream().getAsDouble();
        }
    }


    @ToString
    public static class LongPeekFlowFunction extends PeekFlowFunction implements LongFlowFunction {

        public LongPeekFlowFunction(LongFlowFunction inputEventStream, SerializableConsumer eventStreamConsumer) {
            super(inputEventStream, eventStreamConsumer);
        }

        @Override
        public long getAsLong() {
            return getInputEventStream().getAsLong();
        }
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy