Files
allwpilib/wpinet/src/main/java/edu/wpi/first/net/MulticastServiceResolver.java

72 lines
1.9 KiB
Java
Raw Normal View History

// Copyright (c) FIRST and other WPILib contributors.
// Open Source Software; you can modify and/or share it under the terms of
// the WPILib BSD license file in the root directory of this project.
package edu.wpi.first.net;
import edu.wpi.first.util.WPICleaner;
import java.lang.ref.Cleaner.Cleanable;
/** Class to resolve a service over mDNS. */
public class MulticastServiceResolver implements AutoCloseable {
private final int m_handle;
private final Cleanable m_cleanable;
private static Runnable cleanupAction(int handle) {
return () -> WPINetJNI.freeMulticastServiceResolver(handle);
}
/**
* Creates a MulticastServiceResolver.
*
* @param serviceType service type to look for
*/
2023-12-09 21:45:02 -08:00
@SuppressWarnings("this-escape")
public MulticastServiceResolver(String serviceType) {
m_handle = WPINetJNI.createMulticastServiceResolver(serviceType);
m_cleanable = WPICleaner.register(this, cleanupAction(m_handle));
}
@Override
public void close() {
m_cleanable.clean();
}
/** Starts multicast service resolver. */
public void start() {
WPINetJNI.startMulticastServiceResolver(m_handle);
}
/** Stops multicast service resolver. */
public void stop() {
WPINetJNI.stopMulticastServiceResolver(m_handle);
}
/**
* Returns true if there's a multicast service resolver implementation.
*
* @return True if there's a multicast service resolver implementation.
*/
public boolean hasImplementation() {
return WPINetJNI.getMulticastServiceResolverHasImplementation(m_handle);
}
/**
* Returns event handle.
*
* @return Event handle.
*/
public int getEventHandle() {
return WPINetJNI.getMulticastServiceResolverEventHandle(m_handle);
}
/**
* Returns multicast service resolver data.
*
* @return Multicast service resolver data.
*/
public ServiceData[] getData() {
return WPINetJNI.getMulticastServiceResolverData(m_handle);
}
}