38 lines
1.2 KiB
Java
38 lines
1.2 KiB
Java
package ru.kirillius.pf.sdn.service;
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
import lombok.Setter;
|
|
import org.springframework.stereotype.Service;
|
|
import ru.kirillius.pf.sdn.api.Networking.IPv4Subnet;
|
|
import ru.kirillius.pf.sdn.entity.AutonomousSystemCacheEntry;
|
|
import ru.kirillius.pf.sdn.repository.AutonomousSystemCacheRepository;
|
|
|
|
import java.util.List;
|
|
import java.util.Optional;
|
|
|
|
@Setter
|
|
@RequiredArgsConstructor
|
|
@Service
|
|
public class AutonomousSystemCacheService {
|
|
private final AutonomousSystemCacheRepository repository;
|
|
|
|
public void store(int number, List<IPv4Subnet> subnets) {
|
|
synchronized (repository) {
|
|
if (repository.existsByNumber(number)) {
|
|
repository.findByNumber(number).ifPresent(entry -> {
|
|
entry.setPrefixes(subnets);
|
|
repository.save(entry);
|
|
});
|
|
} else {
|
|
repository.save(AutonomousSystemCacheEntry.builder().number(number).prefixes(subnets).build());
|
|
}
|
|
}
|
|
}
|
|
|
|
public Optional<AutonomousSystemCacheEntry> load(int number) {
|
|
synchronized (repository) {
|
|
return repository.findByNumber(number);
|
|
}
|
|
}
|
|
}
|