Removed service implementation. Refactored interfaces
This commit is contained in:
parent
8a14640aaa
commit
3b89c79540
@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Loading…
x
Reference in New Issue
Block a user