2 * Copyright (c) 2010-2023 Contributors to the openHAB project
4 * See the NOTICE file(s) distributed with this work for additional
7 * This program and the accompanying materials are made available under the
8 * terms of the Eclipse Public License 2.0 which is available at
9 * http://www.eclipse.org/legal/epl-2.0
11 * SPDX-License-Identifier: EPL-2.0
13 package org.openhab.binding.amazondashbutton.internal.pcap;
15 import java.util.List;
16 import java.util.Objects;
17 import java.util.function.Function;
19 import org.pcap4j.core.PcapAddress;
20 import org.pcap4j.core.PcapHandle;
21 import org.pcap4j.core.PcapNativeException;
22 import org.pcap4j.core.PcapNetworkInterface;
23 import org.pcap4j.core.PcapNetworkInterface.PromiscuousMode;
26 * This wrapper is needed as {@link PcapNetworkInterface#equals(Object)} and {@link PcapNetworkInterface#hashCode()} are
27 * not implemented in an appropriate way. The wrapper delegates all methods calls except {@link #equals(Object)} and
28 * {@link #hashCode()} to {@link #pcapNetworkInterface}.
30 * @author Oliver Libutzki - Initial contribution
33 public class PcapNetworkInterfaceWrapper {
38 private final PcapNetworkInterface pcapNetworkInterface;
41 * Use this Guava function in order to create a {@link PcapNetworkInterfaceWrapper} instance.
43 public static final Function<PcapNetworkInterface, PcapNetworkInterfaceWrapper> TRANSFORMER = new Function<PcapNetworkInterface, PcapNetworkInterfaceWrapper>() {
46 public PcapNetworkInterfaceWrapper apply(PcapNetworkInterface pcapNetworkInterface) {
47 return new PcapNetworkInterfaceWrapper(pcapNetworkInterface);
51 private PcapNetworkInterfaceWrapper(PcapNetworkInterface pcapNetworkInterface) {
52 if (pcapNetworkInterface == null) {
53 throw new IllegalArgumentException("Don't pass null.");
55 this.pcapNetworkInterface = pcapNetworkInterface;
58 public List<PcapAddress> getAddresses() {
59 return pcapNetworkInterface.getAddresses();
62 public String getName() {
63 return pcapNetworkInterface.getName();
66 public String getDescription() {
67 return pcapNetworkInterface.getDescription();
70 public PcapHandle openLive(int arg0, PromiscuousMode arg1, int arg2) throws PcapNativeException {
71 return pcapNetworkInterface.openLive(arg0, arg1, arg2);
75 public boolean equals(Object obj) {
79 if (getClass() != obj.getClass()) {
82 final PcapNetworkInterfaceWrapper other = (PcapNetworkInterfaceWrapper) obj;
83 return Objects.equals(this.getName(), other.getName());
87 public int hashCode() {
88 return Objects.hashCode(this.getName());
92 public String toString() {
93 return pcapNetworkInterface.toString();