2 * Copyright (c) 2017 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
9 package org.opendaylight.controller.clustering.it.provider.impl;
11 import com.google.common.base.Preconditions;
12 import java.util.concurrent.atomic.AtomicLong;
13 import org.opendaylight.yang.gen.v1.tag.opendaylight.org._2017.controller.yang.lowlevel.control.rev170215.UnsubscribeYnlOutput;
14 import org.opendaylight.yang.gen.v1.tag.opendaylight.org._2017.controller.yang.lowlevel.control.rev170215.UnsubscribeYnlOutputBuilder;
15 import org.opendaylight.yang.gen.v1.tag.opendaylight.org._2017.controller.yang.lowlevel.target.rev170215.IdSequence;
16 import org.opendaylight.yang.gen.v1.tag.opendaylight.org._2017.controller.yang.lowlevel.target.rev170215.OdlMdsalLowlevelTargetListener;
17 import org.slf4j.Logger;
18 import org.slf4j.LoggerFactory;
20 public class YnlListener implements OdlMdsalLowlevelTargetListener {
22 private static final Logger LOG = LoggerFactory.getLogger(YnlListener.class);
24 private final String id;
26 private AtomicLong localNumber = new AtomicLong();
27 private AtomicLong allNot = new AtomicLong();
28 private AtomicLong idNot = new AtomicLong();
29 private AtomicLong errNot = new AtomicLong();
31 public YnlListener(final String id) {
32 Preconditions.checkNotNull(id);
37 public void onIdSequence(final IdSequence notification) {
38 LOG.debug("Received id-sequence notification, : {}", notification);
40 allNot.incrementAndGet();
42 if (notification.getId().equals(id)) {
43 idNot.incrementAndGet();
45 localNumber.getAndUpdate((value -> {
46 if (notification.getSequenceNumber() - value == 1) {
49 errNot.getAndIncrement();
56 public UnsubscribeYnlOutput getOutput() {
57 return new UnsubscribeYnlOutputBuilder()
58 .setAllNot(allNot.get())
59 .setErrNot(errNot.get())
60 .setIdNot(idNot.get())
61 .setLocalNumber(localNumber.get())