public static RegionMBeanBridge getInstance(Region region) {

    if (region.getAttributes().getPartitionAttributes() != null) {

      RegionMBeanBridge bridge = new PartitionedRegionBridge(region);
      PartitionedRegion parRegion = ((PartitionedRegion) region);
      DiskStoreImpl dsi = parRegion.getDiskStore();
      if (dsi != null) {
        DiskRegionStats stats = parRegion.getDiskRegionStats();

        DiskRegionBridge diskRegionBridge = new DiskRegionBridge(stats);
        bridge.addDiskRegionBridge(diskRegionBridge);

        for (DirectoryHolder dh : dsi.getDirectoryHolders()) {
          diskRegionBridge.addDirectoryStats(dh.getDiskDirectoryStats());
        }

        bridge.addDiskRegionBridge(diskRegionBridge);
      }

      return bridge;

    } else {
      RegionMBeanBridge bridge = new RegionMBeanBridge(region);

      LocalRegion localRegion = ((LocalRegion) region);
      DiskStoreImpl dsi = localRegion.getDiskStore();
      if (dsi != null) {
        DiskRegionBridge diskRegionBridge =
            new DiskRegionBridge(localRegion.getDiskRegion().getStats());
        bridge.addDiskRegionBridge(diskRegionBridge);

        for (DirectoryHolder dh : dsi.getDirectoryHolders()) {
          diskRegionBridge.addDirectoryStats(dh.getDiskDirectoryStats());
        }
      }
      return bridge;
    }
  }
 public long getDiskTaskWaiting() {
   if (this.diskRegionBridge != null) {
     return diskRegionBridge.getDiskTaskWaiting();
   }
   return ManagementConstants.ZERO;
 }
 public long getTotalEntriesOnlyOnDisk() {
   if (this.diskRegionBridge != null) {
     return diskRegionBridge.getTotalEntriesOnlyOnDisk();
   }
   return ManagementConstants.ZERO;
 }
 public long getTotalDiskWritesProgress() {
   if (this.diskRegionBridge != null) {
     return diskRegionBridge.getTotalDiskWritesProgress();
   }
   return ManagementConstants.ZERO;
 }
 public float getDiskWritesRate() {
   if (this.diskRegionBridge != null) {
     return diskRegionBridge.getDiskWritesRate();
   }
   return ManagementConstants.ZERO;
 }
 public long getDiskWritesAverageLatency() {
   if (this.diskRegionBridge != null) {
     return diskRegionBridge.getDiskWritesAverageLatency();
   }
   return ManagementConstants.ZERO;
 }
 public void stopMonitor() {
   regionMonitor.stopListener();
   if (diskRegionBridge != null) {
     diskRegionBridge.stopMonitor();
   }
 }