diff options
author | Simon Rettberg | 2018-03-12 14:20:13 +0100 |
---|---|---|
committer | Simon Rettberg | 2018-03-12 14:20:13 +0100 |
commit | 54472b7e6762d88658e9a26f5f6c3ed789e1e7d1 (patch) | |
tree | a5360bf24df8acf85c1a0b988abe60adc5de7fc1 /src/main/java/org/openslx/dnbd3/status/StatisticsGenerator.java | |
parent | Add clustering to nodes based on address (diff) | |
download | dnbd3-status-54472b7e6762d88658e9a26f5f6c3ed789e1e7d1.tar.gz dnbd3-status-54472b7e6762d88658e9a26f5f6c3ed789e1e7d1.tar.xz dnbd3-status-54472b7e6762d88658e9a26f5f6c3ed789e1e7d1.zip |
Serverlist on command line; support new dnbd3 rpc format
Diffstat (limited to 'src/main/java/org/openslx/dnbd3/status/StatisticsGenerator.java')
-rw-r--r-- | src/main/java/org/openslx/dnbd3/status/StatisticsGenerator.java | 28 |
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 ); + } } } |