Synchronized network code, should be thread safe.

This commit is contained in:
Aidan C. Brady 2013-10-20 00:04:11 -04:00
parent f3838a1f7e
commit 5b44e0f409
9 changed files with 36 additions and 52 deletions

View file

@ -46,7 +46,7 @@ public class GasNetwork extends DynamicNetwork<IGasAcceptor, GasNetwork>
register();
}
public int emit(int gasToSend, EnumGas transferType, TileEntity emitter)
public synchronized int emit(int gasToSend, EnumGas transferType, TileEntity emitter)
{
List availableAcceptors = Arrays.asList(getAcceptors(transferType).toArray());
@ -88,7 +88,7 @@ public class GasNetwork extends DynamicNetwork<IGasAcceptor, GasNetwork>
}
@Override
public Set<IGasAcceptor> getAcceptors(Object... data)
public synchronized Set<IGasAcceptor> getAcceptors(Object... data)
{
EnumGas transferType = (EnumGas)data[0];
Set<IGasAcceptor> toReturn = new HashSet<IGasAcceptor>();
@ -108,7 +108,7 @@ public class GasNetwork extends DynamicNetwork<IGasAcceptor, GasNetwork>
}
@Override
public void refresh()
public synchronized void refresh()
{
Set<ITransmitter<GasNetwork>> iterTubes = (Set<ITransmitter<GasNetwork>>)transmitters.clone();
Iterator<ITransmitter<GasNetwork>> it = iterTubes.iterator();
@ -146,7 +146,7 @@ public class GasNetwork extends DynamicNetwork<IGasAcceptor, GasNetwork>
}
@Override
public void merge(GasNetwork network)
public synchronized void merge(GasNetwork network)
{
if(network != null && network != this)
{

View file

@ -97,7 +97,7 @@ public abstract class DynamicNetwork<A, N> implements ITransmitterNetwork<A, N>
}
@Override
public void fixMessedUpNetwork(ITransmitter<N> transmitter)
public synchronized void fixMessedUpNetwork(ITransmitter<N> transmitter)
{
if(transmitter instanceof TileEntity)
{
@ -124,7 +124,7 @@ public abstract class DynamicNetwork<A, N> implements ITransmitterNetwork<A, N>
}
@Override
public void split(ITransmitter<N> splitPoint)
public synchronized void split(ITransmitter<N> splitPoint)
{
if(splitPoint instanceof TileEntity)
{
@ -214,7 +214,7 @@ public abstract class DynamicNetwork<A, N> implements ITransmitterNetwork<A, N>
if(ignore != null)
{
for (int i = 0; i < ignore.length; i++)
for(int i = 0; i < ignore.length; i++)
{
this.toIgnore.add(ignore[i]);
}
@ -227,8 +227,7 @@ public abstract class DynamicNetwork<A, N> implements ITransmitterNetwork<A, N>
{
iterated.add(location);
}
else
{
else {
toIgnore.add(location);
}

View file

@ -69,10 +69,7 @@ public class TransmitterNetworkRegistry implements ITickHandler
}
@Override
public void tickStart(EnumSet<TickType> type, Object... tickData)
{
return;
}
public void tickStart(EnumSet<TickType> type, Object... tickData) {}
@Override
public void tickEnd(EnumSet<TickType> type, Object... tickData)
@ -133,14 +130,16 @@ public class TransmitterNetworkRegistry implements ITickHandler
}
}
public void refreshChunk(Chunk c)
public synchronized void refreshChunk(Chunk c)
{
if(c != null)
{
Iterator it = c.chunkTileEntityMap.entrySet().iterator();
while(it.hasNext())
{
Object obj = it.next();
if(obj instanceof TileEntity)
{
TileEntity tileEntity = (TileEntity)obj;

View file

@ -45,7 +45,7 @@ public class ClientPlayerTickHandler implements ITickHandler
{
ItemConfigurator item = (ItemConfigurator)entityPlayer.getCurrentEquippedItem().getItem();
if(entityPlayer.isSneaking() && MekanismKeyHandler.modeSwitch.isPressed())
if(entityPlayer.isSneaking() && MekanismKeyHandler.modeSwitchKey.pressed)
{
if(!lastTickUpdate)
{
@ -63,7 +63,7 @@ public class ClientPlayerTickHandler implements ITickHandler
{
ItemElectricBow item = (ItemElectricBow)entityPlayer.getCurrentEquippedItem().getItem();
if(entityPlayer.isSneaking() && MekanismKeyHandler.modeSwitch.isPressed())
if(entityPlayer.isSneaking() && MekanismKeyHandler.modeSwitchKey.pressed)
{
if(!lastTickUpdate)
{
@ -81,7 +81,7 @@ public class ClientPlayerTickHandler implements ITickHandler
{
ItemWalkieTalkie item = (ItemWalkieTalkie)entityPlayer.getCurrentEquippedItem().getItem();
if(entityPlayer.isSneaking() && MekanismKeyHandler.modeSwitch.isPressed() && item.getOn(stack))
if(entityPlayer.isSneaking() && MekanismKeyHandler.modeSwitchKey.pressed && item.getOn(stack))
{
if(!lastTickUpdate)
{

View file

@ -14,14 +14,12 @@ import cpw.mods.fml.relauncher.SideOnly;
@SideOnly(Side.CLIENT)
public class MekanismKeyHandler extends KeyHandler
{
public static KeyBinding modeSwitch = new KeyBinding("Mekanism Mode Switch", Keyboard.KEY_M);
public static KeyBinding voice = new KeyBinding("Mekanism Voice", Keyboard.KEY_U);
public static boolean voiceKeyDown = false;
public static KeyBinding modeSwitchKey = new KeyBinding("Mekanism Mode Switch", Keyboard.KEY_M);
public static KeyBinding voiceKey = new KeyBinding("Mekanism Voice", Keyboard.KEY_U);
public MekanismKeyHandler()
{
super(new KeyBinding[] {modeSwitch, voice}, new boolean[] {false, false});
super(new KeyBinding[] {modeSwitchKey, voiceKey}, new boolean[] {false, false});
}
@Override
@ -31,22 +29,10 @@ public class MekanismKeyHandler extends KeyHandler
}
@Override
public void keyDown(EnumSet<TickType> types, KeyBinding kb, boolean tickEnd, boolean isRepeat)
{
if(tickEnd && kb.keyCode == voice.keyCode)
{
voiceKeyDown = true;
}
}
public void keyDown(EnumSet<TickType> types, KeyBinding kb, boolean tickEnd, boolean isRepeat) {}
@Override
public void keyUp(EnumSet<TickType> types, KeyBinding kb, boolean tickEnd)
{
if(tickEnd && kb.keyCode == voice.keyCode)
{
voiceKeyDown = false;
}
}
public void keyUp(EnumSet<TickType> types, KeyBinding kb, boolean tickEnd) {}
@Override
public EnumSet<TickType> ticks()

View file

@ -40,11 +40,11 @@ public class VoiceInput extends Thread
while(voiceClient.running)
{
if(MekanismKeyHandler.voiceKeyDown)
if(MekanismKeyHandler.voiceKey.pressed)
{
targetLine.flush();
while(voiceClient.running && MekanismKeyHandler.voiceKeyDown)
while(voiceClient.running && MekanismKeyHandler.voiceKey.pressed)
{
try {
int availableBytes = audioInput.available();

View file

@ -61,7 +61,7 @@ public class EnergyNetwork extends DynamicNetwork<TileEntity, EnergyNetwork>
register();
}
public double getEnergyNeeded(List<TileEntity> ignored)
public synchronized double getEnergyNeeded(List<TileEntity> ignored)
{
double totalNeeded = 0;
@ -91,7 +91,7 @@ public class EnergyNetwork extends DynamicNetwork<TileEntity, EnergyNetwork>
return totalNeeded;
}
public double emit(double energyToSend, ArrayList<TileEntity> ignored)
public synchronized double emit(double energyToSend, ArrayList<TileEntity> ignored)
{
double energyAvailable = energyToSend;
double sent;
@ -149,7 +149,7 @@ public class EnergyNetwork extends DynamicNetwork<TileEntity, EnergyNetwork>
}
@Override
public Set<TileEntity> getAcceptors(Object... data)
public synchronized Set<TileEntity> getAcceptors(Object... data)
{
Set<TileEntity> toReturn = new HashSet<TileEntity>();
@ -201,9 +201,9 @@ public class EnergyNetwork extends DynamicNetwork<TileEntity, EnergyNetwork>
}
@Override
public void refresh()
public synchronized void refresh()
{
Set<ITransmitter<EnergyNetwork>> iterCables = (Set<ITransmitter<EnergyNetwork>>) transmitters.clone();
Set<ITransmitter<EnergyNetwork>> iterCables = (Set<ITransmitter<EnergyNetwork>>)transmitters.clone();
Iterator<ITransmitter<EnergyNetwork>> it = iterCables.iterator();
possibleAcceptors.clear();
@ -248,7 +248,7 @@ public class EnergyNetwork extends DynamicNetwork<TileEntity, EnergyNetwork>
}
@Override
public void merge(EnergyNetwork network)
public synchronized void merge(EnergyNetwork network)
{
if(network != null && network != this)
{

View file

@ -52,7 +52,7 @@ public class FluidNetwork extends DynamicNetwork<IFluidHandler, FluidNetwork>
register();
}
public int getTotalNeeded(List<TileEntity> ignored)
public synchronized int getTotalNeeded(List<TileEntity> ignored)
{
int toReturn = 0;
@ -72,7 +72,7 @@ public class FluidNetwork extends DynamicNetwork<IFluidHandler, FluidNetwork>
return toReturn;
}
public int emit(FluidStack fluidToSend, boolean doTransfer, TileEntity emitter)
public synchronized int emit(FluidStack fluidToSend, boolean doTransfer, TileEntity emitter)
{
List availableAcceptors = Arrays.asList(getAcceptors(fluidToSend).toArray());
@ -115,7 +115,7 @@ public class FluidNetwork extends DynamicNetwork<IFluidHandler, FluidNetwork>
}
@Override
public Set<IFluidHandler> getAcceptors(Object... data)
public synchronized Set<IFluidHandler> getAcceptors(Object... data)
{
FluidStack fluidToSend = (FluidStack)data[0];
Set<IFluidHandler> toReturn = new HashSet<IFluidHandler>();
@ -132,7 +132,7 @@ public class FluidNetwork extends DynamicNetwork<IFluidHandler, FluidNetwork>
}
@Override
public void refresh()
public synchronized void refresh()
{
Set<ITransmitter<FluidNetwork>> iterPipes = (Set<ITransmitter<FluidNetwork>>)transmitters.clone();
Iterator it = iterPipes.iterator();
@ -171,7 +171,7 @@ public class FluidNetwork extends DynamicNetwork<IFluidHandler, FluidNetwork>
}
@Override
public void merge(FluidNetwork network)
public synchronized void merge(FluidNetwork network)
{
if(network != null && network != this)
{

View file

@ -44,13 +44,13 @@ public class InventoryNetwork extends DynamicNetwork<IInventory, InventoryNetwor
}
@Override
public Set<IInventory> getAcceptors(Object... data)
public synchronized Set<IInventory> getAcceptors(Object... data)
{
return null;
}
@Override
public void refresh()
public synchronized void refresh()
{
Set<ITransmitter<InventoryNetwork>> iterTransmitters = (Set<ITransmitter<InventoryNetwork>>)transmitters.clone();
Iterator it = iterTransmitters.iterator();
@ -88,7 +88,7 @@ public class InventoryNetwork extends DynamicNetwork<IInventory, InventoryNetwor
}
@Override
public void merge(InventoryNetwork network)
public synchronized void merge(InventoryNetwork network)
{
if(network != null && network != this)
{