CVS update: JGroups/src/org/jgroups/demos StompDraw.java

"Bela Ban" <[email protected]> Wed, 27 Oct 2010 07:43:19 +0000
Newsgroups gmane.comp.java.javagroups.cvs
Message-ID <[email protected]>
  User: belaban 
  Date: 10/10/27 07:43:19

  Modified:    src/org/jgroups/demos StompDraw.java
  Log:
  ns
  
  Revision  Changes    Path
  1.3       +40 -21    JGroups/src/org/jgroups/demos/StompDraw.java
  
  Index: StompDraw.java
  ===================================================================
  RCS file: /cvsroot/javagroups/JGroups/src/org/jgroups/demos/StompDraw.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- StompDraw.java	26 Oct 2010 17:11:32 -0000	1.2
  +++ StompDraw.java	27 Oct 2010 07:43:19 -0000	1.3
  @@ -1,4 +1,4 @@
  -// $Id: StompDraw.java,v 1.2 2010/10/26 17:11:32 belaban Exp $
  +// $Id: StompDraw.java,v 1.3 2010/10/27 07:43:19 belaban Exp $
   
   
   package org.jgroups.demos;
  @@ -21,7 +21,8 @@
    * @author Bela Ban, Oct 17 2001
    */
   public class StompDraw implements StompConnection.Listener, ActionListener {
  -    private int                    member_size=1;
  +    private int                    num_servers=1;
  +    private int                    num_clients=0;
       private JFrame                 mainFrame=null;
       private JPanel                 sub_panel=null;
       private DrawPanel              panel=null;
  @@ -30,10 +31,12 @@
       private final Font             default_font=new Font("Helvetica",Font.PLAIN,12);
       private final Color            draw_color=selectColor();
       private static final Color     background_color=Color.white;
  -    private final                  List<String> members=new ArrayList<String>();
  +    private final                  List<String> servers=new ArrayList<String>();
  +    private final Set<String>      clients=new HashSet<String>();
   
       protected StompConnection      stomp_client;
       protected static final String  draw_dest="/topics/draw-demo";
  +    protected static final String  clients_dest="/topics/clients";
   
   
       public StompDraw(String host, String port) throws Exception {
  @@ -100,6 +103,7 @@
       public void go() throws Exception {
           stomp_client.connect();
           stomp_client.subscribe(draw_dest);
  +        stomp_client.subscribe(clients_dest);
   
           mainFrame=new JFrame();
           mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  @@ -124,46 +128,48 @@
           mainFrame.setBounds(new Rectangle(250, 250));
           mainFrame.setVisible(true);
           setTitle();
  -    }
   
  +        String session_id=stomp_client.getSessionId();
  +        if(session_id != null) {
  +            stomp_client.send(clients_dest, null, 0, 0, "client-joined", session_id);
  +        }
  +    }
   
   
   
  -    void setTitle(String title) {
  -        String tmp="";
  -        if(title != null)
  -            mainFrame.setTitle(title);
  -        else {
  -            tmp+=" (" + member_size + ")";
  -            mainFrame.setTitle(tmp);
  -        }
  +    void setTitle() {
  +        if(mainFrame != null)
  +            mainFrame.setTitle(num_servers + " server(s), " + num_clients + " client(s)");
       }
   
  -    void setTitle() {
  -        setTitle("Draw demo - " + member_size + " server(s)");
  +    int getNumberOfClients() {
  +        synchronized(clients) {
  +            return clients.size();
  +        }
       }
   
       public void onInfo(Map<String, String> information) {
           String view=information.get("view");
  +        Collection<String> list;
           if(view != null) {
  -            List<String> list=Util.parseCommaDelimitedStrings(view);
  +            list=Util.parseCommaDelimitedStrings(view);
               if(list != null) {
  -                member_size=list.size();
  +                num_servers=list.size();
                   if(mainFrame != null)
                       setTitle();
  -                members.clear();
  -                members.addAll(list);
  +                servers.clear();
  +                servers.addAll(list);
               }
               else {
                   String targets=information.get("endpoints");
                   if(targets != null) {
                       list=Util.parseCommaDelimitedStrings(targets);
                       if(list != null) {
  -                        member_size=list.size();
  +                        num_servers=list.size();
                           if(mainFrame != null)
                               setTitle();
  -                        members.clear();
  -                        members.addAll(list);
  +                        servers.clear();
  +                        servers.addAll(list);
                       }
                   }
               }
  @@ -173,6 +179,19 @@
       public void onMessage(Map<String, String> headers, byte[] buf, int offset, int length) {
           if(buf == null)
               return;
  +        String destination=headers.get("destination");
  +        if(destination != null && destination.equals(clients_dest)) {
  +            String new_client=headers.get("client-joined");
  +            if(new_client != null) {
  +                synchronized(clients) {
  +                    if(clients.add(new_client)) {
  +                        num_clients=clients.size();
  +                        setTitle();
  +                    }
  +                }
  +            }
  +            return;
  +        }
   
           try {
               DrawCommand comm=(DrawCommand)Util.streamableFromByteBuffer(DrawCommand.class, buf, offset, length);
  
  
  

------------------------------------------------------------------------------
Nokia and AT&T present the 2010 Calling All Innovators-North America contest
Create new apps & games for the Nokia N8 for consumers in  U.S. and Canada
$10 million total in prizes - $4M cash, 500 devices, nearly $6M in marketing
Develop with Nokia Qt SDK, Web Runtime, or Java and Publish to Ovi Store 
http://p.sf.net/sfu/nokia-dev2dev