public String toString() { StringBuffer buf = new StringBuffer(); buf.append("<" + getClass().getName() + "> "); buf.append(super.toString()); buf.append(" name "); buf.append(getName()); buf.append(" type "); buf.append(getType()); buf.append(" info "); buf.append(getInfo()); return buf.toString(); }
/** * A service has been added. * * @param event * service event */ @Override public void serviceAdded(ServiceEvent event) { synchronized (this) { ServiceInfo info = event.getInfo(); if ((info != null) && (info.hasData())) { _infos.put(event.getName(), info); } else { String subtype = (info != null ? info.getSubtype() : ""); info = ((JmDNSImpl) event.getDNS()).resolveServiceInfo(event.getType(), event.getName(), subtype, true); if (info != null) { _infos.put(event.getName(), info); } else { _events.put(event.getName(), event); } } } }
void handleServiceResolved(ServiceEvent event) { List<ServiceListenerStatus> list = _serviceListeners.get(event.getType().toLowerCase()); final List<ServiceListenerStatus> listCopy; if ((list != null) && (!list.isEmpty())) { if ((event.getInfo() != null) && event.getInfo().hasData()) { final ServiceEvent localEvent = event; synchronized (list) { listCopy = new ArrayList<ServiceListenerStatus>(list); } for (final ServiceListenerStatus listener : listCopy) { _executor.submit(new Runnable() { /** {@inheritDoc} */ @Override public void run() { listener.serviceResolved(localEvent); } }); } } } }
/** * A new service type was discovered. * * @param event * The service event providing the fully qualified type of the service. */ void serviceTypeAdded(ServiceEvent event) { if (null == _addedTypes.putIfAbsent(event.getType(), event.getType())) { this.getListener().serviceTypeAdded(event); } else { logger.finest("Service Type Added called for a service type already added: " + event); } }
@Override public void serviceResolved(ServiceEvent serviceEvent) { ServiceInfo serviceInfo = serviceEvent.getInfo(); for (String url : serviceInfo.getURLs()) { try { URL serviceUrl = new URL(url); addDiscoveryEndpoint(serviceUrl); } catch (Exception e) { logError("Failed to parse service URL: %s", e, url); } } } }
public void serviceResolved(ServiceEvent serviceEvent) { LOGGER.trace("name="+serviceEvent.getName()+" type="+serviceEvent.getType()+" info="+serviceEvent.getInfo()); // Ignore if Bonjour has been disabled if(!isActive()) return; // Creates a new BonjourService corresponding to the new service and add it to the list of current Bonjour services ServiceInfo serviceInfo = serviceEvent.getInfo(); if(serviceInfo!=null) { if(serviceInfo.getInetAddress() instanceof Inet6Address) { // IPv6 addresses not supported at this time + they seem not to be correctly handled by ServiceInfo LOGGER.debug("ignoring IPv6 service"); return; } BonjourService bs = createBonjourService(serviceInfo); // Synchronized to properly handle duplicate calls synchronized(instance) { if(bs!=null && !services.contains(bs)) { LOGGER.debug("BonjourService "+bs+" added"); services.add(bs); } } } }
/** * A service has been added. * * @param event * service event */ @Override public void serviceAdded(ServiceEvent event) { synchronized (this) { ServiceInfo info = event.getInfo(); if ((info != null) && (info.hasData())) { _infos.put(event.getName(), info); } else { String subtype = (info != null ? info.getSubtype() : ""); info = ((JmDNSImpl) event.getDNS()).resolveServiceInfo(event.getType(), event.getName(), subtype, true); if (info != null) { _infos.put(event.getName(), info); } else { _events.put(event.getName(), event); } } } }
/** * A service has been removed. * * @param event * The ServiceEvent providing the name and fully qualified type of the service. */ void serviceRemoved(ServiceEvent event) { String qualifiedName = event.getName() + "." + event.getType(); if (_addedServices.remove(qualifiedName, _addedServices.get(qualifiedName))) { this.getListener().serviceRemoved(event); } else { logger.finer("Service Removed called for a service already removed: " + event); } }
void handleServiceResolved(ServiceEvent event) { List<ServiceListenerStatus> list = _serviceListeners.get(event.getType().toLowerCase()); final List<ServiceListenerStatus> listCopy; if ((list != null) && (!list.isEmpty())) { if ((event.getInfo() != null) && event.getInfo().hasData()) { final ServiceEvent localEvent = event; synchronized (list) { listCopy = new ArrayList<ServiceListenerStatus>(list); } for (final ServiceListenerStatus listener : listCopy) { _executor.submit(new Runnable() { /** {@inheritDoc} */ @Override public void run() { listener.serviceResolved(localEvent); } }); } } } }
/** * A new service type was discovered. * * @param event * The service event providing the fully qualified type of the service. */ void serviceTypeAdded(ServiceEvent event) { if (null == _addedTypes.putIfAbsent(event.getType(), event.getType())) { this.getListener().serviceTypeAdded(event); } else { logger.finest("Service Type Added called for a service type already added: " + event); } }
@Override public void serviceRemoved(ServiceEvent serviceEvent) { ServiceInfo serviceInfo = serviceEvent.getInfo(); for (String url : serviceInfo.getURLs()) { try { URL serviceUrl = new URL(url); removeDiscoveryEndpoint(serviceUrl); } catch (Exception e) { logError("Failed to parse service URL: %s", e, url); } } }
/** * A service has been added.<br/> * <b>Note:</b>This event is only the service added event. The service info associated with this event does not include resolution information.<br/> * To get the full resolved information you need to listen to {@link #serviceResolved(ServiceEvent)} or call {@link JmDNS#getServiceInfo(String, String, long)} * * <pre> * ServiceInfo info = event.getDNS().getServiceInfo(event.getType(), event.getName()) * </pre> * <p> * Please note that service resolution may take a few second to resolve. * </p> * * @param event * The ServiceEvent providing the name and fully qualified type of the service. */ void serviceAdded(ServiceEvent event) { String qualifiedName = event.getName() + "." + event.getType(); if (null == _addedServices.putIfAbsent(qualifiedName, event.getInfo().clone())) { this.getListener().serviceAdded(event); ServiceInfo info = event.getInfo(); if ((info != null) && (info.hasData())) { this.getListener().serviceResolved(event); } } else { logger.finer("Service Added called for a service already added: " + event); } }
/** * A service has been added. * * @param event * service event */ @Override public void serviceAdded(ServiceEvent event) { synchronized (this) { ServiceInfo info = event.getInfo(); if ((info != null) && (info.hasData())) { _infos.put(event.getName(), info); } else { String subtype = (info != null ? info.getSubtype() : ""); info = ((JmDNSImpl) event.getDNS()).resolveServiceInfo(event.getType(), event.getName(), subtype, true); if (info != null) { _infos.put(event.getName(), info); } else { _events.put(event.getName(), event); } } } }