package info.guardianproject.iocipher.server;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import javax.jmdns.JmDNS;
import javax.jmdns.ServiceInfo;
import android.content.Context;
import android.net.wifi.WifiManager;
import android.net.wifi.WifiManager.MulticastLock;
public class MdnsManager {
private JmDNS mJmdns;
private Map<String, ServiceInfo> regMap;
private Context mContext;
private MulticastLock mcLock;
public MdnsManager (Context context) throws IOException
{
mContext = context;
mJmdns = JmDNS.create();
regMap = new HashMap<String, ServiceInfo>();
}
public ServiceInfo[] list (String type)
{
final ServiceInfo[] svcInfos = mJmdns.list(type);
return svcInfos;
}
public ServiceInfo register (String alias, String type, String name, int port, String text) throws IOException
{
ServiceInfo svcInfo = ServiceInfo.create(type, name, port, text);
mJmdns.registerService(svcInfo);
regMap.put(alias, svcInfo);
/*
WifiManager wifi = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE);
if(wifi != null)
{
mcLock = wifi.createMulticastLock("myLock");
mcLock.acquire();
}*/
return svcInfo;
}
public ServiceInfo unregister (String alias) {
final ServiceInfo svcInfo = this.regMap.remove(alias);
if (svcInfo != null) {
mJmdns.unregisterService(svcInfo);
}
/*
if(mcLock != null && mcLock.isHeld())
{
mcLock.release();
}*/
return svcInfo;
}
}
/*
//Get the Multicast Lock
WifiManager wifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
if(wifi != null)
{
mcLock = wifi.createMulticastLock("myLock");
mcLock.acquire();
}
...../
//Release the lock
//Release the Lock to save battery power
if(mcLock.isHeld())
{
mcLock.release();
}
*/