update core event protocol

buko [2003-10-26 22:46:39]
update core event protocol
Filename
aether2/core/aether-core.iws
aether2/hercules/doc/todo.txt
aether2/hercules/hercules.iws
aether2/hercules/src/java/aether/server/domain/DomainAgent.java
diff --git a/aether2/core/aether-core.iws b/aether2/core/aether-core.iws
index 3da2614..3f96de0 100644
--- a/aether2/core/aether-core.iws
+++ b/aether2/core/aether-core.iws
@@ -2,7 +2,6 @@
 <project version="3" relativePaths="true">
   <component name="FileEditorManager">
     <history>
-      <source-position-entry url="file://$PROJECT_DIR$/src/java/aether/event/SimpleEventQueue.java" line="0" column="24" vertical-scroll-proportion="0.0" horizontal-scroll-proportion="0.37086093" />
       <source-position-entry url="file://$PROJECT_DIR$/src/java/aether/event/BlockingEventQueue.java" line="11" column="13" vertical-scroll-proportion="0.33212996" horizontal-scroll-proportion="0.200883" />
       <source-position-entry url="file://$PROJECT_DIR$/src/java/aether/net/AbstractConnection.java" line="2" column="26" vertical-scroll-proportion="0.07317073" horizontal-scroll-proportion="0.2524272" />
       <source-position-entry url="file://$PROJECT_DIR$/src/java/aether/net/Link.java" line="53" column="54" vertical-scroll-proportion="0.4512195" horizontal-scroll-proportion="0.52427185" />
@@ -16,11 +15,13 @@
       <source-position-entry url="file://$PROJECT_DIR$/.cvsignore" line="6" column="15" vertical-scroll-proportion="0.22743683" horizontal-scroll-proportion="0.14563107" />
       <source-position-entry url="file://$PROJECT_DIR$/build.xml" line="71" column="0" vertical-scroll-proportion="2.597561" horizontal-scroll-proportion="0.0" />
       <source-position-entry url="file://$PROJECT_DIR$/src/java/aether/event/Message.java" line="1" column="92" vertical-scroll-proportion="0.036585364" horizontal-scroll-proportion="0.89196676" />
-      <source-position-entry url="file://$PROJECT_DIR$/src/java/aether/event/Request.java" line="35" column="1" vertical-scroll-proportion="0.40592334" horizontal-scroll-proportion="0.009695291" />
+      <source-position-entry url="file://$PROJECT_DIR$/src/java/aether/event/Request.java" line="48" column="0" vertical-scroll-proportion="0.8815331" horizontal-scroll-proportion="0.0" />
+      <source-position-entry url="file://$PROJECT_DIR$/src/java/aether/net/DefaultMonitor.java" line="78" column="36" vertical-scroll-proportion="0.8763066" horizontal-scroll-proportion="0.34903046" />
     </history>
     <open-files>
       <source-position-entry url="file://$PROJECT_DIR$/src/java/aether/event/Message.java" line="1" column="92" vertical-scroll-proportion="0.036585364" horizontal-scroll-proportion="0.89196676" />
-      <source-position-entry url="file://$PROJECT_DIR$/src/java/aether/event/Request.java" line="35" column="1" vertical-scroll-proportion="0.40592334" horizontal-scroll-proportion="0.009695291" selected="true" />
+      <source-position-entry url="file://$PROJECT_DIR$/src/java/aether/event/Request.java" line="48" column="0" vertical-scroll-proportion="0.8815331" horizontal-scroll-proportion="0.0" />
+      <source-position-entry url="file://$PROJECT_DIR$/src/java/aether/net/DefaultMonitor.java" line="78" column="36" vertical-scroll-proportion="0.8763066" horizontal-scroll-proportion="0.34903046" selected="true" />
     </open-files>
   </component>
   <component name="ToolWindowManager">
@@ -250,6 +251,7 @@
       <expanded_node type="directory" url="file://$PROJECT_DIR$/src/java" />
       <expanded_node type="directory" url="file://$PROJECT_DIR$" />
       <expanded_node type="directory" url="file://$PROJECT_DIR$/src/java/aether/event" />
+      <expanded_node type="directory" url="file://$PROJECT_DIR$/src/java/aether/net" />
     </view>
     <view id="SourcepathPane" />
     <view id="ClasspathPane" />
diff --git a/aether2/hercules/doc/todo.txt b/aether2/hercules/doc/todo.txt
new file mode 100644
index 0000000..c0b9583
--- /dev/null
+++ b/aether2/hercules/doc/todo.txt
@@ -0,0 +1,37 @@
+
+[ 10.27.03 ]
+
+- Fix up DomainAgent class. A DomainAgent shouldn't need to know its own GUID
+in order to broadcast notices. Instead, introduce another class, Broadcaster,
+which contains the GUID of the source and the topic to broadcast on. Then
+code like:
+    Notice notice = new Notice();
+    notice.setSourceId(this.getGuid());
+	notice.setTopicId(this.getDomainTopic());
+
+    could be replaced with code like:
+
+    broadCaster.broadCast(...notification...);
+
+- DomainAgent shouldn't even need to be aware of the domain topic. It should
+be given a Monitor object which is already connected to the network and
+subscribed to the domain topic. Just give it a fully formed Monitor and
+Broadcaster object and let it do it's work.
+
+- The ComponentRegister and ComponentUnregister Notification formats have to
+abstracted into their own classes that can be transformed into Elvin
+Notification objects.
+
+- Need to abstract how the component registry is stored into a separate
+ComponentRegistry interface/implementation. At first you might simply store
+registered components and component info objects in memory but eventually
+probably a database will be needed.
+
+- Clean up the Advertisement and WorldAdvertisement framework.
+
+- Clean up memento.world.manager package
+
+- implement the AuthenticationDomain component and a special Responder that
+can route requests/responses to the AuthenticationDomain
+
+- implement the basic login schema
\ No newline at end of file
diff --git a/aether2/hercules/hercules.iws b/aether2/hercules/hercules.iws
index 70daa8c..87446f1 100644
--- a/aether2/hercules/hercules.iws
+++ b/aether2/hercules/hercules.iws
@@ -2,13 +2,10 @@
 <project version="3" relativePaths="false">
   <component name="FileEditorManager">
     <history>
-      <source-position-entry url="file://$PROJECT_DIR$/src/java/aether/server/domain/Advertisement.java" line="12" column="13" vertical-scroll-proportion="-1.7090592" horizontal-scroll-proportion="0.1262136" />
-      <source-position-entry url="file://$PROJECT_DIR$/src/java/aether/server/AetherContainer.java" line="14" column="27" vertical-scroll-proportion="0.40243903" horizontal-scroll-proportion="0.26213592" />
       <source-position-entry url="file://$PROJECT_DIR$/src/java/aether/server/ConnectionFactory.java" line="22" column="48" vertical-scroll-proportion="0.73170733" horizontal-scroll-proportion="0.46601942" />
       <source-position-entry url="file://$PROJECT_DIR$/src/java/aether/server/DefaultConnectionFactory.java" line="41" column="41" vertical-scroll-proportion="0.869338" horizontal-scroll-proportion="0.39805827" />
       <source-position-entry url="file://$PROJECT_DIR$/src/java/aether/server/DefaultThreadPool.java" line="42" column="13" vertical-scroll-proportion="0.07317073" horizontal-scroll-proportion="0.26686218" />
       <source-position-entry url="file://$PROJECT_DIR$/src/java/aether/server/ThreadPool.java" line="8" column="17" vertical-scroll-proportion="0.29268292" horizontal-scroll-proportion="0.3489736" />
-      <source-position-entry url="file://$PROJECT_DIR$/src/java/aether/server/responder/SwitchBoard.java" line="1" column="0" vertical-scroll-proportion="0.037906136" horizontal-scroll-proportion="0.0" />
       <source-position-entry url="file://$PROJECT_DIR$/src/java/aether/server/ManagedPublisher.java" line="50" column="39" vertical-scroll-proportion="-1.4638989" horizontal-scroll-proportion="0.37811634" />
       <source-position-entry url="file://$PROJECT_DIR$/src/java/aether/server/responder/SwitchBoardListener.java" line="17" column="36" vertical-scroll-proportion="0.4512195" horizontal-scroll-proportion="0.34903046" />
       <source-position-entry url="file://$PROJECT_DIR$/src/java/aether/server/responder/SwitchBoardEvent.java" line="10" column="13" vertical-scroll-proportion="-1.304878" horizontal-scroll-proportion="0.12603877" />
@@ -19,23 +16,20 @@
         </folding>
       </source-position-entry>
       <source-position-entry url="file://$PROJECT_DIR$/.cvsignore" line="0" column="0" vertical-scroll-proportion="0.0" horizontal-scroll-proportion="0.0" />
-      <source-position-entry url="file://$PROJECT_DIR$/src/java/aether/server/responder/DefaultSwitchBoard.java" line="134" column="75" vertical-scroll-proportion="4.902439" horizontal-scroll-proportion="0.7271468">
+      <source-position-entry url="file://$PROJECT_DIR$/src/java/aether/server/responder/DefaultSwitchBoard.java" line="1" column="39" vertical-scroll-proportion="0.036585364" horizontal-scroll-proportion="0.37811634">
         <folding>
           <element signature="imports" expanded="true" />
         </folding>
       </source-position-entry>
+      <source-position-entry url="file://$PROJECT_DIR$/src/java/aether/server/responder/SwitchBoard.java" line="11" column="17" vertical-scroll-proportion="-0.79268295" horizontal-scroll-proportion="0.16481994" />
+      <source-position-entry url="file://$PROJECT_DIR$/src/java/aether/server/framework/Advertising.java" line="11" column="17" vertical-scroll-proportion="0.33275262" horizontal-scroll-proportion="0.16481994" />
+      <source-position-entry url="file://$PROJECT_DIR$/src/java/aether/server/domain/DomainAgent.java" line="185" column="8" vertical-scroll-proportion="-3.7526133" horizontal-scroll-proportion="0.077562325" />
+      <source-position-entry url="file://$PROJECT_DIR$/doc/todo.txt" line="35" column="28" vertical-scroll-proportion="0.8902439" horizontal-scroll-proportion="0.27146813" />
     </history>
     <open-files>
-      <source-position-entry url="file://$PROJECT_DIR$/src/java/aether/server/responder/Responder.java" line="32" column="34" vertical-scroll-proportion="0.6707317" horizontal-scroll-proportion="0.32963988">
-        <folding>
-          <element signature="imports" expanded="true" />
-        </folding>
-      </source-position-entry>
-      <source-position-entry url="file://$PROJECT_DIR$/src/java/aether/server/responder/DefaultSwitchBoard.java" line="134" column="75" vertical-scroll-proportion="4.902439" horizontal-scroll-proportion="0.7271468" selected="true">
-        <folding>
-          <element signature="imports" expanded="true" />
-        </folding>
-      </source-position-entry>
+      <source-position-entry url="file://$PROJECT_DIR$/src/java/aether/server/framework/Advertising.java" line="11" column="17" vertical-scroll-proportion="0.33275262" horizontal-scroll-proportion="0.16481994" />
+      <source-position-entry url="file://$PROJECT_DIR$/src/java/aether/server/domain/DomainAgent.java" line="185" column="8" vertical-scroll-proportion="-3.7526133" horizontal-scroll-proportion="0.077562325" />
+      <source-position-entry url="file://$PROJECT_DIR$/doc/todo.txt" line="35" column="28" vertical-scroll-proportion="0.8902439" horizontal-scroll-proportion="0.27146813" selected="true" />
     </open-files>
   </component>
   <component name="ToolWindowManager">
@@ -261,10 +255,13 @@
   <component name="ProjectViewSettings">
     <navigator currentView="ProjectPane" flattenPackages="false" showMembers="false" showStructure="false" autoscrollToSource="false" splitterProportion="0.5" />
     <view id="ProjectPane">
-      <expanded_node type="directory" url="file://$PROJECT_DIR$/src/java/aether/server" />
       <expanded_node type="directory" url="file://$PROJECT_DIR$/src/java" />
+      <expanded_node type="directory" url="file://$PROJECT_DIR$/doc" />
       <expanded_node type="directory" url="file://$PROJECT_DIR$" />
-      <expanded_node type="directory" url="file://$PROJECT_DIR$/src/java/aether" />
+      <expanded_node type="directory" url="file://$PROJECT_DIR$/src/java/memento/world/model" />
+      <expanded_node type="directory" url="file://$PROJECT_DIR$/src/java/memento" />
+      <expanded_node type="directory" url="file://$PROJECT_DIR$/src/java/memento/world" />
+      <expanded_node type="directory" url="file://$PROJECT_DIR$/src/java/memento/world/manager" />
       <expanded_node type="directory" url="file://$PROJECT_DIR$/src" />
     </view>
     <view id="SourcepathPane" />
diff --git a/aether2/hercules/src/java/aether/server/domain/DomainAgent.java b/aether2/hercules/src/java/aether/server/domain/DomainAgent.java
index 5c9a27c..b429ab5 100644
--- a/aether2/hercules/src/java/aether/server/domain/DomainAgent.java
+++ b/aether2/hercules/src/java/aether/server/domain/DomainAgent.java
@@ -8,6 +8,8 @@ import net.concedere.dundee.framework.Disposable;

 import java.beans.beancontext.BeanContextMembershipListener;
 import java.beans.beancontext.BeanContextMembershipEvent;
+import java.beans.beancontext.BeanContextChild;
+import java.beans.beancontext.BeanContextChildSupport;
 import java.util.Map;
 import java.util.Collections;
 import java.util.HashMap;
@@ -16,6 +18,7 @@ import java.io.*;
 import aether.net.Publisher;
 import aether.net.Monitor;
 import aether.net.Connection;
+import aether.net.DefaultMonitor;
 import aether.server.framework.Advertising;
 import aether.server.framework.Identifiable;
 import aether.event.Notice;
@@ -26,18 +29,18 @@ import org.apache.log4j.Logger;
 /**
  * Represents an agent in the peer-to-peer master server.
  *
- * TODO: test this class!
+ * TODO: this class should retreive Advertisement metadata for a component
+ * --- by using BeanInfo objects
  *
  * @author Buko O. (buko@concedere.net)
  * @version 0.1
  **/
-public class DomainAgent extends DefaultComponent implements Initializable,
-		Disposable, Identifiable
+public class DomainAgent extends BeanContextChildSupport
 {
 	private BeanContextMembershipListener bcml;
 	private EventHandler handler;
 	private String domainTopic;
-	private Publisher publisher;
+
 	private Monitor monitor;
 	private Connection connection;
 	private DomainInfo domainInfo;
@@ -47,54 +50,33 @@ public class DomainAgent extends DefaultComponent implements Initializable,

 	private static final Logger log = Logger.getLogger(DomainAgent.class);

-	public void initialize() throws ComponentException
-	{
-		connection = (Connection)
-				requireService(this, this, Connection.class, null, this);
-		publisher = (Publisher)
-				requireService(this, this, Publisher.class, null, this);
-		monitor = (Monitor)
-				requireService(this, this, Monitor.class, connection, this);
-
-		bcml = new DomainListener();
-		getContainer().addBeanContextMembershipListener(bcml);
-
-		handler = new DomainHandler();
-		try
-		{
-			monitor.subscribe(getDomainTopic());
-			monitor.addNoticeListener(handler);
-		}
-		catch (IOException ioe)
-		{
-			String msg = "couldn't subscribe to domain topic "
-					+ getDomainTopic();
-			throw new ComponentException(msg, ioe);
-		}
-	}
-
-	public void dispose() throws ComponentException
-	{
-		getContainer().releaseService(this, this, connection);
-		getContainer().releaseService(this, this, publisher);
-
-		try
-		{
-			monitor.removeNoticeListener(handler);
-			monitor.unsubscribe(this.getDomainTopic());
-			handler = null;
-		}
-		catch (IOException ioe)
-		{
-			log.warn("failed to unsubscribe from domain topic");
-			throw new ComponentException("bad connection", ioe);
-		}
-		getContainer().releaseService(this, this, monitor);
-
-		getContainer().removeBeanContextMembershipListener(bcml);
-	}
-
-	/**
+    /**
+     * Set the Connection to be used by the DomainAgent.
+     *
+     * @param conn Connection used to send events
+     */
+    public void setConnection(Connection conn)
+    {
+        if (conn == null)
+        {
+            String msg = "conn can't be null";
+            throw new IllegalArgumentException(msg);
+        }
+
+        this.connection = conn;
+    }
+
+    /**
+     * Get the Connection to be used by the DomainAgent.
+     *
+     * @return Connection used to send/receive events.
+     */
+    public Connection getConnection()
+    {
+        return connection;
+    }
+
+    /**
 	 * Get the domain topic on which domain notices are exchanged.
 	 *
 	 * @return domain topic on which domain notices are exchanged
@@ -134,42 +116,55 @@ public class DomainAgent extends DefaultComponent implements Initializable,
 		this.domainInfo = domainInfo;
 	}

-	public String getGuid()
+	public void initialize() throws IOException
 	{
-		return guid;
+        connection.open();
+		monitor = new DefaultMonitor(connection, false);
+        monitor.subscribe(getDomainTopic());
+
+		bcml = new DomainListener();
+		getBeanContext().addBeanContextMembershipListener(bcml);
+
+		handler = new DomainHandler();
+
+	    monitor.subscribe(getDomainTopic());
+		monitor.addNoticeListener(handler);
 	}

-	public void setGuid(String guid)
+	public void dispose()
 	{
-		this.guid = guid;
+		try
+		{
+			monitor.removeNoticeListener(handler);
+			monitor.unsubscribe(this.getDomainTopic());
+			handler = null;
+		}
+		catch (IOException ioe)
+		{
+			log.warn("failed to unsubscribe from domain topic");
+		}
+
+		getBeanContext().removeBeanContextMembershipListener(bcml);
 	}

 	private ComponentInfo createComponentInfo(Identifiable idf)
 	{
 		ComponentInfo ci = new ComponentInfo();
 		ci.setComponentId(idf.getGuid());
+
+        // xxx: can't use the class name as the component type! will need
+        // --- possibly another interface, TypeInfo, that exposes type info
 		ci.setType(idf.getClass().getName());

-		if (getContainer().getBeans().isInstanceOf(idf, Advertising.class))
+		if (idf instanceof Advertising)
 		{
-			Advertising adv = (Advertising) getContainer().getBeans()
-					.getInstanceOf(idf, Advertising.class);
+			Advertising adv = (Advertising) idf;
 			ci.setAdvertisement(adv.getAdvertisement());
 		}

 		return ci;
 	}

-	private void register(Advertising adv)
-	{
-		ComponentInfo ci = createComponentInfo(adv);
-		compMap.put(adv.getGuid(), ci);
-
-		log.info("registered component " + adv + " with info" + ci);
-		// fire the remote event
-		fireRegistered(adv, ci);
-	}
-
 	private void register(Identifiable idf)
 	{
 		ComponentInfo ci = createComponentInfo(idf);
@@ -179,13 +174,6 @@ public class DomainAgent extends DefaultComponent implements Initializable,
 		fireRegistered(idf, ci);
 	}

-	private void unregister(Advertising adv)
-	{
-		ComponentInfo ci = (ComponentInfo) compMap.remove(adv.getGuid());
-
-		fireUnregistered(adv, ci);
-	}
-
 	private void unregister(Identifiable idf)
 	{
 		ComponentInfo ci = (ComponentInfo) compMap.remove(idf.getGuid());
@@ -196,17 +184,16 @@ public class DomainAgent extends DefaultComponent implements Initializable,
 	private void fireRegistered(Identifiable idf, ComponentInfo ci)
 	{
 		Notice notice = new Notice();
-		notice.setSourceId(this.getGuid());
+        // xxx: how does a DomainAgent know its own GUID?
+		//notice.setSourceId(this.getGuid());
 		notice.setTopicId(this.getDomainTopic());
-		notice.setHeader("dae-type", "register");
-		notice.setHeader("re", idf.getGuid());

 		try
 		{
 			ByteArrayOutputStream baos = new ByteArrayOutputStream();
 			ObjectOutputStream out = new ObjectOutputStream(baos);
 			out.writeObject(ci);
-			notice.setBody(baos.toByteArray());
+			//notice.setBody(baos.toByteArray());
 		}
 		catch (IOException ioe)
 		{
@@ -214,11 +201,10 @@ public class DomainAgent extends DefaultComponent implements Initializable,
 			log.error("failed to write advertisement data", ioe);
 		}

-
 		// send the notice
 		try
 		{
-			publisher.publish(notice);
+			connection.publish(notice);
 		}
 		catch (IOException ioe)
 		{
@@ -230,17 +216,15 @@ public class DomainAgent extends DefaultComponent implements Initializable,
 	private void fireUnregistered(Identifiable idf, ComponentInfo ci)
 	{
 		Notice notice = new Notice();
-		notice.setSourceId(this.getGuid());
+		//notice.setSourceId(this.getGuid());
 		notice.setTopicId(this.getDomainTopic());
-		notice.setHeader("dae-type", "unregister");
-		notice.setHeader("re", idf.getGuid());

 		try
 		{
 			ByteArrayOutputStream baos = new ByteArrayOutputStream();
 			ObjectOutputStream out = new ObjectOutputStream(baos);
 			out.writeObject(ci);
-			notice.setBody(baos.toByteArray());
+			// notice.setBody(baos.toByteArray());
 		}
 		catch (IOException ioe)
 		{
@@ -251,7 +235,7 @@ public class DomainAgent extends DefaultComponent implements Initializable,
 		// send the notice
 		try
 		{
-			publisher.publish(notice);
+			connection.publish(notice);
 		}
 		catch (IOException ioe)
 		{
@@ -262,45 +246,16 @@ public class DomainAgent extends DefaultComponent implements Initializable,

 	private void processRemoteRegister(Notice notice)
 	{
-		String remoteAgentId = notice.getSourceId();
-		String remoteCompId = notice.getHeader("re");
-
-		ComponentInfo ci = null;
-		if (notice.getBody() != null)
-		{
-			try
-			{
-				ObjectInputStream in = new ObjectInputStream(
-						new ByteArrayInputStream(notice.getBody()));
-				ci = (ComponentInfo) in.readObject();
-			}
-			catch (Exception ioe)
-			{
-				// todo: in the future, tell somebody we messed
-				log.warn("failed to read advertisement data", ioe);
-			}
-		}
-
-		remoteMap.put(remoteAgentId + ":" + remoteCompId, ci);
-
-		log.info("remote agent " + remoteAgentId + " registered component "
-			+ remoteCompId + " with info " + ci);
+		; // todo: implement this method
 	}

 	private void processRemoteUnregister(Notice notice)
 	{
-		String remoteAgentId = notice.getSourceId();
-		String remoteCompId = notice.getHeader("re");
-
-		ComponentInfo ci = (ComponentInfo)
-				remoteMap.remove(remoteAgentId + ":" + remoteCompId);
-
-		log.info("remote agent " + remoteAgentId + " unregistered component "
-			+ remoteCompId + " with info " + ci);
+		; // todo: implement this method
 	}

 	/**
-	 * Listener that watches as containers enter and leave the container and
+	 * Listener that watches as components enter and leave the container and
 	 * notifies the domain agent component.
 	 */
 	private class DomainListener implements BeanContextMembershipListener
@@ -308,42 +263,25 @@ public class DomainAgent extends DefaultComponent implements Initializable,
 		public void childrenAdded(BeanContextMembershipEvent bcme)
 		{
 			Object[] children = bcme.toArray();
-			Beans beans = getContainer().getBeans();

 			for (int i = 0; i < children.length; ++i)
 			{
-				if (beans.isInstanceOf(children[i], Advertising.class))
-				{
-					Advertising adv = (Advertising) beans
-							.getInstanceOf(children[i], Advertising.class);
-					register(adv);
-				}
-				else if (beans.isInstanceOf(children[i], Identifiable.class))
+				if (children[i] instanceof Identifiable)
 				{
-					Identifiable idf = (Identifiable) beans
-							.getInstanceOf(children[i], Identifiable.class);
-					register(idf);
+					register((Identifiable) children[i]);
 				}
 			}
 		}

 		public void childrenRemoved(BeanContextMembershipEvent bcme)
 		{
-			Beans beans = getContainer().getBeans();
 			Object[] c = bcme.toArray();

 			for (int i = 0; i < c.length; ++i)
 			{
-				if (beans.isInstanceOf(c[i], Advertising.class))
+                if (c[i] instanceof Identifiable)
 				{
-					Advertising adv = (Advertising) beans
-							.getInstanceOf(c[i], Advertising.class);
-					unregister(adv);
-				} else if (beans.isInstanceOf(c[i], Identifiable.class))
-				{
-					Identifiable idf = (Identifiable) beans
-							.getInstanceOf(c[i], Identifiable.class);
-					unregister(idf);
+					unregister((Identifiable) c[i]);
 				}
 			}
 		}
@@ -359,19 +297,13 @@ public class DomainAgent extends DefaultComponent implements Initializable,
 		{
 			Notice notice = (Notice) event;

-			// ignore events from ourselves
-			if (notice.getSourceId().equals(DomainAgent.this.getGuid()))
-			{
-				return;
-			}
+			// xxx: ignore events from ourselves
+			// if (notice.getSourceId().equals(DomainAgent.this.getGuid()))
+			// {
+			//	return;
+			// }

-			if (notice.getHeader("dae-type").equals("register"))
-			{
-				processRemoteRegister(notice);
-			} else if (notice.getHeader("dae-type").equals("unregister"))
-			{
-				processRemoteUnregister(notice);
-			}
+		    // todo: implement this method
 		}
 	}
 }