1
0
mirror of https://github.com/SquidDev-CC/CC-Tweaked synced 2025-02-02 20:29:13 +00:00

Fix CME in monitor's set of attached computers

We're very inconsistent with whether we use locks or concurrent maps
here. Something to sort out in the future, but for now add some missing
@GuardedBy annotations.
This commit is contained in:
Jonathan Coates 2023-08-23 09:56:21 +01:00
parent c1628d077a
commit 8c8924f54e
No known key found for this signature in database
GPG Key ID: B9E431FF07C98D06
3 changed files with 7 additions and 4 deletions

View File

@ -4,6 +4,7 @@
package dan200.computercraft.shared.peripheral.modem;
import com.google.errorprone.annotations.concurrent.GuardedBy;
import dan200.computercraft.api.lua.LuaException;
import dan200.computercraft.api.lua.LuaFunction;
import dan200.computercraft.api.network.Packet;
@ -85,7 +86,7 @@ import java.util.Set;
*/
public abstract class ModemPeripheral implements IPeripheral, PacketSender, PacketReceiver {
private @Nullable PacketNetwork network;
private final Set<IComputerAccess> computers = new HashSet<>(1);
private final @GuardedBy("computers") Set<IComputerAccess> computers = new HashSet<>(1);
private final ModemState state;
protected ModemPeripheral(ModemState state) {

View File

@ -25,8 +25,9 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.annotation.Nullable;
import java.util.HashSet;
import java.util.Collections;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Consumer;
public class MonitorBlockEntity extends BlockEntity {
@ -46,7 +47,7 @@ public class MonitorBlockEntity extends BlockEntity {
private @Nullable ServerMonitor serverMonitor;
private @Nullable ClientMonitor clientMonitor;
private @Nullable MonitorPeripheral peripheral;
private final Set<IComputerAccess> computers = new HashSet<>();
private final Set<IComputerAccess> computers = Collections.newSetFromMap(new ConcurrentHashMap<>());
private boolean needsUpdate = false;
private boolean needsValidating = false;

View File

@ -4,6 +4,7 @@
package dan200.computercraft.shared.peripheral.speaker;
import com.google.errorprone.annotations.concurrent.GuardedBy;
import dan200.computercraft.api.lua.ILuaContext;
import dan200.computercraft.api.lua.LuaException;
import dan200.computercraft.api.lua.LuaFunction;
@ -57,7 +58,7 @@ public abstract class SpeakerPeripheral implements IPeripheral {
public static final int SAMPLE_RATE = 48000;
private final UUID source = UUID.randomUUID();
private final Set<IComputerAccess> computers = new HashSet<>();
private final @GuardedBy("computers") Set<IComputerAccess> computers = new HashSet<>();
private long clock = 0;
private long lastPositionTime;