X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=policy-agent%2Fsrc%2Fmain%2Fjava%2Forg%2Foransc%2Fpolicyagent%2Frepository%2FService.java;h=7b2c9bdec6c3d91df281221f485bd11397b16dbf;hb=6a39814272307d0207222c9229b0d765ac062bf0;hp=8efa54292e86f85ece352ca3f8ed8345b1f3e4a5;hpb=4a7dd457d5b179dd0f588663fc1476dacfca4f22;p=nonrtric.git diff --git a/policy-agent/src/main/java/org/oransc/policyagent/repository/Service.java b/policy-agent/src/main/java/org/oransc/policyagent/repository/Service.java index 8efa5429..7b2c9bde 100644 --- a/policy-agent/src/main/java/org/oransc/policyagent/repository/Service.java +++ b/policy-agent/src/main/java/org/oransc/policyagent/repository/Service.java @@ -17,8 +17,46 @@ * limitations under the License. * ========================LICENSE_END=================================== */ + package org.oransc.policyagent.repository; -public interface Service { +import java.time.Duration; +import java.time.Instant; + +import lombok.Getter; + +public class Service { + @Getter + private final String name; + private final Duration keepAliveInterval; + private Instant lastPing; + private final String callbackUrl; + + public Service(String name, Duration keepAliveInterval, String callbackUrl) { + this.name = name; + this.keepAliveInterval = keepAliveInterval; + this.callbackUrl = callbackUrl; + keepAlive(); + } + + public synchronized Duration getKeepAliveInterval() { + return this.keepAliveInterval; + } + + public synchronized void keepAlive() { + this.lastPing = Instant.now(); + } + + public synchronized boolean isExpired() { + return this.keepAliveInterval.getSeconds() > 0 && timeSinceLastPing().compareTo(this.keepAliveInterval) > 0; + } + + public synchronized Duration timeSinceLastPing() { + return Duration.between(this.lastPing, Instant.now()); + } + + public synchronized String getCallbackUrl() { + return this.callbackUrl; + } }