summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/openslx/dnbd3/status/StatisticsGenerator.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/openslx/dnbd3/status/StatisticsGenerator.java')
-rw-r--r--src/main/java/org/openslx/dnbd3/status/StatisticsGenerator.java28
1 files changed, 22 insertions, 6 deletions
diff --git a/src/main/java/org/openslx/dnbd3/status/StatisticsGenerator.java b/src/main/java/org/openslx/dnbd3/status/StatisticsGenerator.java
index fb94275..4556378 100644
--- a/src/main/java/org/openslx/dnbd3/status/StatisticsGenerator.java
+++ b/src/main/java/org/openslx/dnbd3/status/StatisticsGenerator.java
@@ -31,11 +31,13 @@ public class StatisticsGenerator
private ExecutorService threadPool = new ThreadPoolExecutor( 3, 8, 1, TimeUnit.MINUTES, new SynchronousQueue<Runnable>() );
private List<Future<Status>> futureStatusList = new ArrayList<>();
private List<Status> statusList = new ArrayList<>();
- private final Gson jsonBuilder;
+ private final Gson exposedJsonBuilder;
+ private final Gson defaultJsonBuilder;
private final Graph graph = new Graph( "DNBD 3 Status" );
private byte[] imgData = null;
private final OutputMain output = new OutputMain();
+ private final OutputMain newOutput = new OutputMain();
public StatisticsGenerator( List<ServerPoller> pollers )
{
@@ -49,10 +51,13 @@ public class StatisticsGenerator
final GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.excludeFieldsWithoutExposeAnnotation();
gsonBuilder.registerTypeHierarchyAdapter( Edge.class, new EdgeSerializer() );
- jsonBuilder = gsonBuilder.create();
+ exposedJsonBuilder = gsonBuilder.create();
+ defaultJsonBuilder = new GsonBuilder().create();
output.graph = graph;
output.servers = new ArrayList<>();
output.timestamp = 0;
+ newOutput.servers = new ArrayList<>();
+ newOutput.timestamp = 0;
}
private synchronized void updateAll()
@@ -74,6 +79,7 @@ public class StatisticsGenerator
}
statusList.clear();
output.servers.clear();
+ newOutput.servers.clear();
for ( Future<Status> future : futureStatusList ) {
Status status;
try {
@@ -92,8 +98,12 @@ public class StatisticsGenerator
srv.uptime = status.getUptime();
srv.timestamp = status.getTimestamp();
output.servers.add( srv );
+ srv = srv.clone();
+ srv.images = status.getImages();
+ srv.clients = status.getClients();
+ newOutput.servers.add( srv );
}
- output.timestamp = System.currentTimeMillis();
+ newOutput.timestamp = output.timestamp = System.currentTimeMillis();
synchronized ( graph ) {
graph.decay();
for ( Status status : statusList ) {
@@ -137,11 +147,17 @@ public class StatisticsGenerator
return imgData;
}
- public String getJson()
+ public String getJson( boolean newFormat )
{
ensureUpToDate();
- synchronized ( output ) {
- return jsonBuilder.toJson( output );
+ if ( newFormat ) {
+ synchronized ( newOutput ) {
+ return defaultJsonBuilder.toJson( newOutput );
+ }
+ } else {
+ synchronized ( output ) {
+ return exposedJsonBuilder.toJson( output );
+ }
}
}