mirror of
https://github.com/ProjectSWGCore/NGECore2.git
synced 2026-07-15 00:07:39 -04:00
Fixed various problems that occur after rebooting.
Fixes SWGMap objectMutex issues. Fixes this buff error received after rebooting the server: java.lang.NullPointerException at resources.objects.SWGMap.values(SWGMap.java:284) at services.BuffService.clearBuffs(BuffService.java:376) at services.object.ObjectService$7.handlePacket(ObjectService.java:1149) at engine.resources.service.NetworkDispatch$1.run(NetworkDispatch.java:216) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source)
This commit is contained in:
@@ -21,7 +21,6 @@
|
||||
******************************************************************************/
|
||||
package resources.objects;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
@@ -41,15 +40,15 @@ import engine.resources.objects.SWGObject;
|
||||
|
||||
/* A SWGMap element should extend Delta or implement IDelta */
|
||||
|
||||
public class SWGMap<K, V> implements Map<K, V>, Serializable {
|
||||
public class SWGMap<K, V> extends Delta implements Map<K, V> {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private Map<K, V> map = new TreeMap<K, V>();
|
||||
private transient int updateCounter = 0;
|
||||
private byte viewType;
|
||||
private short updateType;
|
||||
private boolean addByte;
|
||||
protected transient Object objectMutex = new Object();
|
||||
private transient SWGObject object;
|
||||
|
||||
public SWGMap() { }
|
||||
@@ -71,7 +70,8 @@ public class SWGMap<K, V> implements Map<K, V>, Serializable {
|
||||
}
|
||||
|
||||
public void init(SWGObject object) {
|
||||
objectMutex = new Object();
|
||||
super.init(object);
|
||||
|
||||
updateCounter = 0;
|
||||
this.object = object;
|
||||
|
||||
@@ -306,7 +306,7 @@ public class SWGMap<K, V> implements Map<K, V>, Serializable {
|
||||
byte[] value = Baseline.toBytes(entry.getValue());
|
||||
size += ((addByte) ? 1 : 0) + key.length + value.length;
|
||||
|
||||
IoBuffer buffer = Baseline.createBuffer(size);
|
||||
IoBuffer buffer = createBuffer(size);
|
||||
buffer.put(objects);
|
||||
if (addByte) buffer.put((byte) 0);
|
||||
buffer.put(key);
|
||||
@@ -316,7 +316,7 @@ public class SWGMap<K, V> implements Map<K, V>, Serializable {
|
||||
objects = buffer.array();
|
||||
}
|
||||
|
||||
IoBuffer buffer = Baseline.createBuffer(8 + size);
|
||||
IoBuffer buffer = createBuffer(8 + size);
|
||||
buffer.putInt(map.size());
|
||||
buffer.putInt(updateCounter);
|
||||
buffer.put(objects);
|
||||
@@ -343,7 +343,7 @@ public class SWGMap<K, V> implements Map<K, V>, Serializable {
|
||||
|
||||
int size = 1 + ((useIndex) ? (Baseline.toBytes(index).length) : 0) + ((useData) ? data.length : 0);
|
||||
|
||||
IoBuffer buffer = Delta.createBuffer(size);
|
||||
IoBuffer buffer = createBuffer(size);
|
||||
buffer.put((byte) type);
|
||||
if (useIndex) buffer.put(Baseline.toBytes(index));
|
||||
if (useData) buffer.put(data);
|
||||
@@ -355,7 +355,7 @@ public class SWGMap<K, V> implements Map<K, V>, Serializable {
|
||||
}
|
||||
|
||||
private void queue(byte[] data) {
|
||||
IoBuffer buffer = Delta.createBuffer(data.length + 8);
|
||||
IoBuffer buffer = createBuffer(data.length + 8);
|
||||
buffer.putInt(1);
|
||||
buffer.putInt(updateCounter);
|
||||
buffer.put(data);
|
||||
@@ -370,7 +370,7 @@ public class SWGMap<K, V> implements Map<K, V>, Serializable {
|
||||
size += queued.length;
|
||||
}
|
||||
|
||||
IoBuffer buffer = Delta.createBuffer((size + 8));
|
||||
IoBuffer buffer = createBuffer((size + 8));
|
||||
buffer.putInt(data.size());
|
||||
buffer.putInt(updateCounter);
|
||||
for (byte[] queued : data) buffer.put(queued);
|
||||
|
||||
Reference in New Issue
Block a user