1 /* 2 * Replica is published under the terms 3 * of the Apache Software License. 4 */ 5 package replica.core; 6 7 import java.io.Serializable; 8 import java.util.Iterator; 9 import java.util.List; 10 import java.util.logging.Level; 11 import java.util.logging.Logger; 12 13 import replica.command.CommandProcessor; 14 import replica.group.Address; 15 import replica.group.GroupManager; 16 import replica.group.event.GroupListener; 17 import replica.group.event.MessageEvent; 18 import replica.group.event.SuspectEvent; 19 import replica.group.event.ViewEvent; 20 21 /*** 22 * Listener for group messages. It then forward them as apropriated 23 * to the server or database. 24 * 25 * @author Pedro Costa 26 * @author Helder Silva 27 * @since 21/Jan/2004 28 */ 29 public class ApplicationGroupListener implements GroupListener { 30 31 static Logger logger = Logger.getLogger(ApplicationGroupListener.class.getName()); 32 33 GroupManager groupManager; 34 CommandProcessor databaseCommandProcessor; 35 CommandProcessor serverCommandProcessor; 36 37 /*** 38 * Default constructor. 39 */ 40 public ApplicationGroupListener() { 41 super(); 42 } 43 44 /*** 45 * Start's listening for messages. 46 * 47 * Adds this listener as a GroupListener in the GroupManager. 48 */ 49 public void start(){ 50 getGroupManager().addListener( this ); 51 logger.info("Started Group Messages Listener."); 52 } 53 54 /*** 55 * Start's listening for messages. 56 * 57 * Adds this listener as a GroupListener in the GroupManager. 58 */ 59 public void stop(){ 60 getGroupManager().removeListener( this ); 61 logger.info("Stoped Group Messages Listener."); 62 } 63 64 /* (non-Javadoc) 65 * @see replica.group.event.GroupListener#message(replica.group.event.MessageEvent) 66 */ 67 public void message(MessageEvent event) { 68 69 logger.info("Received new message from {" + event.getMessageSource() + "} message:{" + event.getMessage() + "}."); 70 71 ApplicationMessage msg = (ApplicationMessage)event.getMessage(); 72 73 if( msg.isFromServer() ){ 74 Object res = getDatabaseCommandProcessor().process(msg); 75 if( res != null ) 76 processDatabaseUpdateResult( msg.getSessionID(), res ); 77 } 78 else 79 getServerCommandProcessor().process(msg); 80 } 81 82 protected void processDatabaseUpdateResult( String sessionId, Object result ){ 83 84 ApplicationMessage appMsg = null; 85 if( result instanceof ApplicationMessage ) 86 appMsg = (ApplicationMessage)result; 87 else{ 88 appMsg = new ApplicationMessage(); 89 appMsg.setOriginator( ApplicationMessage.DATABASE_MODULE); 90 appMsg.setBody((Serializable)result); 91 } 92 93 appMsg.setSessionID( sessionId); 94 95 getGroupManager().sendMessage( appMsg ); 96 } 97 98 /* (non-Javadoc) 99 * @see replica.group.event.GroupListener#viewChanged(replica.group.event.ViewEvent) 100 */ 101 public void viewChanged(ViewEvent event) { 102 // TODO Auto-generated method stub 103 104 if( logger.isLoggable(Level.FINE) ){ 105 List view = event.getView(); 106 107 StringBuffer res = new StringBuffer(); 108 res.append("{"); 109 for (Iterator iter = view.iterator(); iter.hasNext();) { 110 Address element = (Address) iter.next(); 111 res.append("["+element+"] "); 112 } 113 res.append("}."); 114 115 logger.fine("Received new view " + res + "."); 116 } 117 118 } 119 120 /* (non-Javadoc) 121 * @see replica.group.event.GroupListener#suspect(replica.group.event.SuspectEvent) 122 */ 123 public void suspect(SuspectEvent event) { 124 // TODO Auto-generated method stub 125 126 logger.fine("Received new suspect [" + event.getAddress() + "]."); 127 } 128 129 /*** 130 * @return 131 */ 132 public GroupManager getGroupManager() { 133 return groupManager; 134 } 135 136 /*** 137 * @param manager 138 */ 139 public void setGroupManager(GroupManager manager) { 140 groupManager = manager; 141 } 142 143 /*** 144 * @return 145 */ 146 public CommandProcessor getDatabaseCommandProcessor() { 147 return databaseCommandProcessor; 148 } 149 150 /*** 151 * @param processor 152 */ 153 public void setDatabaseCommandProcessor(CommandProcessor processor) { 154 databaseCommandProcessor = processor; 155 } 156 157 /*** 158 * @return 159 */ 160 public CommandProcessor getServerCommandProcessor() { 161 return serverCommandProcessor; 162 } 163 164 /*** 165 * @param processor 166 */ 167 public void setServerCommandProcessor(CommandProcessor processor) { 168 serverCommandProcessor = processor; 169 } 170 171 }

This page was automatically generated by Maven