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