Splitted channeldata into two ints
Previously it did encode the current and previous used channels into the same as well as mask it with 0xFF. Which lead to an overflow every 256 gridnodes requiring a channel. This will not happen at > 2^31 Also removes the need to bitshift them for every access. Fixes #1510
This commit is contained in:
parent
efafaedf68
commit
de260b5283
|
@ -72,7 +72,8 @@ public class GridNode implements IGridNode, IPathItem
|
||||||
private Object visitorIterationNumber = null;
|
private Object visitorIterationNumber = null;
|
||||||
// connection criteria
|
// connection criteria
|
||||||
private int compressedData = 0;
|
private int compressedData = 0;
|
||||||
private int channelData = 0;
|
private int usedChannels = 0;
|
||||||
|
private int lastUsedChannels = 0;
|
||||||
|
|
||||||
public GridNode( IGridBlock what )
|
public GridNode( IGridBlock what )
|
||||||
{
|
{
|
||||||
|
@ -91,7 +92,7 @@ public class GridNode implements IGridNode, IPathItem
|
||||||
|
|
||||||
public int usedChannels()
|
public int usedChannels()
|
||||||
{
|
{
|
||||||
return this.channelData >> 8;
|
return this.lastUsedChannels;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Class<? extends IGridHost> getMachineClass()
|
public Class<? extends IGridHost> getMachineClass()
|
||||||
|
@ -359,7 +360,7 @@ public class GridNode implements IGridNode, IPathItem
|
||||||
@Override
|
@Override
|
||||||
public boolean meetsChannelRequirements()
|
public boolean meetsChannelRequirements()
|
||||||
{
|
{
|
||||||
return ( !this.gridProxy.getFlags().contains( GridFlags.REQUIRE_CHANNEL ) || this.getUsedChannels() > 0 );
|
return( !this.gridProxy.getFlags().contains( GridFlags.REQUIRE_CHANNEL ) || this.getUsedChannels() > 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -385,7 +386,7 @@ public class GridNode implements IGridNode, IPathItem
|
||||||
|
|
||||||
public int getUsedChannels()
|
public int getUsedChannels()
|
||||||
{
|
{
|
||||||
return this.channelData & 0xff;
|
return this.usedChannels;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void FindConnections()
|
public void FindConnections()
|
||||||
|
@ -583,7 +584,7 @@ public class GridNode implements IGridNode, IPathItem
|
||||||
public void setGridStorage( GridStorage s )
|
public void setGridStorage( GridStorage s )
|
||||||
{
|
{
|
||||||
this.myStorage = s;
|
this.myStorage = s;
|
||||||
this.channelData = 0;
|
this.usedChannels = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -602,7 +603,7 @@ public class GridNode implements IGridNode, IPathItem
|
||||||
{
|
{
|
||||||
if( zeroOut )
|
if( zeroOut )
|
||||||
{
|
{
|
||||||
this.channelData &= ~0xff;
|
this.usedChannels = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int idx = this.connections.indexOf( fast );
|
int idx = this.connections.indexOf( fast );
|
||||||
|
@ -633,7 +634,7 @@ public class GridNode implements IGridNode, IPathItem
|
||||||
@Override
|
@Override
|
||||||
public void incrementChannelCount( int usedChannels )
|
public void incrementChannelCount( int usedChannels )
|
||||||
{
|
{
|
||||||
this.channelData += usedChannels;
|
this.usedChannels += usedChannels;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -652,8 +653,7 @@ public class GridNode implements IGridNode, IPathItem
|
||||||
|
|
||||||
if( this.getLastUsedChannels() != this.getUsedChannels() )
|
if( this.getLastUsedChannels() != this.getUsedChannels() )
|
||||||
{
|
{
|
||||||
this.channelData &= 0xff;
|
this.lastUsedChannels = this.usedChannels;
|
||||||
this.channelData |= this.channelData << 8;
|
|
||||||
|
|
||||||
if( this.getInternalGrid() != null )
|
if( this.getInternalGrid() != null )
|
||||||
{
|
{
|
||||||
|
@ -664,7 +664,7 @@ public class GridNode implements IGridNode, IPathItem
|
||||||
|
|
||||||
public int getLastUsedChannels()
|
public int getLastUsedChannels()
|
||||||
{
|
{
|
||||||
return ( this.channelData >> 8 ) & 0xff;
|
return lastUsedChannels;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class MachineSecurityBreak implements Callable<Void>
|
private static class MachineSecurityBreak implements Callable<Void>
|
||||||
|
@ -685,7 +685,6 @@ public class GridNode implements IGridNode, IPathItem
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private static class ConnectionComparator implements Comparator<IGridConnection>
|
private static class ConnectionComparator implements Comparator<IGridConnection>
|
||||||
{
|
{
|
||||||
private final IGridNode gn;
|
private final IGridNode gn;
|
||||||
|
|
Loading…
Reference in a new issue