mirror of
https://github.com/michaelrausch/Party-Parrots-At-Sea.git
synced 2026-05-09 14:28:43 +00:00
Added basic auto discovery functionality
- Servers can advertise themselves - Clients can detect servers on their local network Tags: #story[1247]
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
package seng302.visualiser;
|
||||
|
||||
import seng302.gameServer.ServerAdvertiser;
|
||||
|
||||
import javax.jmdns.JmDNS;
|
||||
import javax.jmdns.ServiceEvent;
|
||||
import javax.jmdns.ServiceListener;
|
||||
import java.io.IOException;
|
||||
import java.net.InetAddress;
|
||||
import java.net.UnknownHostException;
|
||||
|
||||
public class ServerListener{
|
||||
private static ServerListener instance;
|
||||
private ServerListenerDelegate delegate;
|
||||
private JmDNS jmdns = null;
|
||||
|
||||
private class GameServerListener implements ServiceListener {
|
||||
GameServerListener(){
|
||||
System.out.println("Created GSL instance");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void serviceAdded(ServiceEvent event) {
|
||||
delegate.serverDetected(event.getName(), "", 123, event.getInfo().getInet4Addresses().toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void serviceRemoved(ServiceEvent event) {
|
||||
delegate.serverRemoved(event.getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void serviceResolved(ServiceEvent event) {
|
||||
// Do nothing
|
||||
}
|
||||
}
|
||||
|
||||
private ServerListener() throws IOException {
|
||||
jmdns = JmDNS.create(InetAddress.getLocalHost());
|
||||
jmdns.addServiceListener(ServerAdvertiser.SERVICE_TYPE, new GameServerListener());
|
||||
}
|
||||
|
||||
public static ServerListener getInstance() throws IOException {
|
||||
if (instance == null){
|
||||
instance = new ServerListener();
|
||||
}
|
||||
|
||||
return instance;
|
||||
}
|
||||
|
||||
public void setDelegate(ServerListenerDelegate delegate){
|
||||
this.delegate = delegate;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
package seng302.visualiser;
|
||||
|
||||
public interface ServerListenerDelegate {
|
||||
void serverDetected(String serverName, String mapName, Integer placesLeft, String serverAddress);
|
||||
void serverRemoved(String serverName);
|
||||
}
|
||||
Reference in New Issue
Block a user