Changeset 891

Show
Ignore:
Timestamp:
10/07/06 12:06:30 (2 years ago)
Author:
alban
Message:

[Bug 16] created ExecTrackerStatisticsConsumer?, created subpackages for freecast.tracker

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/source/org/kolaka/freecast/manager/gui/Main.java

    r849 r891  
    4242import org.kolaka.freecast.swing.ConfigurableResources; 
    4343import org.kolaka.freecast.swing.SwingApplication; 
    44 import org.kolaka.freecast.tracker.HttpTracker; 
    45 import org.kolaka.freecast.tracker.HttpTrackerConfigurator; 
    4644import org.kolaka.freecast.tracker.NoConfiguredTrackerException; 
     45import org.kolaka.freecast.tracker.http.HttpTracker; 
     46import org.kolaka.freecast.tracker.http.HttpTrackerConfigurator; 
    4747 
    4848/** 
  • trunk/source/org/kolaka/freecast/node/DefaultNodeService.java

    r830 r891  
    3232import org.kolaka.freecast.service.ControlException; 
    3333import org.kolaka.freecast.service.LoopService; 
    34 import org.kolaka.freecast.tracker.HttpMultiTrackerLocator; 
    35 import org.kolaka.freecast.tracker.HttpTrackerLocator; 
    3634import org.kolaka.freecast.tracker.NetworkIdentifier; 
    3735import org.kolaka.freecast.tracker.Tracker; 
    3836import org.kolaka.freecast.tracker.TrackerException; 
    3937import org.kolaka.freecast.tracker.TrackerLocator; 
     38import org.kolaka.freecast.tracker.http.HttpMultiTrackerLocator; 
     39import org.kolaka.freecast.tracker.http.HttpTrackerLocator; 
    4040 
    4141/** 
  • trunk/source/org/kolaka/freecast/tracker/DefaultMultiTracker.java

    r888 r891  
    2525 
    2626import java.util.Date; 
     27import java.util.HashSet; 
    2728import java.util.Iterator; 
    2829import java.util.Map; 
     
    3839import org.kolaka.freecast.timer.Timer; 
    3940import org.kolaka.freecast.timer.TimerUser; 
     41import org.kolaka.freecast.tracker.statistics.DefaultTrackerStatistics; 
     42import org.kolaka.freecast.tracker.statistics.MultiTrackerStatisticsProvider; 
     43import org.kolaka.freecast.tracker.statistics.TrackerStatistics; 
     44import org.kolaka.freecast.tracker.statistics.TrackerStatisticsProvider; 
     45import org.kolaka.freecast.tracker.statistics.TrackerStatisticsSetProvider; 
    4046 
    41 public class DefaultMultiTracker implements MultiTracker, TimerUser, ClientInfoProviderUser, MultiTrackerStatisticsProvider
     47public class DefaultMultiTracker implements MultiTracker, TimerUser, ClientInfoProviderUser, MultiTrackerStatisticsProvider, TrackerStatisticsSetProvider
    4248 
    43   private Map trackers = new TreeMap(); 
     49  private final Map trackers = new TreeMap(); 
    4450 
    4551  private ClientInfoProvider clientInfoProvider; 
    46  
     52   
    4753  public DefaultMultiTracker() { 
    4854    Runnable purgeRunnable = new Runnable() { 
     
    5359    timer.executePeriodically(DefaultTimer.minutes(1), purgeRunnable , false); 
    5460  } 
    55    
     61 
     62  public Set getStatisticsSet() { 
     63    Set statistics = new HashSet(); 
     64    for (Iterator iterator = trackers.values().iterator(); iterator.hasNext();) { 
     65      Tracker tracker = (Tracker) iterator.next(); 
     66      statistics.add(((TrackerStatisticsProvider) tracker).getStatistics()); 
     67    } 
     68    return statistics; 
     69  } 
     70 
    5671  public TrackerStatistics getStatistics(NetworkIdentifier identifier) { 
    5772    Tracker tracker = (Tracker) trackers.get(identifier); 
     
    7792    if (tracker == null) { 
    7893      LogFactory.getLog(getClass()).info("create tracker for network " + identifier); 
    79       tracker = createTracker(getClientInfoProvider()); 
     94      tracker = createTracker(identifier, getClientInfoProvider()); 
    8095      trackers.put(identifier, tracker); 
    8196    } 
     
    8398  } 
    8499   
    85   protected Tracker createTracker(ClientInfoProvider clientInfoProvider) { 
    86     DefaultTracker tracker = new DefaultTracker(); 
     100  protected Tracker createTracker(NetworkIdentifier identifier, ClientInfoProvider clientInfoProvider) { 
     101    DefaultTracker tracker = new DefaultTracker(identifier); 
    87102    tracker.setClientInfoProvider(clientInfoProvider); 
    88103    return new TimedTracker(tracker); 
  • trunk/source/org/kolaka/freecast/tracker/DefaultTracker.java

    r888 r891  
    2626import java.net.InetAddress; 
    2727import java.net.UnknownHostException; 
     28import java.util.Collections; 
    2829import java.util.Date; 
    2930import java.util.HashMap; 
     
    4344import org.kolaka.freecast.peer.PeerReferences; 
    4445import org.kolaka.freecast.service.ControlException; 
     46import org.kolaka.freecast.tracker.statistics.TrackerStatistics; 
     47import org.kolaka.freecast.tracker.statistics.TrackerStatisticsComputer; 
     48import org.kolaka.freecast.tracker.statistics.TrackerStatisticsProvider; 
     49import org.kolaka.freecast.tracker.statistics.TrackerStatisticsSetProvider; 
    4550 
    4651/** 
     
    4954 * @author <a href="mailto:alban.peignier@free.fr">Alban Peignier </a> 
    5055 */ 
    51 public class DefaultTracker implements Tracker, ClientInfoProviderUser, TrackerStatisticsProvider
     56public class DefaultTracker implements Tracker, ClientInfoProviderUser, TrackerStatisticsProvider, TrackerStatisticsSetProvider
    5257 
    5358        private Map entries = new HashMap(); 
     
    6267    return statisticsComputer.getStatistics(); 
    6368  } 
    64  
    65         public DefaultTracker() { 
     69   
     70  public Set getStatisticsSet() { 
     71    return Collections.singleton(getStatistics()); 
     72  } 
     73 
     74        public DefaultTracker(NetworkIdentifier networkId) { 
     75    this(); 
     76    statisticsComputer.setNetworkId(networkId); 
     77  } 
     78   
     79  public DefaultTracker() { 
    6680                this.auditor = (Tracker.Auditor) AuditorFactory.getInstance().get( 
    6781                                Tracker.Auditor.class, this); 
  • trunk/source/org/kolaka/freecast/tracker/Main.java

    r840 r891  
    2626import org.apache.commons.configuration.Configuration; 
    2727import org.kolaka.freecast.Application; 
     28import org.kolaka.freecast.tracker.http.HttpTracker; 
     29import org.kolaka.freecast.tracker.http.HttpTrackerConfigurator; 
    2830 
    2931/** 
  • trunk/source/org/kolaka/freecast/tracker/NetworkIdentifier.java

    r863 r891  
    5151 
    5252  public String toString() { 
    53     return "#" + Long.toHexString(value).toUpperCase(); 
     53    return Long.toHexString(value).toUpperCase(); 
    5454  } 
    5555   
  • trunk/source/org/kolaka/freecast/tracker/http/HessianClientInfoProvider.java

    r888 r891  
    2222 */ 
    2323 
    24 package org.kolaka.freecast.tracker; 
     24package org.kolaka.freecast.tracker.http; 
     25 
     26import org.kolaka.freecast.tracker.ClientInfoProvider; 
     27import org.kolaka.freecast.tracker.TrackerException; 
    2528 
    2629import com.caucho.services.server.ServiceContext; 
  • trunk/source/org/kolaka/freecast/tracker/http/HttpMultiTrackerConnector.java

    r888 r891  
    2222 */ 
    2323 
    24 package org.kolaka.freecast.tracker
     24package org.kolaka.freecast.tracker.http
    2525 
    2626import java.util.Set; 
     
    3131import org.kolaka.freecast.node.NodeStatus; 
    3232import org.kolaka.freecast.peer.PeerReference; 
     33import org.kolaka.freecast.tracker.MultiTracker; 
     34import org.kolaka.freecast.tracker.NetworkIdentifier; 
     35import org.kolaka.freecast.tracker.TrackerException; 
    3336 
    3437public class HttpMultiTrackerConnector extends HttpTrackerConnector implements MultiTracker { 
  • trunk/source/org/kolaka/freecast/tracker/http/HttpMultiTrackerLocator.java

    r830 r891  
    2222 */ 
    2323 
    24 package org.kolaka.freecast.tracker
     24package org.kolaka.freecast.tracker.http
    2525 
    2626import java.net.InetSocketAddress; 
     
    2828 
    2929import org.apache.commons.lang.Validate; 
     30import org.kolaka.freecast.tracker.MultiTracker; 
     31import org.kolaka.freecast.tracker.MultiTrackerAdapter; 
     32import org.kolaka.freecast.tracker.NetworkIdentifier; 
     33import org.kolaka.freecast.tracker.ProtectedTracker; 
     34import org.kolaka.freecast.tracker.Tracker; 
     35import org.kolaka.freecast.tracker.TrackerException; 
     36import org.kolaka.freecast.tracker.TrackerLocator; 
    3037 
    3138import com.caucho.hessian.client.HessianProxyFactory; 
  • trunk/source/org/kolaka/freecast/tracker/http/HttpSimpleTrackerConnector.java

    r888 r891  
    2222 */ 
    2323 
    24 package org.kolaka.freecast.tracker
     24package org.kolaka.freecast.tracker.http
    2525 
    2626import java.util.Set; 
     
    3131import org.kolaka.freecast.node.NodeStatus; 
    3232import org.kolaka.freecast.peer.PeerReference; 
     33import org.kolaka.freecast.tracker.Tracker; 
     34import org.kolaka.freecast.tracker.TrackerException; 
    3335 
    3436public class HttpSimpleTrackerConnector extends HttpTrackerConnector implements Tracker { 
  • trunk/source/org/kolaka/freecast/tracker/http/HttpTracker.java

    r888 r891  
    2222 */ 
    2323 
    24 package org.kolaka.freecast.tracker
     24package org.kolaka.freecast.tracker.http
    2525 
    2626import java.net.InetSocketAddress; 
     
    2828import org.apache.commons.logging.LogFactory; 
    2929import org.kolaka.freecast.service.ControlException; 
     30import org.kolaka.freecast.tracker.DefaultMultiTracker; 
     31import org.kolaka.freecast.tracker.DefaultTracker; 
     32import org.kolaka.freecast.tracker.Main; 
     33import org.kolaka.freecast.tracker.TrackerService; 
     34import org.kolaka.freecast.tracker.statistics.TrackerStatisticsConsumer; 
     35import org.kolaka.freecast.tracker.statistics.TrackerStatisticsConsumerManager; 
     36import org.kolaka.freecast.tracker.statistics.TrackerStatisticsSetProvider; 
    3037import org.kolaka.freecast.transport.cas.ConnectionAssistantServer; 
    3138import org.mortbay.http.SocketListener; 
     
    5562                this.listenAddress = listenAddress; 
    5663        } 
     64 
     65  private TrackerStatisticsConsumerManager consumerManager = new TrackerStatisticsConsumerManager(); 
    5766   
     67  public void add(TrackerStatisticsConsumer consumer) { 
     68    consumerManager.add(consumer); 
     69  } 
     70 
    5871  private boolean multiTracker; 
    5972 
     
    6174    this.multiTracker = multiTracker; 
    6275  } 
    63  
     76   
    6477        public void start() throws ControlException { 
    6578    LogFactory.getLog(Main.class).info( 
     
    7992        "use connector " + connectorClass.getName()); 
    8093 
     94    if (tracker instanceof TrackerStatisticsSetProvider) { 
     95      consumerManager.setProvider((TrackerStatisticsSetProvider) tracker); 
     96    } 
     97     
    8198    server = new Server(); 
    8299                SocketListener listener = new SocketListener(); 
     
    109126                 
    110127                if (caServer != null) { 
    111                        caServer.start(); 
     128      caServer.start(); 
    112129                } 
     130     
     131    consumerManager.start(); 
    113132        } 
    114133 
     
    123142                        caServer.stop(); 
    124143                } 
     144     
     145    consumerManager.stop(); 
    125146        } 
    126147 
  • trunk/source/org/kolaka/freecast/tracker/http/HttpTrackerConfigurator.java

    r888 r891  
    2222 */ 
    2323 
    24 package org.kolaka.freecast.tracker
     24package org.kolaka.freecast.tracker.http
    2525 
    2626import java.net.InetSocketAddress; 
    2727 
    2828import org.apache.commons.configuration.Configuration; 
     29import org.apache.commons.configuration.ConfigurationException; 
     30import org.apache.commons.logging.LogFactory; 
     31import org.kolaka.freecast.tracker.NoConfiguredTrackerException; 
     32import org.kolaka.freecast.tracker.statistics.TrackerStatisticsConsumer; 
     33import org.kolaka.freecast.tracker.statistics.TrackerStatisticsConsumerLoader; 
    2934import org.kolaka.freecast.transport.cas.ConnectionAssistantServer; 
    3035 
     
    3641public class HttpTrackerConfigurator { 
    3742 
    38         public void configure(HttpTracker tracker, Configuration configuration) throws NoConfiguredTrackerException
     43        public void configure(HttpTracker tracker, Configuration configuration) throws NoConfiguredTrackerException, ConfigurationException
    3944    /* 
    4045     * for the moment, the tracker.class changes the Connector implementation  
     
    6671                        tracker.setConnectionAssistantServer(server); 
    6772                } 
     73     
     74    Configuration consumerConfiguration = configuration.subset("statistics.consumer"); 
     75    TrackerStatisticsConsumer consumer = new TrackerStatisticsConsumerLoader().load(consumerConfiguration); 
     76    LogFactory.getLog(getClass()).debug("add consumer : " + consumer); 
     77    tracker.add(consumer); 
    6878        } 
    6979 
  • trunk/source/org/kolaka/freecast/tracker/http/HttpTrackerConnector.java

    r888 r891  
    2222 */ 
    2323 
    24 package org.kolaka.freecast.tracker; 
     24package org.kolaka.freecast.tracker.http; 
     25 
     26import org.kolaka.freecast.tracker.ClientInfoProviderUser; 
    2527 
    2628import com.caucho.hessian.server.HessianServlet; 
  • trunk/source/org/kolaka/freecast/tracker/http/HttpTrackerLocator.java

    r830 r891  
    2222 */ 
    2323 
    24 package org.kolaka.freecast.tracker
     24package org.kolaka.freecast.tracker.http
    2525 
    2626import java.net.InetSocketAddress; 
     
    2828 
    2929import org.apache.commons.lang.Validate; 
     30import org.kolaka.freecast.tracker.ProtectedTracker; 
     31import org.kolaka.freecast.tracker.Tracker; 
     32import org.kolaka.freecast.tracker.TrackerException; 
     33import org.kolaka.freecast.tracker.TrackerLocator; 
    3034 
    3135import com.caucho.hessian.client.HessianProxyFactory; 
  • trunk/source/org/kolaka/freecast/tracker/http/IceStatsServlet.java

    r888 r891  
    2222 */ 
    2323 
    24 package org.kolaka.freecast.tracker
     24package org.kolaka.freecast.tracker.http
    2525 
    2626import java.io.IOException; 
     
    3232 
    3333import org.apache.commons.logging.LogFactory; 
     34import org.kolaka.freecast.tracker.NetworkIdentifier; 
     35import org.kolaka.freecast.tracker.statistics.MultiTrackerStatisticsProvider; 
     36import org.kolaka.freecast.tracker.statistics.TrackerStatistics; 
     37import org.kolaka.freecast.tracker.statistics.TrackerStatisticsProvider; 
    3438 
    3539public class IceStatsServlet extends HttpServlet { 
  • trunk/source/org/kolaka/freecast/tracker/statistics/DefaultTrackerStatistics.java

    r888 r891  
    2222 */ 
    2323 
    24 package org.kolaka.freecast.tracker
     24package org.kolaka.freecast.tracker.statistics
    2525 
    2626import org.apache.commons.lang.builder.EqualsBuilder; 
    2727import org.apache.commons.lang.builder.HashCodeBuilder; 
    2828import org.apache.commons.lang.builder.ToStringBuilder; 
     29import org.kolaka.freecast.tracker.NetworkIdentifier; 
    2930 
    3031public class DefaultTrackerStatistics implements TrackerStatistics { 
     
    3637   
    3738  private int listenerConnected; 
     39   
     40  private NetworkIdentifier networkId; 
    3841   
    3942  public DefaultTrackerStatistics() { 
     
    8285  } 
    8386   
     87  public NetworkIdentifier getNetworkId() { 
     88    return networkId; 
     89  } 
     90   
     91  public void setNetworkId(NetworkIdentifier networkId) { 
     92    this.networkId = networkId; 
     93  } 
     94   
    8495  public String toString() { 
    8596    return ToStringBuilder.reflectionToString(this); 
  • trunk/source/org/kolaka/freecast/tracker/statistics/MultiTrackerStatisticsProvider.java

    r888 r891  
    2222 */ 
    2323 
    24 package org.kolaka.freecast.tracker; 
     24package org.kolaka.freecast.tracker.statistics; 
     25 
     26import org.kolaka.freecast.tracker.NetworkIdentifier; 
    2527 
    2628public interface MultiTrackerStatisticsProvider { 
  • trunk/source/org/kolaka/freecast/tracker/statistics/TrackerStatistics.java

    r888 r891  
    2222 */ 
    2323 
    24 package org.kolaka.freecast.tracker; 
     24package org.kolaka.freecast.tracker.statistics; 
     25 
     26import org.kolaka.freecast.tracker.NetworkIdentifier; 
    2527 
    2628public interface TrackerStatistics { 
     
    3335 
    3436  int getListenerConnected(); 
     37   
     38  NetworkIdentifier getNetworkId(); 
    3539 
    3640} 
  • trunk/source/org/kolaka/freecast/tracker/statistics/TrackerStatisticsComputer.java

    r888 r891  
    2222 */ 
    2323 
    24 package org.kolaka.freecast.tracker
     24package org.kolaka.freecast.tracker.statistics
    2525 
    2626import org.apache.commons.logging.LogFactory; 
     27import org.kolaka.freecast.tracker.NetworkIdentifier; 
    2728 
    28 public class TrackerStatisticsComputer
     29public class TrackerStatisticsComputer implements TrackerStatisticsProvider
    2930 
    3031  private int nodeConnections; 
     
    4142    statistics.setRootNodeConnections(rootNodeConnections); 
    4243    statistics.setRootNodePresents(rootNodePresents); 
     44    if (networkId != null) { 
     45      statistics.setNetworkId(networkId); 
     46    } 
    4347    return statistics; 
    4448  } 
     
    7074    LogFactory.getLog(getClass()).info(getStatistics()); 
    7175  } 
     76 
     77  private NetworkIdentifier networkId; 
     78   
     79  public void setNetworkId(NetworkIdentifier networkId) { 
     80    this.networkId = networkId; 
     81  } 
    7282   
    7383} 
  • trunk/source/org/kolaka/freecast/tracker/statistics/TrackerStatisticsProvider.java

    r888 r891  
    2222 */ 
    2323 
    24 package org.kolaka.freecast.tracker
     24package org.kolaka.freecast.tracker.statistics
    2525 
    2626public interface TrackerStatisticsProvider { 
  • trunk/source/org/kolaka/freecast/tracker/test/TrackerServletTest.java

    r889 r891  
    2929import org.kolaka.freecast.peer.InetPeerReference; 
    3030import org.kolaka.freecast.test.BaseTestCase; 
    31 import org.kolaka.freecast.tracker.HttpMultiTrackerLocator; 
    32 import org.kolaka.freecast.tracker.HttpTracker; 
    33 import org.kolaka.freecast.tracker.HttpTrackerLocator; 
    3431import org.kolaka.freecast.tracker.NetworkIdentifier; 
    3532import org.kolaka.freecast.tracker.Tracker; 
    3633import org.kolaka.freecast.tracker.TrackerException; 
    3734import org.kolaka.freecast.tracker.TrackerLocator; 
     35import org.kolaka.freecast.tracker.http.HttpMultiTrackerLocator; 
     36import org.kolaka.freecast.tracker.http.HttpTracker; 
     37import org.kolaka.freecast.tracker.http.HttpTrackerLocator; 
    3838 
    3939/** 
  • trunk/source/org/kolaka/freecast/tracker/test/TrackerStatisticsComputerTest.java

    r888 r891  
    2626import junit.framework.TestCase; 
    2727 
    28 import org.kolaka.freecast.tracker.DefaultTrackerStatistics; 
    29 import org.kolaka.freecast.tracker.TrackerStatisticsComputer; 
     28import org.kolaka.freecast.tracker.statistics.DefaultTrackerStatistics; 
     29import org.kolaka.freecast.tracker.statistics.TrackerStatisticsComputer; 
    3030 
    3131public class TrackerStatisticsComputerTest extends TestCase {