From 3b89c79540439ba351c22c55d82435c1d13eeb3a Mon Sep 17 00:00:00 2001 From: ScarletRedMan Date: Thu, 16 Nov 2023 13:02:01 +0700 Subject: [PATCH] Removed service implementation. Refactored interfaces --- .../loadbalancer/service/BucketService.java | 15 +++++-- .../service/impl/NodeServiceImpl.java | 41 ------------------- 2 files changed, 11 insertions(+), 45 deletions(-) delete mode 100644 src/main/java/ru/dragonestia/loadbalancer/service/impl/NodeServiceImpl.java diff --git a/src/main/java/ru/dragonestia/loadbalancer/service/BucketService.java b/src/main/java/ru/dragonestia/loadbalancer/service/BucketService.java index 20926c7..465b547 100644 --- a/src/main/java/ru/dragonestia/loadbalancer/service/BucketService.java +++ b/src/main/java/ru/dragonestia/loadbalancer/service/BucketService.java @@ -5,18 +5,25 @@ import ru.dragonestia.loadbalancer.model.Node; import ru.dragonestia.loadbalancer.model.User; import java.util.List; +import java.util.Optional; public interface BucketService { - void createBucket(Node node, Bucket lobby); + void createBucket(Bucket lobby); - void removeBucket(Node node, Bucket lobby); + void removeBucket(Bucket lobby); + + Optional findBucket(Node node, String identifier); List allBuckets(Node node); - int countAvailableBuckets(Node node); + default int countAvailableBuckets(Node node) { + return countAvailableBuckets(node, 1); + } + + int countAvailableBuckets(Node node, int requiredSlots); Bucket pickAvailableBucket(Node node, List users); - void freeBucket(Node node, List users); + void freeBucket(Bucket bucket, List users); } diff --git a/src/main/java/ru/dragonestia/loadbalancer/service/impl/NodeServiceImpl.java b/src/main/java/ru/dragonestia/loadbalancer/service/impl/NodeServiceImpl.java deleted file mode 100644 index 83e11ed..0000000 --- a/src/main/java/ru/dragonestia/loadbalancer/service/impl/NodeServiceImpl.java +++ /dev/null @@ -1,41 +0,0 @@ -package ru.dragonestia.loadbalancer.service.impl; - -import org.springframework.stereotype.Service; -import ru.dragonestia.loadbalancer.model.Node; -import ru.dragonestia.loadbalancer.service.NodeService; - -import java.util.List; -import java.util.Map; -import java.util.Optional; -import java.util.concurrent.ConcurrentHashMap; - - -@Service -public class NodeServiceImpl implements NodeService { - - private final Map nodes = new ConcurrentHashMap<>(); - - @Override - public void createNode(Node node) { - if (nodes.containsKey(node.identifier())) { - throw new IllegalArgumentException("Node with id '" + node.identifier() + "' already exists"); - } - - nodes.put(node.identifier(), node); - } - - @Override - public void removeNode(Node node) { - nodes.remove(node.identifier()); - } - - @Override - public List allNodes() { - return nodes.values().stream().toList(); - } - - @Override - public Optional findNode(String identifier) { - return nodes.containsKey(identifier)? Optional.of(nodes.get(identifier)) : Optional.empty(); - } -}