com.jalios.jstore.jsync
Class JSyncReplica

java.lang.Object
  extended by com.jalios.jstore.jsync.JSyncReplica
All Implemented Interfaces:
JSyncConstants, JaliosConstants

public class JSyncReplica
extends Object
implements JSyncConstants

This class provides supports to manage a replica, manages JSyncListener, send and process the JSyncMessage.

Version:
$Revision: 27753 $
Author:
Olivier Dedieu

Field Summary
static String REVISION
           
 
Fields inherited from interface com.jalios.jstore.jsync.JSyncConstants
SC_BAD_ADDRESS, SC_BAD_LEADER, SC_BAD_MESSAGE, SC_INTERNAL_SERVER_ERROR, SC_JOIN_REJECTED, SC_LEADER_CANNOT_JOIN, SC_NO_ACK, SC_NO_SEND, SC_OK, SC_UNKNOWN, SC_UNKNOWN_URID, SC_URID_ALREADY_ADDED, STATUS_LEADER, STATUS_LONE, STATUS_MEMBER, STATUS_SUBLEADER
 
Fields inherited from interface com.jalios.util.JaliosConstants
CRLF, MILLIS_IN_ONE_DAY, MILLIS_IN_ONE_HOUR, MILLIS_IN_ONE_MINUTE, MILLIS_IN_ONE_MONTH, MILLIS_IN_ONE_SECOND, MILLIS_IN_ONE_WEEK, MILLIS_IN_ONE_YEAR
 
Method Summary
 void addListener(JSyncListener listener)
          Adds a JSync listener
 void close()
          Close all JSyncReplica resources when ending.
 int disjoin()
          Disjoins from the leader replica.
static JSyncReplica getInstance(Store store, String url, boolean syncFiles, boolean canBeJoined, boolean canLeaderJoin, boolean autoUpdate, File logDir, File fileDir, File downloadDir, long downloadInterval, String leaderUrl)
          Gets a replica
 ReplicaInfo getLeader()
           
 String getLeaderUrl()
           
 JSyncLogger getLogger()
           
 long getMaxOpPerUpdate()
           
 Stamp getProgressStamp()
           
 StampTable getProgressTable()
           
 Map<String,ReplicaInfo> getReplicaMap()
           
 String getStatus()
          Return the status of this replica (STATUS_LONE, STATUS_MEMBER, STATUS_SUBLEADER or STATUS_LEADER)
 String getStatusLabel(int sc, Locale locale)
           
 boolean getSyncFiles()
          Return true if file replication is enabled
 String getUrid()
           
 String getUrl()
           
 void globalSuggestJoin(JSyncPreviousReplicaManager previousReplicaManager)
          Suggest all replica to join this replica as leader.
 boolean isCanBeJoined()
           
 boolean isJoined()
           
 boolean isKnownReplica(String urid)
          Returns true if this replica is known (i.e.
 boolean isLeader()
           
 boolean isSubLeader()
           
 boolean isSuperLeader()
           
 int join()
          Joins a replica.
 boolean needForUpdate()
           
 boolean processDisjoinMessage(OutputStream out, DisjoinMessage msg)
          Process a DisjoinMessage
 boolean processJoinMessage(OutputStream out, JoinMessage msg)
          Process a JoinMessage
 boolean processMessage(OutputStream out, Message msg)
          Dispatches on the right method to process the given message
 boolean processSuggestJoinMessage(OutputStream out, SuggestJoinMessage msg)
          Process a SuggestJoinMessage
 boolean processUpdateMessage(OutputStream out, UpdateMessage msg)
          Process an UpdateMessage
 void removeListener(JSyncListener listener)
          Removes a JSync listener
 void removeReplica(String urid)
          Removes the given replica of the group of this leader
 void setAutoUpdate(boolean autoUpdate)
          Enable or disable update propagation when joining
 void setLeaderUrl(String leaderUrl)
           
 void setMaxOpPerUpdate(long maxOpPerUpdate)
          Set the maximum count of operations sent per update
 void setSyncFiles(boolean syncFiles)
          Enable or disable file replication
 void setUrl(String url)
          Set the url of this replica
 void suggestJoin(String urlReplica)
          Suggest one replica to join this replica as leader.
 String toString()
           
 int update()
          Sends updates to the leader (if any) and to the group (if any)
 int updateGroup()
          Sends the update to each replica of the group
 int updateLeader()
          Sends the updates to the leader replica.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

REVISION

public static final String REVISION
See Also:
Constant Field Values
Method Detail

getInstance

public static JSyncReplica getInstance(Store store,
                                       String url,
                                       boolean syncFiles,
                                       boolean canBeJoined,
                                       boolean canLeaderJoin,
                                       boolean autoUpdate,
                                       File logDir,
                                       File fileDir,
                                       File downloadDir,
                                       long downloadInterval,
                                       String leaderUrl)
Gets a replica

Parameters:
store - the store
url - the url this replica listen to
syncFiles - true if files must be replicated
canBeJoined - can other replica join this one
canLeaderJoin - if this replica is a leader, can it join another leader
logDir - the log directory (if null, no log)
fileDir - the file directory to synchronize (if null, no file sync.)
downloadDir - the directory used by FileFetcher to manage the file to be downloaded
downloadInterval - the time interval between each download try.
Returns:
a replica
Since:
jcms-4.1

getUrid

public String getUrid()
Returns:
the urid of this replica
Since:
jcms-4.1
See Also:
Store.getUrid()

getUrl

public String getUrl()
Returns:
the url of this replica
Since:
jcms-4.1

setUrl

public void setUrl(String url)
Set the url of this replica

Parameters:
url - the url of this replica
Since:
jcms-4.1

getSyncFiles

public boolean getSyncFiles()
Return true if file replication is enabled

Returns:
true if file replication is enabled
Since:
jcms-4.1

setSyncFiles

public void setSyncFiles(boolean syncFiles)
Enable or disable file replication

Parameters:
syncFiles - true if files must be replicated
Since:
jcms-4.1

setAutoUpdate

public void setAutoUpdate(boolean autoUpdate)
Enable or disable update propagation when joining

Parameters:
autoUpdate - true if updates must be propagated at join
Since:
jcms-5.0

setMaxOpPerUpdate

public void setMaxOpPerUpdate(long maxOpPerUpdate)
Set the maximum count of operations sent per update

Parameters:
maxOpPerUpdate - the maximum count of operations sent by update
Since:
jcms-4.1

getMaxOpPerUpdate

public long getMaxOpPerUpdate()
Returns:
return the maximum count of operations sent per update
Since:
jcms-4.1

isJoined

public boolean isJoined()
Returns:
true if this replica has joined its leader
Since:
jcms-4.1

getLeader

public ReplicaInfo getLeader()
Returns:
the leader this replica has joined
Since:
jcms-4.1

getProgressTable

public StampTable getProgressTable()
Returns:
the progress table of this replica
Since:
jcms-4.1
See Also:
Store.getProgressTable()

getProgressStamp

public Stamp getProgressStamp()
Returns:
the greatest stamp of this replica
Since:
jcms-4.1
See Also:
Store.getProgressStamp()

isLeader

public boolean isLeader()
Returns:
true if this replica is a leader (i.e. if other replica has joined it)
Since:
jcms-4.1

isSuperLeader

public boolean isSuperLeader()
Returns:
true if this replica is the super leader. (i.e. if other replica has joined it, and it has not joined any other leader)
Since:
jcms-5.0.1

isSubLeader

public boolean isSubLeader()
Returns:
true if this replica is a sub leader. (i.e. if other replica has joined it, and it has joined another leader)
Since:
jcms-5.0.1

isKnownReplica

public boolean isKnownReplica(String urid)
Returns true if this replica is known (i.e. is my leader or a replica of my group)

Parameters:
urid - the urid to check
Returns:
true if this replica is known (i.e. is my leader or a replica of my group)
Since:
jcms-5.0.4

removeReplica

public void removeReplica(String urid)
Removes the given replica of the group of this leader

Parameters:
urid - the urid of the replica to be removed
Since:
jcms-4.1

getReplicaMap

public Map<String,ReplicaInfo> getReplicaMap()
Returns:
map of replica which has joined this leader
Since:
jcms-4.1

needForUpdate

public boolean needForUpdate()
Returns:
true if this replica is in advance on its leader
Since:
jcms-4.1

getLogger

public JSyncLogger getLogger()
Returns:
the JSyncLogger
Since:
jcms-4.1

getStatusLabel

public String getStatusLabel(int sc,
                             Locale locale)
Parameters:
sc - the status code (must be a new status code value (e.g. 1101, 1200, ...)
locale - the locale
Returns:
the label for the given status code
Since:
jcms-4.1

toString

public String toString()
Overrides:
toString in class Object
Returns:
the URID of the replica
Since:
jcms-4.1

getStatus

public String getStatus()
Return the status of this replica (STATUS_LONE, STATUS_MEMBER, STATUS_SUBLEADER or STATUS_LEADER)

Returns:
the status of this replica
Since:
jcms-5.0.0

join

public int join()
Joins a replica. A JoinMessage is sent to the given leaderUrl. If this replica acknowledges, it becomes my leader.

Returns:
the status code of the ack message
Since:
jcms-4.1

globalSuggestJoin

public void globalSuggestJoin(JSyncPreviousReplicaManager previousReplicaManager)
Suggest all replica to join this replica as leader. A SuggestJoinMessage is sent to each replica.

Since:
jcms-5.7.4

suggestJoin

public void suggestJoin(String urlReplica)
Suggest one replica to join this replica as leader. A SuggestJoinMessage is sent to this replica.

Parameters:
urlReplica - url of one joined replica
Since:
jcms-5.7.4

disjoin

public int disjoin()
Disjoins from the leader replica.

Returns:
the status code of the ack message
Since:
jcms-4.1

update

public int update()
Sends updates to the leader (if any) and to the group (if any)

Returns:
SC_OK (200) if the both update have succeeded. Otherwise returns the SC of the first update which failed.
Since:
jcms-4.1
See Also:
updateLeader(), updateGroup()

updateLeader

public int updateLeader()
Sends the updates to the leader replica.

Returns:
the status code of the ack message
Since:
jcms-4.1

updateGroup

public int updateGroup()
Sends the update to each replica of the group

Returns:
the status code of the ack message
Since:
jcms-4.1

processMessage

public boolean processMessage(OutputStream out,
                              Message msg)
                       throws IOException
Dispatches on the right method to process the given message

Parameters:
out - the output stream to reply
msg - the message to process
Returns:
true if the message has been correctly processed
Throws:
IOException
Since:
jcms-4.1

processJoinMessage

public boolean processJoinMessage(OutputStream out,
                                  JoinMessage msg)
                           throws IOException
Process a JoinMessage

Parameters:
out - the output stream to reply
msg - the message to process
Returns:
true if the message has been correctly processed
Throws:
IOException
Since:
jcms-4.1

processSuggestJoinMessage

public boolean processSuggestJoinMessage(OutputStream out,
                                         SuggestJoinMessage msg)
                                  throws IOException
Process a SuggestJoinMessage

Parameters:
out - the output stream to reply
msg - the message to process
Returns:
true if the message has been correctly processed
Throws:
IOException
Since:
jcms-5.7.4

processDisjoinMessage

public boolean processDisjoinMessage(OutputStream out,
                                     DisjoinMessage msg)
                              throws IOException
Process a DisjoinMessage

Parameters:
out - the output stream to reply
msg - the message to process
Returns:
true if the message has been correctly processed
Throws:
IOException
Since:
jcms-4.1

processUpdateMessage

public boolean processUpdateMessage(OutputStream out,
                                    UpdateMessage msg)
                             throws IOException
Process an UpdateMessage

Parameters:
out - the output stream to reply
msg - the message to process
Returns:
true if the message has been correctly processed
Throws:
IOException
Since:
jcms-4.1

addListener

public void addListener(JSyncListener listener)
Adds a JSync listener

Parameters:
listener - the JSync listener to be added
Since:
jcms-4.1

removeListener

public void removeListener(JSyncListener listener)
Removes a JSync listener

Parameters:
listener - the JSync listener to be removed
Since:
jcms-4.1

close

public void close()
Close all JSyncReplica resources when ending.


getLeaderUrl

public String getLeaderUrl()

setLeaderUrl

public void setLeaderUrl(String leaderUrl)

isCanBeJoined

public boolean isCanBeJoined()


Copyright © 2001-2010 Jalios SA. All Rights Reserved.