/** Shuts the AirReceiver down gracefully */ public static void onShutdown() { /* Close channels */ final ChannelGroupFuture allChannelsClosed = s_allChannels.close(); /* Stop all mDNS responders */ synchronized (s_jmDNSInstances) { for (final JmDNS jmDNS : s_jmDNSInstances) { try { jmDNS.unregisterAllServices(); s_logger.info("Unregistered all services on " + jmDNS.getInterface()); } catch (final IOException e) { s_logger.info("Failed to unregister some services"); } } } /* Wait for all channels to finish closing */ allChannelsClosed.awaitUninterruptibly(); /* Stop the ExecutorService */ ExecutorService.shutdown(); /* Release the OrderedMemoryAwareThreadPoolExecutor */ ChannelExecutionHandler.releaseExternalResources(); }
private static void stopServicesMDNS() { synchronized (lock) { if (jmdns != null) { for (JmDNS mdns : jmdns) { if (mdns != null) { try { mdns.unregisterAllServices(); mdns.close(); mdns = null; } catch (IOException ex) { Log.e(TAG, "", ex); } } } } waiter.release(); Log.i(TAG, "mDNS released"); } }
private void destroyService(ZeroServiceInfo zsi, boolean notify) { if (null == mJmDNS) { if (notify) { mServiceListener.onServiceUnregistered(zsi); } return; } try { releaseMulticastLock(); mJmDNS.removeServiceListener(mType, mJmDNSListener); mJmDNS.unregisterAllServices(); mJmDNS.close(); mJmDNS = null; if (null != mServiceListener && notify) { mServiceListener.onServiceUnregistered(zsi); } } catch (Exception e) { Log.e(TAG, "failed to close the JmDNS service"); if (null != mServiceListener && notify) { mServiceListener.onServiceUnregisteredFailed(zsi); } } }
/** This method unregisters all services from Bonjour/MDNS */ protected void unregisterAllServices() { jmdns.unregisterAllServices(); }