@Override
public void dumpState(OutputStream outputStream) throws IOException {
StringBuilder sb = new StringBuilder();
sb.append(String.format("Memory budget = %d%n", storageProperties.getMemoryComponentGlobalBudget()));
sb.append(String.format("Memory available = %d%n", memoryManager.getAvailable()));
sb.append("\n");
String dsHeaderFormat = "%-10s %-6s %-16s %-12s\n";
String dsFormat = "%-10d %-6b %-16d %-12d\n";
String idxHeaderFormat = "%-10s %-11s %-6s %-16s %-6s\n";
String idxFormat = "%-10d %-11d %-6b %-16d %-6s\n";
sb.append("[Datasets]\n");
sb.append(String.format(dsHeaderFormat, "DatasetID", "Open", "Reference Count", "Last Access"));
for (DatasetResource dsr : datasets.values()) {
DatasetInfo dsInfo = dsr.getDatasetInfo();
sb.append(String.format(dsFormat, dsInfo.getDatasetID(), dsInfo.isOpen(), dsInfo.getReferenceCount(),
dsInfo.getLastAccess()));
}
sb.append("\n");
sb.append("[Indexes]\n");
sb.append(String.format(idxHeaderFormat, "DatasetID", "ResourceID", "Open", "Reference Count", "Index"));
for (DatasetResource dsr : datasets.values()) {
DatasetInfo dsInfo = dsr.getDatasetInfo();
dsInfo.getIndexes().forEach((key, iInfo) -> sb.append(String.format(idxFormat, dsInfo.getDatasetID(), key,
iInfo.isOpen(), iInfo.getReferenceCount(), iInfo.getIndex())));
}
outputStream.write(sb.toString().getBytes());
}