- private Mono<Ric> checkRicState(Ric ric) {
- if (ric.state() == RicState.UNDEFINED) {
- return startRecovery(ric);
- } else if (ric.state() == RicState.RECOVERING) {
+ private Mono<RicData> checkOneRic(RicData ricData) {
+ return checkRicState(ricData) //
+ .flatMap(x -> ricData.ric.getLock().lock(LockType.EXCLUSIVE)) //
+ .flatMap(x -> checkRicPolicies(ricData)) //
+ .flatMap(x -> ricData.ric.getLock().unlock()) //
+ .doOnError(throwable -> ricData.ric.getLock().unlockBlocking()) //
+ .flatMap(x -> checkRicPolicyTypes(ricData)); //
+ }
+
+ private static class RicData {
+ RicData(Ric ric, A1Client a1Client) {
+ this.ric = ric;
+ this.a1Client = a1Client;
+ }
+
+ final Ric ric;
+ final A1Client a1Client;
+ }
+
+ private Mono<RicData> createRicData(Ric ric) {
+ return Mono.just(ric) //
+ .flatMap(aRic -> this.a1ClientFactory.createA1Client(ric)) //
+ .flatMap(a1Client -> Mono.just(new RicData(ric, a1Client)));
+ }
+
+ private Mono<RicData> checkRicState(RicData ric) {
+ if (ric.ric.getState() == RicState.UNDEFINED) {
+ return startSynchronization(ric) //
+ .onErrorResume(t -> Mono.empty());
+ } else if (ric.ric.getState() == RicState.SYNCHRONIZING) {