package org.nd4j.parameterserver.distributed.logic; import org.nd4j.linalg.exception.ND4JIllegalStateException; import org.nd4j.parameterserver.distributed.conf.VoidConfiguration; import org.nd4j.parameterserver.distributed.messages.TrainingMessage; import org.nd4j.parameterserver.distributed.transport.Transport; /** * @author raver119@gmail.com */ public interface RetransmissionHandler { public enum TransmissionStatus { MESSAGE_SENT, NOT_CONNECTED, BACKPRESSURE, ADMIN_ACTION, } void init(VoidConfiguration configuration, Transport transport); void handleMessage(TrainingMessage message); void onBackPressure(); static TransmissionStatus getTransmissionStatus(long resp) { if (resp >= 0) { return TransmissionStatus.MESSAGE_SENT; } else if (resp == -1) { return TransmissionStatus.NOT_CONNECTED; } else if (resp == -2) { return TransmissionStatus.BACKPRESSURE; } else if (resp == -3) { return TransmissionStatus.ADMIN_ACTION; } else { throw new ND4JIllegalStateException("Unknown response from Aeron received: [" + resp + "]"); } } }