Freeze upstream versions
[netvirt.git] / ipv6service / impl / src / main / java / org / opendaylight / netvirt / ipv6service / utils / Ipv6TimerWheel.java
1 /*
2  * Copyright (c) 2016 Dell Inc. and others.  All rights reserved.
3  *
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
7  */
8
9 package org.opendaylight.netvirt.ipv6service.utils;
10
11 import io.netty.util.HashedWheelTimer;
12 import io.netty.util.Timeout;
13 import io.netty.util.Timer;
14 import io.netty.util.TimerTask;
15 import java.util.concurrent.TimeUnit;
16
17 public class Ipv6TimerWheel implements AutoCloseable {
18     private final Timer ipv6PeriodicRATimerWheel = new HashedWheelTimer();
19
20     public Timeout setPeriodicTransmissionTimeout(TimerTask task, long delay, TimeUnit unit) {
21         Timeout timeout = null;
22         synchronized (ipv6PeriodicRATimerWheel) {
23             timeout  = ipv6PeriodicRATimerWheel.newTimeout(task, delay, unit);
24         }
25         return timeout;
26     }
27
28     public void cancelPeriodicTransmissionTimeout(Timeout timeout) {
29         if (timeout != null) {
30             synchronized (timeout) {
31                 if (!timeout.isExpired()) {
32                     timeout.cancel();
33                 }
34             }
35         }
36     }
37
38     @Override
39     public void close() {
40         ipv6PeriodicRATimerWheel.stop();
41     }
42 }