Added Server First request, changed how response allocates bytes

This commit is contained in:
Waverunner
2014-03-15 13:50:36 -04:00
parent a907f479a9
commit ca2401147d
3 changed files with 71 additions and 8 deletions
@@ -35,9 +35,11 @@ import engine.resources.common.CRC;
public class CollectionServerFirstListResponse extends SWGMessage {
private Map<String, ServerFirst> sfList;
private String server;
public CollectionServerFirstListResponse(Map<String, ServerFirst> serverFirstList){
public CollectionServerFirstListResponse(String server, Map<String, ServerFirst> serverFirstList){
this.sfList = serverFirstList;
this.server = server;
}
@Override
@@ -49,17 +51,21 @@ public class CollectionServerFirstListResponse extends SWGMessage {
public IoBuffer serialize() {
IoBuffer buffer;
int size = 0;
synchronized (sfList) {
String galaxy = NGECore.getInstance().getConfig().getString("GALAXY_NAME");
buffer = IoBuffer.allocate(14 + galaxy.length()).order(ByteOrder.LITTLE_ENDIAN);
for (Entry<String, ServerFirst> entry : sfList.entrySet()) {
size += entry.getValue().getBytes().length;
}
buffer = IoBuffer.allocate(12 + server.length() + size).order(ByteOrder.LITTLE_ENDIAN);
buffer.putShort((short) 2);
buffer.putInt(CRC.StringtoCRC("CollectionServerFirstListResponse"));
buffer.put(getAsciiString(galaxy + ".0"));
buffer.put(getAsciiString(server));
buffer.putInt(sfList.size());
for (Entry<String, ServerFirst> entry : sfList.entrySet()) {
buffer.expand(entry.getValue().getBytes().length);
buffer.put(entry.getValue().getBytes());
}