Search in sources :

Example 11 with JmDNS

use of javax.jmdns.JmDNS in project smarthome by eclipse.

the class MDNSClientImpl method registerServiceInternal.

private void registerServiceInternal(ServiceDescription description) throws IOException {
    for (JmDNS instance : jmdnsInstances.values()) {
        logger.debug("Registering new service {} at {}:{} ({})", description.serviceType, instance.getInetAddress().getHostAddress(), description.servicePort, instance.getName());
        // Create one ServiceInfo object for each JmDNS instance
        ServiceInfo serviceInfo = ServiceInfo.create(description.serviceType, description.serviceName, description.servicePort, 0, 0, description.serviceProperties);
        instance.registerService(serviceInfo);
    }
}
Also used : ServiceInfo(javax.jmdns.ServiceInfo) JmDNS(javax.jmdns.JmDNS)

Example 12 with JmDNS

use of javax.jmdns.JmDNS in project smarthome by eclipse.

the class MDNSClientImpl method close.

@Override
public void close() {
    for (JmDNS jmdns : jmdnsInstances.values()) {
        closeQuietly(jmdns);
        logger.debug("mDNS service has been stopped ({})", jmdns.getName());
    }
    jmdnsInstances.clear();
}
Also used : JmDNS(javax.jmdns.JmDNS)

Example 13 with JmDNS

use of javax.jmdns.JmDNS in project JAirPort by froks.

the class JmmDNSImpl method registerService.

/*
     * (non-Javadoc)
     * @see javax.jmdns.JmmDNS#registerService(javax.jmdns.ServiceInfo)
     */
@Override
public void registerService(ServiceInfo info) throws IOException {
    // This is really complex. We need to clone the service info for each DNS but then we loose the ability to update it.
    synchronized (_services) {
        for (JmDNS mDNS : _knownMDNS.values()) {
            mDNS.registerService(info.clone());
        }
        ((ServiceInfoImpl) info).setDelegate(this);
        _services.put(info.getQualifiedName(), info);
    }
}
Also used : JmDNS(javax.jmdns.JmDNS)

Example 14 with JmDNS

use of javax.jmdns.JmDNS in project EngineDriver by JMRI.

the class JmmDNSImpl method inetAddressRemoved.

/*
     * (non-Javadoc)
     * @see javax.jmdns.NetworkTopologyListener#inetAddressRemoved(javax.jmdns.NetworkTopologyEvent)
     */
@Override
public void inetAddressRemoved(NetworkTopologyEvent event) {
    InetAddress address = event.getInetAddress();
    try {
        if (_knownMDNS.containsKey(address)) {
            synchronized (_knownMDNS) {
                if (_knownMDNS.containsKey(address)) {
                    JmDNS mDNS = _knownMDNS.remove(address);
                    mDNS.close();
                    final NetworkTopologyEvent jmdnsEvent = new NetworkTopologyEventImpl(mDNS, address);
                    for (final NetworkTopologyListener listener : this.networkListeners()) {
                        _listenerExecutor.submit(new Runnable() {

                            /**
                             * {@inheritDoc}
                             */
                            @Override
                            public void run() {
                                listener.inetAddressRemoved(jmdnsEvent);
                            }
                        });
                    }
                }
            }
        }
    } catch (Exception e) {
        logger.warning("Unexpected unhandled exception: " + e);
    }
}
Also used : NetworkTopologyEvent(javax.jmdns.NetworkTopologyEvent) JmDNS(javax.jmdns.JmDNS) InetAddress(java.net.InetAddress) NetworkTopologyListener(javax.jmdns.NetworkTopologyListener) IOException(java.io.IOException) ExecutionException(java.util.concurrent.ExecutionException)

Example 15 with JmDNS

use of javax.jmdns.JmDNS in project EngineDriver by JMRI.

the class JmmDNSImpl method inetAddressAdded.

/*
     * (non-Javadoc)
     * @see javax.jmdns.NetworkTopologyListener#inetAddressAdded(javax.jmdns.NetworkTopologyEvent)
     */
@Override
public void inetAddressAdded(NetworkTopologyEvent event) {
    InetAddress address = event.getInetAddress();
    try {
        if (!_knownMDNS.containsKey(address)) {
            synchronized (_knownMDNS) {
                if (!_knownMDNS.containsKey(address)) {
                    final JmDNS dns = JmDNS.create(address);
                    if (_knownMDNS.putIfAbsent(address, dns) == null) {
                        // We need to register the services and listeners with the new JmDNS
                        final Collection<String> types = _serviceTypes;
                        final Collection<ServiceInfo> infos = _services.values();
                        final Collection<ServiceTypeListener> typeListeners = _typeListeners;
                        final Map<String, List<ServiceListener>> serviceListeners = _serviceListeners;
                        _jmDNSExecutor.submit(new Runnable() {

                            /**
                             * {@inheritDoc}
                             */
                            @Override
                            public void run() {
                                // Register Types
                                for (String type : types) {
                                    dns.registerServiceType(type);
                                }
                                // Register services
                                for (ServiceInfo info : infos) {
                                    try {
                                        dns.registerService(info.clone());
                                    } catch (IOException exception) {
                                    // logger.warning("Unexpected unhandled exception: " + exception);
                                    }
                                }
                                // Add ServiceType Listeners
                                for (ServiceTypeListener listener : typeListeners) {
                                    try {
                                        dns.addServiceTypeListener(listener);
                                    } catch (IOException exception) {
                                    // logger.warning("Unexpected unhandled exception: " + exception);
                                    }
                                }
                                // Add Service Listeners
                                for (String type : serviceListeners.keySet()) {
                                    List<ServiceListener> listeners = serviceListeners.get(type);
                                    synchronized (listeners) {
                                        for (ServiceListener listener : listeners) {
                                            dns.addServiceListener(type, listener);
                                        }
                                    }
                                }
                            }
                        });
                        final NetworkTopologyEvent jmdnsEvent = new NetworkTopologyEventImpl(dns, address);
                        for (final NetworkTopologyListener listener : this.networkListeners()) {
                            _listenerExecutor.submit(new Runnable() {

                                /**
                                 * {@inheritDoc}
                                 */
                                @Override
                                public void run() {
                                    listener.inetAddressAdded(jmdnsEvent);
                                }
                            });
                        }
                    } else {
                        dns.close();
                    }
                }
            }
        }
    } catch (Exception e) {
        logger.warning("Unexpected unhandled exception: " + e);
    }
}
Also used : JmDNS(javax.jmdns.JmDNS) ServiceListener(javax.jmdns.ServiceListener) IOException(java.io.IOException) IOException(java.io.IOException) ExecutionException(java.util.concurrent.ExecutionException) ServiceInfo(javax.jmdns.ServiceInfo) NetworkTopologyEvent(javax.jmdns.NetworkTopologyEvent) ArrayList(java.util.ArrayList) LinkedList(java.util.LinkedList) List(java.util.List) InetAddress(java.net.InetAddress) ServiceTypeListener(javax.jmdns.ServiceTypeListener) NetworkTopologyListener(javax.jmdns.NetworkTopologyListener)

Aggregations

JmDNS (javax.jmdns.JmDNS)25 IOException (java.io.IOException)14 ServiceInfo (javax.jmdns.ServiceInfo)12 ExecutorService (java.util.concurrent.ExecutorService)6 InetAddress (java.net.InetAddress)4 ArrayList (java.util.ArrayList)4 ExecutionException (java.util.concurrent.ExecutionException)4 List (java.util.List)3 NetworkTopologyEvent (javax.jmdns.NetworkTopologyEvent)3 NetworkTopologyListener (javax.jmdns.NetworkTopologyListener)3 ServiceListener (javax.jmdns.ServiceListener)3 NamedThreadFactory (javax.jmdns.impl.util.NamedThreadFactory)3 HashSet (java.util.HashSet)2 LinkedList (java.util.LinkedList)2 Callable (java.util.concurrent.Callable)2 Future (java.util.concurrent.Future)2 File (java.io.File)1 FileInputStream (java.io.FileInputStream)1 BigInteger (java.math.BigInteger)1 Inet4Address (java.net.Inet4Address)1