1 /* 2 * Copyright (c) 1998-2002 The Jgroup Team. 3 * 4 * This program is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU Lesser General Public License version 2 as 6 * published by the Free Software Foundation. 7 * 8 * This program is distributed in the hope that it will be useful, 9 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 * GNU Lesser General Public License for more details. 12 * 13 * You should have received a copy of the GNU Lesser General Public License 14 * along with this program; if not, write to the Free Software 15 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 16 * 17 */ 18 19 package jgroup.test.performance.arm; 20 21 import java.util.HashMap; 22 import java.util.Map; 23 24 import jgroup.core.GroupManager; 25 import jgroup.core.JgroupException; 26 import jgroup.core.MemberId; 27 import jgroup.core.MembershipListener; 28 import jgroup.core.MembershipService; 29 import jgroup.core.MergingListener; 30 import jgroup.core.View; 31 32 import org.apache.log4j.Logger; 33 34 /** 35 * Allocator server 36 * 37 * @author Hein Meling 38 * @since Jgroup 1.2 39 */ 40 public class StatefulServer 41 implements MembershipListener, MergingListener 42 { 43 44 //////////////////////////////////////////////////////////////////////////////////////////// 45 // Logger 46 //////////////////////////////////////////////////////////////////////////////////////////// 47 48 /** Obtain logger for this class */ 49 private static final Logger log = Logger.getLogger(StatefulServer.class); 50 51 52 //////////////////////////////////////////////////////////////////////////////////////////// 53 // Fields (non-shared state) 54 //////////////////////////////////////////////////////////////////////////////////////////// 55 56 /* My MemberId */ 57 private MemberId p; 58 59 /* The current view composition */ 60 private View viewComp; 61 62 /* Number of resources sent */ 63 private Map sent = new HashMap(10); 64 65 /* Value of <code>sent</code> at the beginning of the current view */ 66 private Map lastSent = new HashMap(10); 67 68 /* Number of resources received */ 69 private Map<MemberId,Integer> received = new HashMap<MemberId,Integer>(10); 70 71 72 //////////////////////////////////////////////////////////////////////////////////////////// 73 // Constructor 74 //////////////////////////////////////////////////////////////////////////////////////////// 75 76 public StatefulServer() 77 throws JgroupException 78 { 79 GroupManager gm = GroupManager.getGroupManager(this); 80 MembershipService pgms = (MembershipService) gm.getService("PGMS"); 81 p = pgms.getMyIdentifier(); 82 Integer initialValue = new Integer(50); 83 received.put(p, initialValue); 84 System.out.println("StatefulServer initialized"); 85 } 86 87 88 //////////////////////////////////////////////////////////////////////////////////////////// 89 // MergingListener methods 90 //////////////////////////////////////////////////////////////////////////////////////////// 91 92 /** 93 * @see jgroup.core.MergingListener#getState(jgroup.core.MemberId[]) 94 */ 95 public Object getState(MemberId[] dests) 96 { 97 if (log.isDebugEnabled()) { 98 for (int i=0; i < dests.length; i++) 99 log.debug("getState dests["+i+"]: "+dests[i]); 100 } 101 return null; 102 } 103 104 105 /** 106 * @see jgroup.core.MergingListener#putState(java.lang.Object, jgroup.core.MemberId[]) 107 */ 108 public void putState(Object status, MemberId[] sources) 109 { 110 if (log.isDebugEnabled()) { 111 for (int i=0; i < sources.length; i++) 112 log.debug("putState sources["+i+"]: "+sources[i]); 113 } 114 } 115 116 117 /** 118 * @see jgroup.core.MembershipListener#viewChange(jgroup.core.View) 119 */ 120 public void viewChange(View view) 121 { 122 viewComp = view; 123 } 124 125 126 public void prepareChange() { } 127 128 public void hasLeft() { } 129 130 131 //////////////////////////////////////////////////////////////////////////////////////////// 132 // Main method 133 //////////////////////////////////////////////////////////////////////////////////////////// 134 135 public static void main(String[] argv) 136 throws Exception 137 { 138 StatefulServer server = new StatefulServer(); 139 } 140 141 } // END StatefulServer