View Javadoc

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