Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarkus Alexander Kuppe2010-06-25 08:26:38 +0000
committerMarkus Alexander Kuppe2010-06-25 08:26:38 +0000
commit6d0fea503bb8c51a3ee131fc7aa43728fdf02c7e (patch)
tree6564d60607c6c7d60b2ba0af5086f2d938b90a9b /providers
parentb7e862ff5925eed45561414dab48c50eb1845def (diff)
downloadorg.eclipse.ecf-6d0fea503bb8c51a3ee131fc7aa43728fdf02c7e.tar.gz
org.eclipse.ecf-6d0fea503bb8c51a3ee131fc7aa43728fdf02c7e.tar.xz
org.eclipse.ecf-6d0fea503bb8c51a3ee131fc7aa43728fdf02c7e.zip
NEW - bug 317798: [[Discovery][DNS-SD] Create/register IDiscoveryAdvertiser container/service
https://bugs.eclipse.org/bugs/show_bug.cgi?id=317798
Diffstat (limited to 'providers')
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.dnssd/src/org/eclipse/ecf/provider/dnssd/ContainerInstantiator.java11
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.dnssd/src/org/eclipse/ecf/provider/dnssd/DnsSdDiscoveryAdvertiser.java134
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.dnssd/src/org/eclipse/ecf/provider/dnssd/DnsSdDiscoveryLocator.java4
3 files changed, 141 insertions, 8 deletions
diff --git a/providers/bundles/org.eclipse.ecf.provider.dnssd/src/org/eclipse/ecf/provider/dnssd/ContainerInstantiator.java b/providers/bundles/org.eclipse.ecf.provider.dnssd/src/org/eclipse/ecf/provider/dnssd/ContainerInstantiator.java
index 7a01e3db9..8aec613b8 100644
--- a/providers/bundles/org.eclipse.ecf.provider.dnssd/src/org/eclipse/ecf/provider/dnssd/ContainerInstantiator.java
+++ b/providers/bundles/org.eclipse.ecf.provider.dnssd/src/org/eclipse/ecf/provider/dnssd/ContainerInstantiator.java
@@ -22,13 +22,12 @@ public class ContainerInstantiator implements IContainerInstantiator {
*/
public IContainer createInstance(ContainerTypeDescription description,
Object[] parameters) throws ContainerCreateException {
-// For the moment advertiser and locator are served by the same class/instance
-// if(description != null && "ecf.discovery.dnssd.advertiser".equals(description.getName())) {
-// return new DnsSdDiscoveryLocator();
-// } else if(description != null && "ecf.discovery.dnssd.locator".equals(description.getName())) {
+ if(description != null && "ecf.discovery.dnssd.advertiser".equals(description.getName())) {
+ return new DnsSdDiscoveryAdvertiser();
+ } else if(description != null && "ecf.discovery.dnssd.locator".equals(description.getName())) {
return new DnsSdDiscoveryLocator();
-// }
-// return null;
+ }
+ return null;
}
/* (non-Javadoc)
diff --git a/providers/bundles/org.eclipse.ecf.provider.dnssd/src/org/eclipse/ecf/provider/dnssd/DnsSdDiscoveryAdvertiser.java b/providers/bundles/org.eclipse.ecf.provider.dnssd/src/org/eclipse/ecf/provider/dnssd/DnsSdDiscoveryAdvertiser.java
new file mode 100644
index 000000000..c83354740
--- /dev/null
+++ b/providers/bundles/org.eclipse.ecf.provider.dnssd/src/org/eclipse/ecf/provider/dnssd/DnsSdDiscoveryAdvertiser.java
@@ -0,0 +1,134 @@
+/*******************************************************************************
+ * Copyright (c) 2010 Markus Alexander Kuppe.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Markus Alexander Kuppe (ecf-dev_eclipse.org <at> lemmster <dot> de) - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.ecf.provider.dnssd;
+
+import java.net.UnknownHostException;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.ecf.core.ContainerConnectException;
+import org.eclipse.ecf.core.events.ContainerConnectedEvent;
+import org.eclipse.ecf.core.events.ContainerConnectingEvent;
+import org.eclipse.ecf.core.identity.ID;
+import org.eclipse.ecf.core.security.IConnectContext;
+import org.eclipse.ecf.discovery.IServiceInfo;
+import org.eclipse.ecf.discovery.identity.IServiceID;
+import org.eclipse.ecf.discovery.identity.IServiceTypeID;
+import org.xbill.DNS.SimpleResolver;
+
+public class DnsSdDiscoveryAdvertiser extends DnsSdDiscoveryLocator {
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ecf.provider.dnssd.DnsSdDiscoveryLocator#registerService(org.eclipse.ecf.discovery.IServiceInfo)
+ */
+ public void registerService(IServiceInfo serviceInfo) {
+ Assert.isNotNull(serviceInfo);
+ throw new UnsupportedOperationException("Not yet implemented");
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ecf.provider.dnssd.DnsSdDiscoveryLocator#unregisterService(org.eclipse.ecf.discovery.IServiceInfo)
+ */
+ public void unregisterService(IServiceInfo serviceInfo) {
+ Assert.isNotNull(serviceInfo);
+ throw new UnsupportedOperationException("Not yet implemented");
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ecf.discovery.AbstractDiscoveryContainerAdapter#unregisterAllServices()
+ */
+ public void unregisterAllServices() {
+ throw new UnsupportedOperationException("Not yet implemented");
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ecf.discovery.AbstractDiscoveryContainerAdapter#purgeCache()
+ */
+ public IServiceInfo[] purgeCache() {
+ throw new UnsupportedOperationException("Not yet implemented");
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ecf.provider.dnssd.DnsSdDiscoveryLocator#connect(org.eclipse.ecf.core.identity.ID, org.eclipse.ecf.core.security.IConnectContext)
+ */
+ public void connect(ID aTargetID, IConnectContext connectContext)
+ throws ContainerConnectException {
+
+ // connect can only be called once
+ if (targetID != null || getConfig() == null) {
+ throw new ContainerConnectException("Already connected");
+ }
+
+ //TODO convert non DnsSdServiceTypeIDs into DSTIDs
+ if(aTargetID == null) {
+ targetID = new DnsSdServiceTypeID();
+ } else {
+ targetID = (DnsSdServiceTypeID) aTargetID;
+ }
+
+ // instantiate a default resolver
+ if(resolver == null) {
+ try {
+ resolver = new SimpleResolver();
+ } catch (UnknownHostException e) {
+ throw new ContainerConnectException(e);
+ }
+ }
+
+ // done setting up this provider, send event
+ fireContainerEvent(new ContainerConnectingEvent(this.getID(), targetID,
+ connectContext));
+ fireContainerEvent(new ContainerConnectedEvent(this.getID(), targetID));
+ }
+
+ /* not a locator! */
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ecf.provider.dnssd.DnsSdDiscoveryLocator#getServiceInfo(org.eclipse.ecf.discovery.identity.IServiceID)
+ */
+ public IServiceInfo getServiceInfo(IServiceID aServiceId) {
+ Assert.isNotNull(aServiceId);
+ // nop, we are just an Advertiser but AbstractDiscoveryContainerAdapter
+ // doesn't support this yet
+ throw new UnsupportedOperationException(
+ "This is not an IDiscoveryLocator");
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ecf.provider.dnssd.DnsSdDiscoveryLocator#getServiceTypes()
+ */
+ public IServiceTypeID[] getServiceTypes() {
+ // nop, we are just an Advertiser but AbstractDiscoveryContainerAdapter
+ // doesn't support this yet
+ throw new UnsupportedOperationException(
+ "This is not an IDiscoveryLocator");
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ecf.provider.dnssd.DnsSdDiscoveryLocator#getServices()
+ */
+ public IServiceInfo[] getServices() {
+ // nop, we are just an Advertiser but AbstractDiscoveryContainerAdapter
+ // doesn't support this yet
+ throw new UnsupportedOperationException(
+ "This is not an IDiscoveryLocator");
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ecf.provider.dnssd.DnsSdDiscoveryLocator#getServices(org.eclipse.ecf.discovery.identity.IServiceTypeID)
+ */
+ public IServiceInfo[] getServices(IServiceTypeID aServiceTypeId) {
+ Assert.isNotNull(aServiceTypeId);
+ // nop, we are just an Advertiser but AbstractDiscoveryContainerAdapter
+ // doesn't support this yet
+ throw new UnsupportedOperationException(
+ "This is not an IDiscoveryLocator");
+ }
+}
diff --git a/providers/bundles/org.eclipse.ecf.provider.dnssd/src/org/eclipse/ecf/provider/dnssd/DnsSdDiscoveryLocator.java b/providers/bundles/org.eclipse.ecf.provider.dnssd/src/org/eclipse/ecf/provider/dnssd/DnsSdDiscoveryLocator.java
index 346e85b4b..fbee5f4bd 100644
--- a/providers/bundles/org.eclipse.ecf.provider.dnssd/src/org/eclipse/ecf/provider/dnssd/DnsSdDiscoveryLocator.java
+++ b/providers/bundles/org.eclipse.ecf.provider.dnssd/src/org/eclipse/ecf/provider/dnssd/DnsSdDiscoveryLocator.java
@@ -52,8 +52,8 @@ public class DnsSdDiscoveryLocator extends AbstractDiscoveryContainerAdapter {
private static final String DNS_SD_PATH = "path";
private static final String DNS_SD_PTCL = "dns-sd.ptcl";
- private DnsSdServiceTypeID targetID;
- private Resolver resolver;
+ protected DnsSdServiceTypeID targetID;
+ protected Resolver resolver;
public DnsSdDiscoveryLocator() {
super(DnsSdNamespace.NAME, new DiscoveryContainerConfig(IDFactory

Back to the top