From 4f93417bd2fe969ea05e8fe88bd19ef183ced983 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20N=C3=BCcke?= Date: Fri, 8 Jan 2021 21:08:24 +0100 Subject: [PATCH] Pulled common logic into method. --- .../item/AbstractHardDriveVMDevice.java | 38 ++++++++----------- 1 file changed, 16 insertions(+), 22 deletions(-) diff --git a/src/main/java/li/cil/oc2/common/bus/device/item/AbstractHardDriveVMDevice.java b/src/main/java/li/cil/oc2/common/bus/device/item/AbstractHardDriveVMDevice.java index deed68dd..3e6770b7 100644 --- a/src/main/java/li/cil/oc2/common/bus/device/item/AbstractHardDriveVMDevice.java +++ b/src/main/java/li/cil/oc2/common/bus/device/item/AbstractHardDriveVMDevice.java @@ -99,17 +99,7 @@ public abstract class AbstractHardDriveVMDevice extends I public CompoundNBT serializeNBT() { final CompoundNBT tag = new CompoundNBT(); - if (data != null) { - final Optional optional = getSerializationStream(data); - optional.ifPresent(stream -> { - blobHandle = BlobStorage.validateHandle(blobHandle); - jobHandle = BlobStorage.submitSave(blobHandle, stream); - }); - if (!optional.isPresent()) { - BlobStorage.freeHandle(blobHandle); - blobHandle = null; - } - } + serializeData(); if (device != null) { deviceNbt = NBTSerialization.serialize(device); } @@ -191,17 +181,7 @@ public abstract class AbstractHardDriveVMDevice extends I // actual data being unloaded at that point, but want to permanently persist // it (it's the contents of the block device) we need to serialize it in the // unload, too. Don't need to wait for the job, though. - if (data != null) { - final Optional optional = getSerializationStream(data); - optional.ifPresent(stream -> { - blobHandle = BlobStorage.validateHandle(blobHandle); - BlobStorage.submitSave(blobHandle, stream); - }); - if (!optional.isPresent()) { - BlobStorage.freeHandle(blobHandle); - blobHandle = null; - } - } + serializeData(); data = null; jobHandle = null; @@ -211,4 +191,18 @@ public abstract class AbstractHardDriveVMDevice extends I address.clear(); interrupt.clear(); } + + private void serializeData() { + if (data != null) { + final Optional optional = getSerializationStream(data); + optional.ifPresent(stream -> { + blobHandle = BlobStorage.validateHandle(blobHandle); + jobHandle = BlobStorage.submitSave(blobHandle, stream); + }); + if (!optional.isPresent()) { + BlobStorage.freeHandle(blobHandle); + blobHandle = null; + } + } + } }