Removed service implementation. Refactored interfaces

This commit is contained in:
Andrey Terentev 2023-11-16 13:02:01 +07:00
parent 8a14640aaa
commit 3b89c79540
2 changed files with 11 additions and 45 deletions

View File

@ -5,18 +5,25 @@ import ru.dragonestia.loadbalancer.model.Node;
import ru.dragonestia.loadbalancer.model.User; import ru.dragonestia.loadbalancer.model.User;
import java.util.List; import java.util.List;
import java.util.Optional;
public interface BucketService { public interface BucketService {
void createBucket(Node node, Bucket lobby); void createBucket(Bucket lobby);
void removeBucket(Node node, Bucket lobby); void removeBucket(Bucket lobby);
Optional<Bucket> findBucket(Node node, String identifier);
List<Bucket> allBuckets(Node node); List<Bucket> 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<User> users); Bucket pickAvailableBucket(Node node, List<User> users);
void freeBucket(Node node, List<User> users); void freeBucket(Bucket bucket, List<User> users);
} }

View File

@ -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<String, Node> 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<Node> allNodes() {
return nodes.values().stream().toList();
}
@Override
public Optional<Node> findNode(String identifier) {
return nodes.containsKey(identifier)? Optional.of(nodes.get(identifier)) : Optional.empty();
}
}