X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=enrichment-coordinator-service%2Fsrc%2Fmain%2Fjava%2Forg%2Foransc%2Fenrichment%2Frepository%2FEiProducer.java;h=d8b201581ed0e58e007b2cd9f47bac450869b523;hb=367608a9f6c71c2aaae45ed8b1099b9c8e51c0f7;hp=30e62de3596bccd1f2c13de078308ff9a2c7027a;hpb=ebf3211ddd6e634ca9c0a2fec56abd1f12c7625d;p=nonrtric.git diff --git a/enrichment-coordinator-service/src/main/java/org/oransc/enrichment/repository/EiProducer.java b/enrichment-coordinator-service/src/main/java/org/oransc/enrichment/repository/EiProducer.java index 30e62de3..d8b20158 100644 --- a/enrichment-coordinator-service/src/main/java/org/oransc/enrichment/repository/EiProducer.java +++ b/enrichment-coordinator-service/src/main/java/org/oransc/enrichment/repository/EiProducer.java @@ -21,19 +21,65 @@ package org.oransc.enrichment.repository; import java.util.Collection; +import java.util.HashSet; +import java.util.Set; -import org.immutables.gson.Gson; -import org.immutables.value.Value; +import lombok.Getter; -@Value.Immutable -@Gson.TypeAdapters -public interface EiProducer { - public String id(); +public class EiProducer { + @Getter + private final String id; - public Collection eiTypes(); + @Getter + private final Collection eiTypes; - public String jobCreationCallbackUrl(); + @Getter + private final String jobCallbackUrl; - public String jobDeletionCallbackUrl(); + @Getter + private final String producerSupervisionCallbackUrl; + + private final Set enabledJobs = new HashSet<>(); + + private int unresponsiveCounter = 0; + + public EiProducer(String id, Collection eiTypes, String jobCallbackUrl, + String producerSupervisionCallbackUrl) { + this.id = id; + this.eiTypes = eiTypes; + this.jobCallbackUrl = jobCallbackUrl; + this.producerSupervisionCallbackUrl = producerSupervisionCallbackUrl; + } + + public synchronized void setAliveStatus(boolean isAlive) { + if (isAlive) { + unresponsiveCounter = 0; + } else { + unresponsiveCounter++; + } + } + + public synchronized boolean isDead() { + return this.unresponsiveCounter >= 3; + } + + public synchronized boolean isAvailable() { + return this.unresponsiveCounter == 0; + } + + public synchronized void setJobEnabled(EiJob job) { + this.enabledJobs.add(job.getId()); + } + + public synchronized void setJobDisabled(EiJob job) { + this.enabledJobs.remove(job.getId()); + } + + /** + * Is the job enabled for this producer? + */ + public synchronized boolean isJobEnabled(EiJob job) { + return this.enabledJobs.contains(job.getId()); + } }