01: /*
02: * <copyright>
03: *
04: * Copyright 1997-2004 BBNT Solutions, LLC
05: * under sponsorship of the Defense Advanced Research Projects
06: * Agency (DARPA).
07: *
08: * You can redistribute this software and/or modify it under the
09: * terms of the Cougaar Open Source License as published on the
10: * Cougaar Open Source Website (www.cougaar.org).
11: *
12: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
13: * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
14: * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
15: * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
16: * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
17: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
18: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
19: * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
20: * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
21: * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
22: * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23: *
24: * </copyright>
25: */
26:
27: package org.cougaar.mlm.plugin.sample;
28:
29: import java.util.Vector;
30:
31: import org.cougaar.core.mts.MessageStatistics;
32:
33: /**
34: * Scalability plugin at leaf : allocate tasks to assets based on value
35: * in task and value associated with plugin
36: **/
37: public class MessageStatisticsPlugin extends
38: org.cougaar.planning.plugin.legacy.SimplePlugin {
39: private long interval;
40:
41: public void setupSubscriptions() {
42: Vector params = getParameters();
43: if (params.size() > 0) {
44: interval = Long.parseLong((String) params.elementAt(0));
45: } else {
46: interval = 60000L;
47: }
48: wakeAfterRealTime(interval);
49: }
50:
51: // Grab tasks and allocate to asset
52: public void execute() {
53: printHistogram();
54: wakeAfterRealTime(interval);
55: }
56:
57: private void printHistogram() {
58: Object cluster = getCluster();
59: MessageStatistics.Statistics messageStatistics = null;
60: if (cluster instanceof MessageStatistics) {
61: messageStatistics = ((MessageStatistics) cluster)
62: .getMessageStatistics(true);
63: StringBuffer buf = new StringBuffer();
64: buf.append("\nMessage Histogram:\n");
65: for (int bin = 0; bin < MessageStatistics.NBINS; bin++) {
66: buf.append(formatLong(MessageStatistics.BIN_SIZES[bin],
67: 13));
68: buf.append(":");
69: buf.append(formatLong(messageStatistics.histogram[bin],
70: 10));
71: buf.append("\n");
72: }
73: System.out.println(buf.toString());
74: } else {
75: System.out.println("No Message Histogram:");
76: }
77: }
78:
79: private static String formatLong(long n, int w) {
80: String digits = "" + n;
81: return " ".substring(digits.length(), w)
82: + digits;
83: }
84: }
|