Author: fhanik
Date: Sun Mar 12 07:51:49 2006
New Revision: 385302

URL: http://svn.apache.org/viewcvs?rev=385302&view=rev
Log:
changed case and some more doco

Modified:
    
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tipis/LazyReplicatedMap.java
    
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tipis/RpcChannel.java

Modified: 
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tipis/LazyReplicatedMap.java
URL: 
http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tipis/LazyReplicatedMap.java?rev=385302&r1=385301&r2=385302&view=diff
==============================================================================
--- 
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tipis/LazyReplicatedMap.java
 (original)
+++ 
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tipis/LazyReplicatedMap.java
 Sun Mar 12 07:51:49 2006
@@ -72,6 +72,8 @@
  * each time the object gets replicated the entire object gets serialized, 
hence a call to <code>replicate(true)</code>
  * will replicate all objects in this map that are using this node as primary.
  * 
+ * <br><br><b>REMBER TO CALL <code>breakdown()</code> or 
<code>finalize()</code> when you are done with the map to 
+ * avoid memory leaks.<br><br>
  * @todo implement periodic sync/transfer thread
  * @author Filip Hanik
  * @version 1.0
@@ -95,22 +97,44 @@
 
//------------------------------------------------------------------------------
    
 //              CONSTRUCTORS / DESTRUCTORS
 
//------------------------------------------------------------------------------
   
+    /**
+     * Creates a new map
+     * @param channel The channel to use for communication
+     * @param timeout long - timeout for RPC messags
+     * @param mapContextName String - unique name for this map, to allow 
multiple maps per channel
+     * @param initialCapacity int - the size of this map, see HashMap
+     * @param loadFactor float - load factor, see HashMap
+     */
     public LazyReplicatedMap(Channel channel, long timeout, String 
mapContextName, int initialCapacity, float loadFactor) {
         super(initialCapacity,loadFactor);
         init(channel,mapContextName,timeout);
     }
 
+    /**
+     * Creates a new map
+     * @param channel The channel to use for communication
+     * @param timeout long - timeout for RPC messags
+     * @param mapContextName String - unique name for this map, to allow 
multiple maps per channel
+     * @param initialCapacity int - the size of this map, see HashMap
+     */
     public LazyReplicatedMap(Channel channel, long timeout, String 
mapContextName, int initialCapacity) {
         super(initialCapacity);
         init(channel,mapContextName, timeout);
     }
 
+    /**
+     * Creates a new map
+     * @param channel The channel to use for communication
+     * @param timeout long - timeout for RPC messags
+     * @param mapContextName String - unique name for this map, to allow 
multiple maps per channel
+     */
     public LazyReplicatedMap(Channel channel, long timeout, String 
mapContextName) {
         super();
         init(channel,mapContextName,timeout);
     }
     
-    void init(Channel channel, String mapContextName, long timeout) {
+    
+    private void init(Channel channel, String mapContextName, long timeout) {
         final String chset = "ISO-8859-1";
         this.channel = channel;
         this.rpcTimeout = timeout;
@@ -120,11 +144,15 @@
             log.warn("Unable to encode mapContextName["+mapContextName+"] 
using getBytes("+chset+") using default getBytes()",x);
             this.mapContextName = mapContextName.getBytes();
         }
+        
+        //create an rpc channel
         this.rpcChannel = new RpcChannel(this.mapContextName, channel, this);
         this.channel.addChannelListener(this);
         this.channel.addMembershipListener(this);
 
+        
         try {
+            //send out a map membership message, only wait for the first reply
             MapMessage msg = new 
MapMessage(this.mapContextName,MapMessage.MSG_START,
                                             
false,null,null,null,channel.getLocalMember());
             Response[] resp = 
rpcChannel.send(channel.getMembers(),msg,rpcChannel.FIRST_REPLY,timeout);
@@ -132,19 +160,20 @@
                 messageReceived(resp[i].getMessage(),resp[i].getSource());
             }
         }catch ( ChannelException x ) {
-            log.warn("Unable to send stop message.");
+            log.warn("Unable to send map start message.");
         }
 
-
+        //transfer state from another map
         transferState();
     }
     
-    public void breakDown() {
+    public void breakdown() {
         finalize();
     }
     
     public void finalize() {
         try {
+            //send a map membership stop message
             MapMessage msg = new 
MapMessage(this.mapContextName,MapMessage.MSG_STOP,
                                             
false,null,null,null,channel.getLocalMember());
             if ( channel!=null) channel.send(channel.getMembers(),msg);
@@ -152,8 +181,9 @@
             log.warn("Unable to send stop message.",x);
         }
         
+        //cleanup
         if ( this.rpcChannel!=null ) {
-            this.rpcChannel.breakDown();
+            this.rpcChannel.breakdown();
         }
         if ( this.channel != null ) {
             this.channel.removeChannelListener(this);
@@ -177,13 +207,16 @@
         MapEntry entry = (MapEntry) super.get(key);
         if (entry!=null && entry.isPrimary() ) {
             Object value = entry.getValue();
+            //check to see if we need to replicate this object 
isDirty()||complete
             boolean repl = complete || ((value instanceof ReplicatedMapEntry) 
&& ((ReplicatedMapEntry)value).isDirty());
             if (!repl) return;
 
+            //check to see if the message is diffable
             boolean diff = ((value instanceof ReplicatedMapEntry) && 
((ReplicatedMapEntry)value).isDiffable());
             MapMessage msg = null;
             if ( diff ) {
                 try {
+                    //construct a diff message
                     msg = new MapMessage(mapContextName, MapMessage.MSG_BACKUP,
                                          true, (Serializable) entry.getKey(), 
null,
                                          ( (ReplicatedMapEntry) 
entry.getValue()).getDiff(),
@@ -193,6 +226,7 @@
                 }
             }
             if ( msg == null ) {
+                //construct a complete
                 msg = new MapMessage(mapContextName, MapMessage.MSG_BACKUP,
                                      false, (Serializable) entry.getKey(), 
                                      (Serializable)entry.getValue(),

Modified: 
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tipis/RpcChannel.java
URL: 
http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tipis/RpcChannel.java?rev=385302&r1=385301&r2=385302&view=diff
==============================================================================
--- 
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tipis/RpcChannel.java
 (original)
+++ 
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tipis/RpcChannel.java
 Sun Mar 12 07:51:49 2006
@@ -126,12 +126,12 @@
         }//end if
     }
     
-    public void breakDown() {
+    public void breakdown() {
         channel.removeChannelListener(this);
     }
     
     public void finalize() {
-        breakDown();
+        breakdown();
     }
     
     public boolean accept(Serializable msg, Member sender) {



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to