network message pooling across all categories
All checks were successful
studiorailgun/Renderer/pipeline/head This commit looks good

This commit is contained in:
austin 2025-03-29 16:26:20 -04:00
parent c7dc9ef07d
commit 08d21eb2a9
15 changed files with 346 additions and 280 deletions

View File

@ -167,6 +167,7 @@ public class ClientNetworking implements Runnable {
//create parser //create parser
parser = new NetworkParser(inputStream,outputStream); parser = new NetworkParser(inputStream,outputStream);
parser.getMessagePool().setAlwaysAllocate(true);

View File

@ -115,9 +115,10 @@ public class AuthMessage extends NetworkMessage {
/** /**
* Parses a message of type AuthRequest * Parses a message of type AuthRequest
*/ */
public static AuthMessage parseAuthRequestMessage(CircularByteBuffer byteBuffer){ public static AuthMessage parseAuthRequestMessage(CircularByteBuffer byteBuffer, MessagePool pool){
AuthMessage rVal = new AuthMessage(AuthMessageType.AUTHREQUEST); AuthMessage rVal = (AuthMessage)pool.get(MessageType.AUTH_MESSAGE);
stripPacketHeader(byteBuffer); rVal.messageType = AuthMessageType.AUTHREQUEST;
AuthMessage.stripPacketHeader(byteBuffer);
return rVal; return rVal;
} }
@ -168,9 +169,10 @@ public class AuthMessage extends NetworkMessage {
/** /**
* Parses a message of type AuthDetails * Parses a message of type AuthDetails
*/ */
public static AuthMessage parseAuthDetailsMessage(CircularByteBuffer byteBuffer){ public static AuthMessage parseAuthDetailsMessage(CircularByteBuffer byteBuffer, MessagePool pool){
AuthMessage rVal = new AuthMessage(AuthMessageType.AUTHDETAILS); AuthMessage rVal = (AuthMessage)pool.get(MessageType.AUTH_MESSAGE);
stripPacketHeader(byteBuffer); rVal.messageType = AuthMessageType.AUTHDETAILS;
AuthMessage.stripPacketHeader(byteBuffer);
rVal.setuser(ByteStreamUtils.popStringFromByteQueue(byteBuffer)); rVal.setuser(ByteStreamUtils.popStringFromByteQueue(byteBuffer));
rVal.setpass(ByteStreamUtils.popStringFromByteQueue(byteBuffer)); rVal.setpass(ByteStreamUtils.popStringFromByteQueue(byteBuffer));
return rVal; return rVal;
@ -190,9 +192,10 @@ public class AuthMessage extends NetworkMessage {
/** /**
* Parses a message of type AuthSuccess * Parses a message of type AuthSuccess
*/ */
public static AuthMessage parseAuthSuccessMessage(CircularByteBuffer byteBuffer){ public static AuthMessage parseAuthSuccessMessage(CircularByteBuffer byteBuffer, MessagePool pool){
AuthMessage rVal = new AuthMessage(AuthMessageType.AUTHSUCCESS); AuthMessage rVal = (AuthMessage)pool.get(MessageType.AUTH_MESSAGE);
stripPacketHeader(byteBuffer); rVal.messageType = AuthMessageType.AUTHSUCCESS;
AuthMessage.stripPacketHeader(byteBuffer);
return rVal; return rVal;
} }
@ -208,9 +211,10 @@ public class AuthMessage extends NetworkMessage {
/** /**
* Parses a message of type AuthFailure * Parses a message of type AuthFailure
*/ */
public static AuthMessage parseAuthFailureMessage(CircularByteBuffer byteBuffer){ public static AuthMessage parseAuthFailureMessage(CircularByteBuffer byteBuffer, MessagePool pool){
AuthMessage rVal = new AuthMessage(AuthMessageType.AUTHFAILURE); AuthMessage rVal = (AuthMessage)pool.get(MessageType.AUTH_MESSAGE);
stripPacketHeader(byteBuffer); rVal.messageType = AuthMessageType.AUTHFAILURE;
AuthMessage.stripPacketHeader(byteBuffer);
return rVal; return rVal;
} }

View File

@ -116,9 +116,10 @@ public class CharacterMessage extends NetworkMessage {
/** /**
* Parses a message of type RequestCharacterList * Parses a message of type RequestCharacterList
*/ */
public static CharacterMessage parseRequestCharacterListMessage(CircularByteBuffer byteBuffer){ public static CharacterMessage parseRequestCharacterListMessage(CircularByteBuffer byteBuffer, MessagePool pool){
CharacterMessage rVal = new CharacterMessage(CharacterMessageType.REQUESTCHARACTERLIST); CharacterMessage rVal = (CharacterMessage)pool.get(MessageType.CHARACTER_MESSAGE);
stripPacketHeader(byteBuffer); rVal.messageType = CharacterMessageType.REQUESTCHARACTERLIST;
CharacterMessage.stripPacketHeader(byteBuffer);
return rVal; return rVal;
} }
@ -156,9 +157,10 @@ public class CharacterMessage extends NetworkMessage {
/** /**
* Parses a message of type ResponseCharacterList * Parses a message of type ResponseCharacterList
*/ */
public static CharacterMessage parseResponseCharacterListMessage(CircularByteBuffer byteBuffer){ public static CharacterMessage parseResponseCharacterListMessage(CircularByteBuffer byteBuffer, MessagePool pool){
CharacterMessage rVal = new CharacterMessage(CharacterMessageType.RESPONSECHARACTERLIST); CharacterMessage rVal = (CharacterMessage)pool.get(MessageType.CHARACTER_MESSAGE);
stripPacketHeader(byteBuffer); rVal.messageType = CharacterMessageType.RESPONSECHARACTERLIST;
CharacterMessage.stripPacketHeader(byteBuffer);
rVal.setdata(ByteStreamUtils.popStringFromByteQueue(byteBuffer)); rVal.setdata(ByteStreamUtils.popStringFromByteQueue(byteBuffer));
return rVal; return rVal;
} }
@ -198,9 +200,10 @@ public class CharacterMessage extends NetworkMessage {
/** /**
* Parses a message of type RequestCreateCharacter * Parses a message of type RequestCreateCharacter
*/ */
public static CharacterMessage parseRequestCreateCharacterMessage(CircularByteBuffer byteBuffer){ public static CharacterMessage parseRequestCreateCharacterMessage(CircularByteBuffer byteBuffer, MessagePool pool){
CharacterMessage rVal = new CharacterMessage(CharacterMessageType.REQUESTCREATECHARACTER); CharacterMessage rVal = (CharacterMessage)pool.get(MessageType.CHARACTER_MESSAGE);
stripPacketHeader(byteBuffer); rVal.messageType = CharacterMessageType.REQUESTCREATECHARACTER;
CharacterMessage.stripPacketHeader(byteBuffer);
rVal.setdata(ByteStreamUtils.popStringFromByteQueue(byteBuffer)); rVal.setdata(ByteStreamUtils.popStringFromByteQueue(byteBuffer));
return rVal; return rVal;
} }
@ -218,9 +221,10 @@ public class CharacterMessage extends NetworkMessage {
/** /**
* Parses a message of type ResponseCreateCharacterSuccess * Parses a message of type ResponseCreateCharacterSuccess
*/ */
public static CharacterMessage parseResponseCreateCharacterSuccessMessage(CircularByteBuffer byteBuffer){ public static CharacterMessage parseResponseCreateCharacterSuccessMessage(CircularByteBuffer byteBuffer, MessagePool pool){
CharacterMessage rVal = new CharacterMessage(CharacterMessageType.RESPONSECREATECHARACTERSUCCESS); CharacterMessage rVal = (CharacterMessage)pool.get(MessageType.CHARACTER_MESSAGE);
stripPacketHeader(byteBuffer); rVal.messageType = CharacterMessageType.RESPONSECREATECHARACTERSUCCESS;
CharacterMessage.stripPacketHeader(byteBuffer);
return rVal; return rVal;
} }
@ -236,9 +240,10 @@ public class CharacterMessage extends NetworkMessage {
/** /**
* Parses a message of type ResponseCreateCharacterFailure * Parses a message of type ResponseCreateCharacterFailure
*/ */
public static CharacterMessage parseResponseCreateCharacterFailureMessage(CircularByteBuffer byteBuffer){ public static CharacterMessage parseResponseCreateCharacterFailureMessage(CircularByteBuffer byteBuffer, MessagePool pool){
CharacterMessage rVal = new CharacterMessage(CharacterMessageType.RESPONSECREATECHARACTERFAILURE); CharacterMessage rVal = (CharacterMessage)pool.get(MessageType.CHARACTER_MESSAGE);
stripPacketHeader(byteBuffer); rVal.messageType = CharacterMessageType.RESPONSECREATECHARACTERFAILURE;
CharacterMessage.stripPacketHeader(byteBuffer);
return rVal; return rVal;
} }
@ -276,9 +281,10 @@ public class CharacterMessage extends NetworkMessage {
/** /**
* Parses a message of type RequestSpawnCharacter * Parses a message of type RequestSpawnCharacter
*/ */
public static CharacterMessage parseRequestSpawnCharacterMessage(CircularByteBuffer byteBuffer){ public static CharacterMessage parseRequestSpawnCharacterMessage(CircularByteBuffer byteBuffer, MessagePool pool){
CharacterMessage rVal = new CharacterMessage(CharacterMessageType.REQUESTSPAWNCHARACTER); CharacterMessage rVal = (CharacterMessage)pool.get(MessageType.CHARACTER_MESSAGE);
stripPacketHeader(byteBuffer); rVal.messageType = CharacterMessageType.REQUESTSPAWNCHARACTER;
CharacterMessage.stripPacketHeader(byteBuffer);
rVal.setdata(ByteStreamUtils.popStringFromByteQueue(byteBuffer)); rVal.setdata(ByteStreamUtils.popStringFromByteQueue(byteBuffer));
return rVal; return rVal;
} }
@ -318,9 +324,10 @@ public class CharacterMessage extends NetworkMessage {
/** /**
* Parses a message of type ResponseSpawnCharacter * Parses a message of type ResponseSpawnCharacter
*/ */
public static CharacterMessage parseResponseSpawnCharacterMessage(CircularByteBuffer byteBuffer){ public static CharacterMessage parseResponseSpawnCharacterMessage(CircularByteBuffer byteBuffer, MessagePool pool){
CharacterMessage rVal = new CharacterMessage(CharacterMessageType.RESPONSESPAWNCHARACTER); CharacterMessage rVal = (CharacterMessage)pool.get(MessageType.CHARACTER_MESSAGE);
stripPacketHeader(byteBuffer); rVal.messageType = CharacterMessageType.RESPONSESPAWNCHARACTER;
CharacterMessage.stripPacketHeader(byteBuffer);
rVal.setdata(ByteStreamUtils.popStringFromByteQueue(byteBuffer)); rVal.setdata(ByteStreamUtils.popStringFromByteQueue(byteBuffer));
return rVal; return rVal;
} }
@ -338,9 +345,10 @@ public class CharacterMessage extends NetworkMessage {
/** /**
* Parses a message of type EditorSwap * Parses a message of type EditorSwap
*/ */
public static CharacterMessage parseEditorSwapMessage(CircularByteBuffer byteBuffer){ public static CharacterMessage parseEditorSwapMessage(CircularByteBuffer byteBuffer, MessagePool pool){
CharacterMessage rVal = new CharacterMessage(CharacterMessageType.EDITORSWAP); CharacterMessage rVal = (CharacterMessage)pool.get(MessageType.CHARACTER_MESSAGE);
stripPacketHeader(byteBuffer); rVal.messageType = CharacterMessageType.EDITORSWAP;
CharacterMessage.stripPacketHeader(byteBuffer);
return rVal; return rVal;
} }

View File

@ -297,9 +297,10 @@ public class CombatMessage extends NetworkMessage {
/** /**
* Parses a message of type serverReportHitboxCollision * Parses a message of type serverReportHitboxCollision
*/ */
public static CombatMessage parseserverReportHitboxCollisionMessage(CircularByteBuffer byteBuffer){ public static CombatMessage parseserverReportHitboxCollisionMessage(CircularByteBuffer byteBuffer, MessagePool pool){
CombatMessage rVal = new CombatMessage(CombatMessageType.SERVERREPORTHITBOXCOLLISION); CombatMessage rVal = (CombatMessage)pool.get(MessageType.COMBAT_MESSAGE);
stripPacketHeader(byteBuffer); rVal.messageType = CombatMessageType.SERVERREPORTHITBOXCOLLISION;
CombatMessage.stripPacketHeader(byteBuffer);
rVal.setentityID(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setentityID(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setreceiverEntityID(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setreceiverEntityID(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.settime(ByteStreamUtils.popLongFromByteQueue(byteBuffer)); rVal.settime(ByteStreamUtils.popLongFromByteQueue(byteBuffer));

View File

@ -698,7 +698,7 @@ public class EntityMessage extends NetworkMessage {
public static EntityMessage parseCreateMessage(CircularByteBuffer byteBuffer, MessagePool pool){ public static EntityMessage parseCreateMessage(CircularByteBuffer byteBuffer, MessagePool pool){
EntityMessage rVal = (EntityMessage)pool.get(MessageType.ENTITY_MESSAGE); EntityMessage rVal = (EntityMessage)pool.get(MessageType.ENTITY_MESSAGE);
rVal.messageType = EntityMessageType.CREATE; rVal.messageType = EntityMessageType.CREATE;
stripPacketHeader(byteBuffer); EntityMessage.stripPacketHeader(byteBuffer);
rVal.setentityID(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setentityID(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setentityCategory(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setentityCategory(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setentitySubtype(ByteStreamUtils.popStringFromByteQueue(byteBuffer)); rVal.setentitySubtype(ByteStreamUtils.popStringFromByteQueue(byteBuffer));
@ -739,7 +739,7 @@ public class EntityMessage extends NetworkMessage {
public static EntityMessage parsemoveUpdateMessage(CircularByteBuffer byteBuffer, MessagePool pool){ public static EntityMessage parsemoveUpdateMessage(CircularByteBuffer byteBuffer, MessagePool pool){
EntityMessage rVal = (EntityMessage)pool.get(MessageType.ENTITY_MESSAGE); EntityMessage rVal = (EntityMessage)pool.get(MessageType.ENTITY_MESSAGE);
rVal.messageType = EntityMessageType.MOVEUPDATE; rVal.messageType = EntityMessageType.MOVEUPDATE;
stripPacketHeader(byteBuffer); EntityMessage.stripPacketHeader(byteBuffer);
rVal.setentityID(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setentityID(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.settime(ByteStreamUtils.popLongFromByteQueue(byteBuffer)); rVal.settime(ByteStreamUtils.popLongFromByteQueue(byteBuffer));
rVal.setpositionX(ByteStreamUtils.popDoubleFromByteQueue(byteBuffer)); rVal.setpositionX(ByteStreamUtils.popDoubleFromByteQueue(byteBuffer));
@ -782,7 +782,7 @@ public class EntityMessage extends NetworkMessage {
public static EntityMessage parseattackUpdateMessage(CircularByteBuffer byteBuffer, MessagePool pool){ public static EntityMessage parseattackUpdateMessage(CircularByteBuffer byteBuffer, MessagePool pool){
EntityMessage rVal = (EntityMessage)pool.get(MessageType.ENTITY_MESSAGE); EntityMessage rVal = (EntityMessage)pool.get(MessageType.ENTITY_MESSAGE);
rVal.messageType = EntityMessageType.ATTACKUPDATE; rVal.messageType = EntityMessageType.ATTACKUPDATE;
stripPacketHeader(byteBuffer); EntityMessage.stripPacketHeader(byteBuffer);
rVal.setentityID(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setentityID(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.settime(ByteStreamUtils.popLongFromByteQueue(byteBuffer)); rVal.settime(ByteStreamUtils.popLongFromByteQueue(byteBuffer));
rVal.setpositionX(ByteStreamUtils.popDoubleFromByteQueue(byteBuffer)); rVal.setpositionX(ByteStreamUtils.popDoubleFromByteQueue(byteBuffer));
@ -821,7 +821,7 @@ public class EntityMessage extends NetworkMessage {
public static EntityMessage parsestartAttackMessage(CircularByteBuffer byteBuffer, MessagePool pool){ public static EntityMessage parsestartAttackMessage(CircularByteBuffer byteBuffer, MessagePool pool){
EntityMessage rVal = (EntityMessage)pool.get(MessageType.ENTITY_MESSAGE); EntityMessage rVal = (EntityMessage)pool.get(MessageType.ENTITY_MESSAGE);
rVal.messageType = EntityMessageType.STARTATTACK; rVal.messageType = EntityMessageType.STARTATTACK;
stripPacketHeader(byteBuffer); EntityMessage.stripPacketHeader(byteBuffer);
return rVal; return rVal;
} }
@ -840,7 +840,7 @@ public class EntityMessage extends NetworkMessage {
public static EntityMessage parseKillMessage(CircularByteBuffer byteBuffer, MessagePool pool){ public static EntityMessage parseKillMessage(CircularByteBuffer byteBuffer, MessagePool pool){
EntityMessage rVal = (EntityMessage)pool.get(MessageType.ENTITY_MESSAGE); EntityMessage rVal = (EntityMessage)pool.get(MessageType.ENTITY_MESSAGE);
rVal.messageType = EntityMessageType.KILL; rVal.messageType = EntityMessageType.KILL;
stripPacketHeader(byteBuffer); EntityMessage.stripPacketHeader(byteBuffer);
rVal.settime(ByteStreamUtils.popLongFromByteQueue(byteBuffer)); rVal.settime(ByteStreamUtils.popLongFromByteQueue(byteBuffer));
rVal.setentityID(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setentityID(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
return rVal; return rVal;
@ -863,7 +863,7 @@ public class EntityMessage extends NetworkMessage {
public static EntityMessage parseDestroyMessage(CircularByteBuffer byteBuffer, MessagePool pool){ public static EntityMessage parseDestroyMessage(CircularByteBuffer byteBuffer, MessagePool pool){
EntityMessage rVal = (EntityMessage)pool.get(MessageType.ENTITY_MESSAGE); EntityMessage rVal = (EntityMessage)pool.get(MessageType.ENTITY_MESSAGE);
rVal.messageType = EntityMessageType.DESTROY; rVal.messageType = EntityMessageType.DESTROY;
stripPacketHeader(byteBuffer); EntityMessage.stripPacketHeader(byteBuffer);
rVal.setentityID(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setentityID(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
return rVal; return rVal;
} }
@ -884,7 +884,7 @@ public class EntityMessage extends NetworkMessage {
public static EntityMessage parsesetPropertyMessage(CircularByteBuffer byteBuffer, MessagePool pool){ public static EntityMessage parsesetPropertyMessage(CircularByteBuffer byteBuffer, MessagePool pool){
EntityMessage rVal = (EntityMessage)pool.get(MessageType.ENTITY_MESSAGE); EntityMessage rVal = (EntityMessage)pool.get(MessageType.ENTITY_MESSAGE);
rVal.messageType = EntityMessageType.SETPROPERTY; rVal.messageType = EntityMessageType.SETPROPERTY;
stripPacketHeader(byteBuffer); EntityMessage.stripPacketHeader(byteBuffer);
rVal.setentityID(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setentityID(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.settime(ByteStreamUtils.popLongFromByteQueue(byteBuffer)); rVal.settime(ByteStreamUtils.popLongFromByteQueue(byteBuffer));
rVal.setpropertyType(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setpropertyType(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
@ -939,7 +939,7 @@ public class EntityMessage extends NetworkMessage {
public static EntityMessage parseattachEntityToEntityMessage(CircularByteBuffer byteBuffer, MessagePool pool){ public static EntityMessage parseattachEntityToEntityMessage(CircularByteBuffer byteBuffer, MessagePool pool){
EntityMessage rVal = (EntityMessage)pool.get(MessageType.ENTITY_MESSAGE); EntityMessage rVal = (EntityMessage)pool.get(MessageType.ENTITY_MESSAGE);
rVal.messageType = EntityMessageType.ATTACHENTITYTOENTITY; rVal.messageType = EntityMessageType.ATTACHENTITYTOENTITY;
stripPacketHeader(byteBuffer); EntityMessage.stripPacketHeader(byteBuffer);
rVal.setentityID(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setentityID(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setbone(ByteStreamUtils.popStringFromByteQueue(byteBuffer)); rVal.setbone(ByteStreamUtils.popStringFromByteQueue(byteBuffer));
rVal.settargetID(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.settargetID(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
@ -964,7 +964,7 @@ public class EntityMessage extends NetworkMessage {
public static EntityMessage parseupdateEntityViewDirMessage(CircularByteBuffer byteBuffer, MessagePool pool){ public static EntityMessage parseupdateEntityViewDirMessage(CircularByteBuffer byteBuffer, MessagePool pool){
EntityMessage rVal = (EntityMessage)pool.get(MessageType.ENTITY_MESSAGE); EntityMessage rVal = (EntityMessage)pool.get(MessageType.ENTITY_MESSAGE);
rVal.messageType = EntityMessageType.UPDATEENTITYVIEWDIR; rVal.messageType = EntityMessageType.UPDATEENTITYVIEWDIR;
stripPacketHeader(byteBuffer); EntityMessage.stripPacketHeader(byteBuffer);
rVal.setentityID(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setentityID(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.settime(ByteStreamUtils.popLongFromByteQueue(byteBuffer)); rVal.settime(ByteStreamUtils.popLongFromByteQueue(byteBuffer));
rVal.setpropertyType(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setpropertyType(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
@ -993,7 +993,7 @@ public class EntityMessage extends NetworkMessage {
public static EntityMessage parsesyncPhysicsMessage(CircularByteBuffer byteBuffer, MessagePool pool){ public static EntityMessage parsesyncPhysicsMessage(CircularByteBuffer byteBuffer, MessagePool pool){
EntityMessage rVal = (EntityMessage)pool.get(MessageType.ENTITY_MESSAGE); EntityMessage rVal = (EntityMessage)pool.get(MessageType.ENTITY_MESSAGE);
rVal.messageType = EntityMessageType.SYNCPHYSICS; rVal.messageType = EntityMessageType.SYNCPHYSICS;
stripPacketHeader(byteBuffer); EntityMessage.stripPacketHeader(byteBuffer);
rVal.setentityID(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setentityID(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.settime(ByteStreamUtils.popLongFromByteQueue(byteBuffer)); rVal.settime(ByteStreamUtils.popLongFromByteQueue(byteBuffer));
rVal.setpositionX(ByteStreamUtils.popDoubleFromByteQueue(byteBuffer)); rVal.setpositionX(ByteStreamUtils.popDoubleFromByteQueue(byteBuffer));

View File

@ -337,9 +337,10 @@ public class InventoryMessage extends NetworkMessage {
/** /**
* Parses a message of type addItemToInventory * Parses a message of type addItemToInventory
*/ */
public static InventoryMessage parseaddItemToInventoryMessage(CircularByteBuffer byteBuffer){ public static InventoryMessage parseaddItemToInventoryMessage(CircularByteBuffer byteBuffer, MessagePool pool){
InventoryMessage rVal = new InventoryMessage(InventoryMessageType.ADDITEMTOINVENTORY); InventoryMessage rVal = (InventoryMessage)pool.get(MessageType.INVENTORY_MESSAGE);
stripPacketHeader(byteBuffer); rVal.messageType = InventoryMessageType.ADDITEMTOINVENTORY;
InventoryMessage.stripPacketHeader(byteBuffer);
rVal.setentityId(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setentityId(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setitemTemplate(ByteStreamUtils.popStringFromByteQueue(byteBuffer)); rVal.setitemTemplate(ByteStreamUtils.popStringFromByteQueue(byteBuffer));
return rVal; return rVal;
@ -359,9 +360,10 @@ public class InventoryMessage extends NetworkMessage {
/** /**
* Parses a message of type removeItemFromInventory * Parses a message of type removeItemFromInventory
*/ */
public static InventoryMessage parseremoveItemFromInventoryMessage(CircularByteBuffer byteBuffer){ public static InventoryMessage parseremoveItemFromInventoryMessage(CircularByteBuffer byteBuffer, MessagePool pool){
InventoryMessage rVal = new InventoryMessage(InventoryMessageType.REMOVEITEMFROMINVENTORY); InventoryMessage rVal = (InventoryMessage)pool.get(MessageType.INVENTORY_MESSAGE);
stripPacketHeader(byteBuffer); rVal.messageType = InventoryMessageType.REMOVEITEMFROMINVENTORY;
InventoryMessage.stripPacketHeader(byteBuffer);
rVal.setentityId(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setentityId(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
return rVal; return rVal;
} }
@ -404,9 +406,10 @@ public class InventoryMessage extends NetworkMessage {
/** /**
* Parses a message of type clientRequestEquipItem * Parses a message of type clientRequestEquipItem
*/ */
public static InventoryMessage parseclientRequestEquipItemMessage(CircularByteBuffer byteBuffer){ public static InventoryMessage parseclientRequestEquipItemMessage(CircularByteBuffer byteBuffer, MessagePool pool){
InventoryMessage rVal = new InventoryMessage(InventoryMessageType.CLIENTREQUESTEQUIPITEM); InventoryMessage rVal = (InventoryMessage)pool.get(MessageType.INVENTORY_MESSAGE);
stripPacketHeader(byteBuffer); rVal.messageType = InventoryMessageType.CLIENTREQUESTEQUIPITEM;
InventoryMessage.stripPacketHeader(byteBuffer);
rVal.setequipPointId(ByteStreamUtils.popStringFromByteQueue(byteBuffer)); rVal.setequipPointId(ByteStreamUtils.popStringFromByteQueue(byteBuffer));
rVal.setentityId(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setentityId(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
return rVal; return rVal;
@ -454,9 +457,10 @@ public class InventoryMessage extends NetworkMessage {
/** /**
* Parses a message of type serverCommandMoveItemContainer * Parses a message of type serverCommandMoveItemContainer
*/ */
public static InventoryMessage parseserverCommandMoveItemContainerMessage(CircularByteBuffer byteBuffer){ public static InventoryMessage parseserverCommandMoveItemContainerMessage(CircularByteBuffer byteBuffer, MessagePool pool){
InventoryMessage rVal = new InventoryMessage(InventoryMessageType.SERVERCOMMANDMOVEITEMCONTAINER); InventoryMessage rVal = (InventoryMessage)pool.get(MessageType.INVENTORY_MESSAGE);
stripPacketHeader(byteBuffer); rVal.messageType = InventoryMessageType.SERVERCOMMANDMOVEITEMCONTAINER;
InventoryMessage.stripPacketHeader(byteBuffer);
rVal.setentityId(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setentityId(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setcontainerType(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setcontainerType(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setequipPointId(ByteStreamUtils.popStringFromByteQueue(byteBuffer)); rVal.setequipPointId(ByteStreamUtils.popStringFromByteQueue(byteBuffer));
@ -522,9 +526,10 @@ public class InventoryMessage extends NetworkMessage {
/** /**
* Parses a message of type serverCommandEquipItem * Parses a message of type serverCommandEquipItem
*/ */
public static InventoryMessage parseserverCommandEquipItemMessage(CircularByteBuffer byteBuffer){ public static InventoryMessage parseserverCommandEquipItemMessage(CircularByteBuffer byteBuffer, MessagePool pool){
InventoryMessage rVal = new InventoryMessage(InventoryMessageType.SERVERCOMMANDEQUIPITEM); InventoryMessage rVal = (InventoryMessage)pool.get(MessageType.INVENTORY_MESSAGE);
stripPacketHeader(byteBuffer); rVal.messageType = InventoryMessageType.SERVERCOMMANDEQUIPITEM;
InventoryMessage.stripPacketHeader(byteBuffer);
rVal.setequipperId(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setequipperId(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setcontainerType(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setcontainerType(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setequipPointId(ByteStreamUtils.popStringFromByteQueue(byteBuffer)); rVal.setequipPointId(ByteStreamUtils.popStringFromByteQueue(byteBuffer));
@ -578,9 +583,10 @@ public class InventoryMessage extends NetworkMessage {
/** /**
* Parses a message of type serverCommandUnequipItem * Parses a message of type serverCommandUnequipItem
*/ */
public static InventoryMessage parseserverCommandUnequipItemMessage(CircularByteBuffer byteBuffer){ public static InventoryMessage parseserverCommandUnequipItemMessage(CircularByteBuffer byteBuffer, MessagePool pool){
InventoryMessage rVal = new InventoryMessage(InventoryMessageType.SERVERCOMMANDUNEQUIPITEM); InventoryMessage rVal = (InventoryMessage)pool.get(MessageType.INVENTORY_MESSAGE);
stripPacketHeader(byteBuffer); rVal.messageType = InventoryMessageType.SERVERCOMMANDUNEQUIPITEM;
InventoryMessage.stripPacketHeader(byteBuffer);
rVal.setequipperId(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setequipperId(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setcontainerType(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setcontainerType(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setequipPointId(ByteStreamUtils.popStringFromByteQueue(byteBuffer)); rVal.setequipPointId(ByteStreamUtils.popStringFromByteQueue(byteBuffer));
@ -624,9 +630,10 @@ public class InventoryMessage extends NetworkMessage {
/** /**
* Parses a message of type clientRequestUnequipItem * Parses a message of type clientRequestUnequipItem
*/ */
public static InventoryMessage parseclientRequestUnequipItemMessage(CircularByteBuffer byteBuffer){ public static InventoryMessage parseclientRequestUnequipItemMessage(CircularByteBuffer byteBuffer, MessagePool pool){
InventoryMessage rVal = new InventoryMessage(InventoryMessageType.CLIENTREQUESTUNEQUIPITEM); InventoryMessage rVal = (InventoryMessage)pool.get(MessageType.INVENTORY_MESSAGE);
stripPacketHeader(byteBuffer); rVal.messageType = InventoryMessageType.CLIENTREQUESTUNEQUIPITEM;
InventoryMessage.stripPacketHeader(byteBuffer);
rVal.setequipPointId(ByteStreamUtils.popStringFromByteQueue(byteBuffer)); rVal.setequipPointId(ByteStreamUtils.popStringFromByteQueue(byteBuffer));
return rVal; return rVal;
} }
@ -644,9 +651,10 @@ public class InventoryMessage extends NetworkMessage {
/** /**
* Parses a message of type clientRequestAddToolbar * Parses a message of type clientRequestAddToolbar
*/ */
public static InventoryMessage parseclientRequestAddToolbarMessage(CircularByteBuffer byteBuffer){ public static InventoryMessage parseclientRequestAddToolbarMessage(CircularByteBuffer byteBuffer, MessagePool pool){
InventoryMessage rVal = new InventoryMessage(InventoryMessageType.CLIENTREQUESTADDTOOLBAR); InventoryMessage rVal = (InventoryMessage)pool.get(MessageType.INVENTORY_MESSAGE);
stripPacketHeader(byteBuffer); rVal.messageType = InventoryMessageType.CLIENTREQUESTADDTOOLBAR;
InventoryMessage.stripPacketHeader(byteBuffer);
rVal.setentityId(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setentityId(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.settoolbarId(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.settoolbarId(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
return rVal; return rVal;
@ -666,9 +674,10 @@ public class InventoryMessage extends NetworkMessage {
/** /**
* Parses a message of type clientRequestAddNatural * Parses a message of type clientRequestAddNatural
*/ */
public static InventoryMessage parseclientRequestAddNaturalMessage(CircularByteBuffer byteBuffer){ public static InventoryMessage parseclientRequestAddNaturalMessage(CircularByteBuffer byteBuffer, MessagePool pool){
InventoryMessage rVal = new InventoryMessage(InventoryMessageType.CLIENTREQUESTADDNATURAL); InventoryMessage rVal = (InventoryMessage)pool.get(MessageType.INVENTORY_MESSAGE);
stripPacketHeader(byteBuffer); rVal.messageType = InventoryMessageType.CLIENTREQUESTADDNATURAL;
InventoryMessage.stripPacketHeader(byteBuffer);
rVal.setentityId(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setentityId(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
return rVal; return rVal;
} }
@ -686,9 +695,10 @@ public class InventoryMessage extends NetworkMessage {
/** /**
* Parses a message of type clientUpdateToolbar * Parses a message of type clientUpdateToolbar
*/ */
public static InventoryMessage parseclientUpdateToolbarMessage(CircularByteBuffer byteBuffer){ public static InventoryMessage parseclientUpdateToolbarMessage(CircularByteBuffer byteBuffer, MessagePool pool){
InventoryMessage rVal = new InventoryMessage(InventoryMessageType.CLIENTUPDATETOOLBAR); InventoryMessage rVal = (InventoryMessage)pool.get(MessageType.INVENTORY_MESSAGE);
stripPacketHeader(byteBuffer); rVal.messageType = InventoryMessageType.CLIENTUPDATETOOLBAR;
InventoryMessage.stripPacketHeader(byteBuffer);
rVal.settoolbarId(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.settoolbarId(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
return rVal; return rVal;
} }
@ -743,9 +753,10 @@ public class InventoryMessage extends NetworkMessage {
/** /**
* Parses a message of type clientRequestPerformItemAction * Parses a message of type clientRequestPerformItemAction
*/ */
public static InventoryMessage parseclientRequestPerformItemActionMessage(CircularByteBuffer byteBuffer){ public static InventoryMessage parseclientRequestPerformItemActionMessage(CircularByteBuffer byteBuffer, MessagePool pool){
InventoryMessage rVal = new InventoryMessage(InventoryMessageType.CLIENTREQUESTPERFORMITEMACTION); InventoryMessage rVal = (InventoryMessage)pool.get(MessageType.INVENTORY_MESSAGE);
stripPacketHeader(byteBuffer); rVal.messageType = InventoryMessageType.CLIENTREQUESTPERFORMITEMACTION;
InventoryMessage.stripPacketHeader(byteBuffer);
rVal.setequipPointId(ByteStreamUtils.popStringFromByteQueue(byteBuffer)); rVal.setequipPointId(ByteStreamUtils.popStringFromByteQueue(byteBuffer));
rVal.setitemActionCode(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setitemActionCode(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setitemActionCodeState(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setitemActionCodeState(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
@ -773,9 +784,10 @@ public class InventoryMessage extends NetworkMessage {
/** /**
* Parses a message of type clientRequestCraft * Parses a message of type clientRequestCraft
*/ */
public static InventoryMessage parseclientRequestCraftMessage(CircularByteBuffer byteBuffer){ public static InventoryMessage parseclientRequestCraftMessage(CircularByteBuffer byteBuffer, MessagePool pool){
InventoryMessage rVal = new InventoryMessage(InventoryMessageType.CLIENTREQUESTCRAFT); InventoryMessage rVal = (InventoryMessage)pool.get(MessageType.INVENTORY_MESSAGE);
stripPacketHeader(byteBuffer); rVal.messageType = InventoryMessageType.CLIENTREQUESTCRAFT;
InventoryMessage.stripPacketHeader(byteBuffer);
rVal.setentityId(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setentityId(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setstationId(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setstationId(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setrecipeId(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setrecipeId(ByteStreamUtils.popIntFromByteQueue(byteBuffer));

View File

@ -86,9 +86,10 @@ public class LoreMessage extends NetworkMessage {
/** /**
* Parses a message of type RequestRaces * Parses a message of type RequestRaces
*/ */
public static LoreMessage parseRequestRacesMessage(CircularByteBuffer byteBuffer){ public static LoreMessage parseRequestRacesMessage(CircularByteBuffer byteBuffer, MessagePool pool){
LoreMessage rVal = new LoreMessage(LoreMessageType.REQUESTRACES); LoreMessage rVal = (LoreMessage)pool.get(MessageType.LORE_MESSAGE);
stripPacketHeader(byteBuffer); rVal.messageType = LoreMessageType.REQUESTRACES;
LoreMessage.stripPacketHeader(byteBuffer);
return rVal; return rVal;
} }
@ -126,9 +127,10 @@ public class LoreMessage extends NetworkMessage {
/** /**
* Parses a message of type ResponseRaces * Parses a message of type ResponseRaces
*/ */
public static LoreMessage parseResponseRacesMessage(CircularByteBuffer byteBuffer){ public static LoreMessage parseResponseRacesMessage(CircularByteBuffer byteBuffer, MessagePool pool){
LoreMessage rVal = new LoreMessage(LoreMessageType.RESPONSERACES); LoreMessage rVal = (LoreMessage)pool.get(MessageType.LORE_MESSAGE);
stripPacketHeader(byteBuffer); rVal.messageType = LoreMessageType.RESPONSERACES;
LoreMessage.stripPacketHeader(byteBuffer);
rVal.setdata(ByteStreamUtils.popStringFromByteQueue(byteBuffer)); rVal.setdata(ByteStreamUtils.popStringFromByteQueue(byteBuffer));
return rVal; return rVal;
} }

View File

@ -1,5 +1,6 @@
package electrosphere.net.parser.net.message; package electrosphere.net.parser.net.message;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.concurrent.locks.ReentrantLock; import java.util.concurrent.locks.ReentrantLock;
@ -12,54 +13,59 @@ import electrosphere.net.parser.net.message.NetworkMessage.MessageType;
public class MessagePool { public class MessagePool {
/** /**
* Pools auth messages * Pools Entity messages
*/
List<NetworkMessage> authMessagePool = new LinkedList<NetworkMessage>();
/**
* Pools character messages
*/
List<NetworkMessage> characterMessagePool = new LinkedList<NetworkMessage>();
/**
* Pools combat messages
*/
List<NetworkMessage> combatMessagePool = new LinkedList<NetworkMessage>();
/**
* Pools entity messages
*/ */
List<NetworkMessage> entityMessagePool = new LinkedList<NetworkMessage>(); List<NetworkMessage> entityMessagePool = new LinkedList<NetworkMessage>();
/** /**
* Pools inventory messages * Pools Lore messages
*/
List<NetworkMessage> inventoryMessagePool = new LinkedList<NetworkMessage>();
/**
* Pools lore messages
*/ */
List<NetworkMessage> loreMessagePool = new LinkedList<NetworkMessage>(); List<NetworkMessage> loreMessagePool = new LinkedList<NetworkMessage>();
/** /**
* Pools player messages * Pools Player messages
*/ */
List<NetworkMessage> playerMessagePool = new LinkedList<NetworkMessage>(); List<NetworkMessage> playerMessagePool = new LinkedList<NetworkMessage>();
/** /**
* Pools server messages * Pools Terrain messages
*/
List<NetworkMessage> terrainMessagePool = new LinkedList<NetworkMessage>();
/**
* Pools Server messages
*/ */
List<NetworkMessage> serverMessagePool = new LinkedList<NetworkMessage>(); List<NetworkMessage> serverMessagePool = new LinkedList<NetworkMessage>();
/** /**
* Pools synchronization messages * Pools Auth messages
*/
List<NetworkMessage> authMessagePool = new LinkedList<NetworkMessage>();
/**
* Pools Character messages
*/
List<NetworkMessage> characterMessagePool = new LinkedList<NetworkMessage>();
/**
* Pools Inventory messages
*/
List<NetworkMessage> inventoryMessagePool = new LinkedList<NetworkMessage>();
/**
* Pools Synchronization messages
*/ */
List<NetworkMessage> synchronizationMessagePool = new LinkedList<NetworkMessage>(); List<NetworkMessage> synchronizationMessagePool = new LinkedList<NetworkMessage>();
/** /**
* Pools terrain messages * Pools Combat messages
*/ */
List<NetworkMessage> terrainMessagePool = new LinkedList<NetworkMessage>(); List<NetworkMessage> combatMessagePool = new LinkedList<NetworkMessage>();
/**
* Controls whether the pool should always allocate or not
*/
boolean alwaysAllocate = false;
/** /**
* Lock for thread-safeing operations * Lock for thread-safeing operations
@ -67,72 +73,72 @@ public class MessagePool {
ReentrantLock lock = new ReentrantLock(); ReentrantLock lock = new ReentrantLock();
/** /**
* Gets a network message from the pool. Allocates if no free one is available * Gets a network message from the pool. Allocates if no free one is available.
* @param type The type of the message * @param type The type of the message
* @return * @return A network message of the requested type
*/ */
public NetworkMessage get(MessageType type){ public NetworkMessage get(MessageType type){
NetworkMessage rVal = null; NetworkMessage rVal = null;
lock.lock(); lock.lock();
if(type == MessageType.AUTH_MESSAGE){ if(type == MessageType.ENTITY_MESSAGE){
if(authMessagePool.size() > 0){ if(!alwaysAllocate && entityMessagePool.size() > 0){
rVal = authMessagePool.remove(0);
} else {
rVal = new AuthMessage();
}
} else if(type == MessageType.CHARACTER_MESSAGE){
if(characterMessagePool.size() > 0){
rVal = characterMessagePool.remove(0);
} else {
rVal = new CharacterMessage();
}
} else if(type == MessageType.COMBAT_MESSAGE){
if(combatMessagePool.size() > 0){
rVal = combatMessagePool.remove(0);
} else {
rVal = new CombatMessage();
}
} else if(type == MessageType.ENTITY_MESSAGE){
if(entityMessagePool.size() > 0){
rVal = entityMessagePool.remove(0); rVal = entityMessagePool.remove(0);
} else { } else {
rVal = new EntityMessage(); rVal = new EntityMessage();
} }
} else if(type == MessageType.INVENTORY_MESSAGE){
if(inventoryMessagePool.size() > 0){
rVal = inventoryMessagePool.remove(0);
} else {
rVal = new InventoryMessage();
}
} else if(type == MessageType.LORE_MESSAGE){ } else if(type == MessageType.LORE_MESSAGE){
if(loreMessagePool.size() > 0){ if(!alwaysAllocate && loreMessagePool.size() > 0){
rVal = loreMessagePool.remove(0); rVal = loreMessagePool.remove(0);
} else { } else {
rVal = new LoreMessage(); rVal = new LoreMessage();
} }
} else if(type == MessageType.PLAYER_MESSAGE){ } else if(type == MessageType.PLAYER_MESSAGE){
if(playerMessagePool.size() > 0){ if(!alwaysAllocate && playerMessagePool.size() > 0){
rVal = playerMessagePool.remove(0); rVal = playerMessagePool.remove(0);
} else { } else {
rVal = new PlayerMessage(); rVal = new PlayerMessage();
} }
} else if(type == MessageType.TERRAIN_MESSAGE){
if(!alwaysAllocate && terrainMessagePool.size() > 0){
rVal = terrainMessagePool.remove(0);
} else {
rVal = new TerrainMessage();
}
} else if(type == MessageType.SERVER_MESSAGE){ } else if(type == MessageType.SERVER_MESSAGE){
if(serverMessagePool.size() > 0){ if(!alwaysAllocate && serverMessagePool.size() > 0){
rVal = serverMessagePool.remove(0); rVal = serverMessagePool.remove(0);
} else { } else {
rVal = new ServerMessage(); rVal = new ServerMessage();
} }
} else if(type == MessageType.AUTH_MESSAGE){
if(!alwaysAllocate && authMessagePool.size() > 0){
rVal = authMessagePool.remove(0);
} else {
rVal = new AuthMessage();
}
} else if(type == MessageType.CHARACTER_MESSAGE){
if(!alwaysAllocate && characterMessagePool.size() > 0){
rVal = characterMessagePool.remove(0);
} else {
rVal = new CharacterMessage();
}
} else if(type == MessageType.INVENTORY_MESSAGE){
if(!alwaysAllocate && inventoryMessagePool.size() > 0){
rVal = inventoryMessagePool.remove(0);
} else {
rVal = new InventoryMessage();
}
} else if(type == MessageType.SYNCHRONIZATION_MESSAGE){ } else if(type == MessageType.SYNCHRONIZATION_MESSAGE){
if(synchronizationMessagePool.size() > 0){ if(!alwaysAllocate && synchronizationMessagePool.size() > 0){
rVal = synchronizationMessagePool.remove(0); rVal = synchronizationMessagePool.remove(0);
} else { } else {
rVal = new SynchronizationMessage(); rVal = new SynchronizationMessage();
} }
} else if(type == MessageType.TERRAIN_MESSAGE){ } else if(type == MessageType.COMBAT_MESSAGE){
if(terrainMessagePool.size() > 0){ if(!alwaysAllocate && combatMessagePool.size() > 0){
rVal = terrainMessagePool.remove(0); rVal = combatMessagePool.remove(0);
} else { } else {
rVal = new TerrainMessage(); rVal = new CombatMessage();
} }
} else { } else {
throw new Error("Unsupported message type! " + type); throw new Error("Unsupported message type! " + type);
@ -147,30 +153,38 @@ public class MessagePool {
*/ */
public void release(NetworkMessage message){ public void release(NetworkMessage message){
lock.lock(); lock.lock();
if(message instanceof AuthMessage){ if(message instanceof EntityMessage){
authMessagePool.add(message); entityMessagePool.add(message);
} else if(message instanceof CharacterMessage){
characterMessagePool.add(message);
} else if(message instanceof CombatMessage){
combatMessagePool.add(message);
} else if(message instanceof EntityMessage){
entityMessagePool.add(message);
} else if(message instanceof InventoryMessage){
inventoryMessagePool.add(message);
} else if(message instanceof LoreMessage){ } else if(message instanceof LoreMessage){
loreMessagePool.add(message); loreMessagePool.add(message);
} else if(message instanceof PlayerMessage){ } else if(message instanceof PlayerMessage){
playerMessagePool.add(message); playerMessagePool.add(message);
} else if(message instanceof ServerMessage){
serverMessagePool.add(message);
} else if(message instanceof SynchronizationMessage){
synchronizationMessagePool.add(message);
} else if(message instanceof TerrainMessage){ } else if(message instanceof TerrainMessage){
terrainMessagePool.add(message); terrainMessagePool.add(message);
} else if(message instanceof ServerMessage){
serverMessagePool.add(message);
} else if(message instanceof AuthMessage){
authMessagePool.add(message);
} else if(message instanceof CharacterMessage){
characterMessagePool.add(message);
} else if(message instanceof InventoryMessage){
inventoryMessagePool.add(message);
} else if(message instanceof SynchronizationMessage){
synchronizationMessagePool.add(message);
} else if(message instanceof CombatMessage){
combatMessagePool.add(message);
} else { } else {
throw new Error("Unsupported message type! " + message.getClass()); throw new Error("Unsupported message type! " + message.getClass());
} }
lock.unlock(); lock.unlock();
} }
/**
* Sets whether the pool should always allocate or try to pool
* @param alwaysAllocate true to always allocate a new message, false enable message pooling
*/
public void setAlwaysAllocate(boolean alwaysAllocate){
this.alwaysAllocate = alwaysAllocate;
}
} }

View File

@ -127,12 +127,12 @@ public abstract class NetworkMessage {
switch(secondByte){ switch(secondByte){
case TypeBytes.LORE_MESSAGE_TYPE_REQUESTRACES: case TypeBytes.LORE_MESSAGE_TYPE_REQUESTRACES:
if(LoreMessage.canParseMessage(byteBuffer,secondByte)){ if(LoreMessage.canParseMessage(byteBuffer,secondByte)){
rVal = LoreMessage.parseRequestRacesMessage(byteBuffer); rVal = LoreMessage.parseRequestRacesMessage(byteBuffer,pool);
} }
break; break;
case TypeBytes.LORE_MESSAGE_TYPE_RESPONSERACES: case TypeBytes.LORE_MESSAGE_TYPE_RESPONSERACES:
if(LoreMessage.canParseMessage(byteBuffer,secondByte)){ if(LoreMessage.canParseMessage(byteBuffer,secondByte)){
rVal = LoreMessage.parseResponseRacesMessage(byteBuffer); rVal = LoreMessage.parseResponseRacesMessage(byteBuffer,pool);
} }
break; break;
} }
@ -142,12 +142,12 @@ public abstract class NetworkMessage {
switch(secondByte){ switch(secondByte){
case TypeBytes.PLAYER_MESSAGE_TYPE_SET_ID: case TypeBytes.PLAYER_MESSAGE_TYPE_SET_ID:
if(PlayerMessage.canParseMessage(byteBuffer,secondByte)){ if(PlayerMessage.canParseMessage(byteBuffer,secondByte)){
rVal = PlayerMessage.parseSet_IDMessage(byteBuffer); rVal = PlayerMessage.parseSet_IDMessage(byteBuffer,pool);
} }
break; break;
case TypeBytes.PLAYER_MESSAGE_TYPE_SETINITIALDISCRETEPOSITION: case TypeBytes.PLAYER_MESSAGE_TYPE_SETINITIALDISCRETEPOSITION:
if(PlayerMessage.canParseMessage(byteBuffer,secondByte)){ if(PlayerMessage.canParseMessage(byteBuffer,secondByte)){
rVal = PlayerMessage.parseSetInitialDiscretePositionMessage(byteBuffer); rVal = PlayerMessage.parseSetInitialDiscretePositionMessage(byteBuffer,pool);
} }
break; break;
} }
@ -242,12 +242,12 @@ public abstract class NetworkMessage {
switch(secondByte){ switch(secondByte){
case TypeBytes.SERVER_MESSAGE_TYPE_PING: case TypeBytes.SERVER_MESSAGE_TYPE_PING:
if(ServerMessage.canParseMessage(byteBuffer,secondByte)){ if(ServerMessage.canParseMessage(byteBuffer,secondByte)){
rVal = ServerMessage.parsePingMessage(byteBuffer); rVal = ServerMessage.parsePingMessage(byteBuffer,pool);
} }
break; break;
case TypeBytes.SERVER_MESSAGE_TYPE_PONG: case TypeBytes.SERVER_MESSAGE_TYPE_PONG:
if(ServerMessage.canParseMessage(byteBuffer,secondByte)){ if(ServerMessage.canParseMessage(byteBuffer,secondByte)){
rVal = ServerMessage.parsePongMessage(byteBuffer); rVal = ServerMessage.parsePongMessage(byteBuffer,pool);
} }
break; break;
} }
@ -257,22 +257,22 @@ public abstract class NetworkMessage {
switch(secondByte){ switch(secondByte){
case TypeBytes.AUTH_MESSAGE_TYPE_AUTHREQUEST: case TypeBytes.AUTH_MESSAGE_TYPE_AUTHREQUEST:
if(AuthMessage.canParseMessage(byteBuffer,secondByte)){ if(AuthMessage.canParseMessage(byteBuffer,secondByte)){
rVal = AuthMessage.parseAuthRequestMessage(byteBuffer); rVal = AuthMessage.parseAuthRequestMessage(byteBuffer,pool);
} }
break; break;
case TypeBytes.AUTH_MESSAGE_TYPE_AUTHDETAILS: case TypeBytes.AUTH_MESSAGE_TYPE_AUTHDETAILS:
if(AuthMessage.canParseMessage(byteBuffer,secondByte)){ if(AuthMessage.canParseMessage(byteBuffer,secondByte)){
rVal = AuthMessage.parseAuthDetailsMessage(byteBuffer); rVal = AuthMessage.parseAuthDetailsMessage(byteBuffer,pool);
} }
break; break;
case TypeBytes.AUTH_MESSAGE_TYPE_AUTHSUCCESS: case TypeBytes.AUTH_MESSAGE_TYPE_AUTHSUCCESS:
if(AuthMessage.canParseMessage(byteBuffer,secondByte)){ if(AuthMessage.canParseMessage(byteBuffer,secondByte)){
rVal = AuthMessage.parseAuthSuccessMessage(byteBuffer); rVal = AuthMessage.parseAuthSuccessMessage(byteBuffer,pool);
} }
break; break;
case TypeBytes.AUTH_MESSAGE_TYPE_AUTHFAILURE: case TypeBytes.AUTH_MESSAGE_TYPE_AUTHFAILURE:
if(AuthMessage.canParseMessage(byteBuffer,secondByte)){ if(AuthMessage.canParseMessage(byteBuffer,secondByte)){
rVal = AuthMessage.parseAuthFailureMessage(byteBuffer); rVal = AuthMessage.parseAuthFailureMessage(byteBuffer,pool);
} }
break; break;
} }
@ -282,42 +282,42 @@ public abstract class NetworkMessage {
switch(secondByte){ switch(secondByte){
case TypeBytes.CHARACTER_MESSAGE_TYPE_REQUESTCHARACTERLIST: case TypeBytes.CHARACTER_MESSAGE_TYPE_REQUESTCHARACTERLIST:
if(CharacterMessage.canParseMessage(byteBuffer,secondByte)){ if(CharacterMessage.canParseMessage(byteBuffer,secondByte)){
rVal = CharacterMessage.parseRequestCharacterListMessage(byteBuffer); rVal = CharacterMessage.parseRequestCharacterListMessage(byteBuffer,pool);
} }
break; break;
case TypeBytes.CHARACTER_MESSAGE_TYPE_RESPONSECHARACTERLIST: case TypeBytes.CHARACTER_MESSAGE_TYPE_RESPONSECHARACTERLIST:
if(CharacterMessage.canParseMessage(byteBuffer,secondByte)){ if(CharacterMessage.canParseMessage(byteBuffer,secondByte)){
rVal = CharacterMessage.parseResponseCharacterListMessage(byteBuffer); rVal = CharacterMessage.parseResponseCharacterListMessage(byteBuffer,pool);
} }
break; break;
case TypeBytes.CHARACTER_MESSAGE_TYPE_REQUESTCREATECHARACTER: case TypeBytes.CHARACTER_MESSAGE_TYPE_REQUESTCREATECHARACTER:
if(CharacterMessage.canParseMessage(byteBuffer,secondByte)){ if(CharacterMessage.canParseMessage(byteBuffer,secondByte)){
rVal = CharacterMessage.parseRequestCreateCharacterMessage(byteBuffer); rVal = CharacterMessage.parseRequestCreateCharacterMessage(byteBuffer,pool);
} }
break; break;
case TypeBytes.CHARACTER_MESSAGE_TYPE_RESPONSECREATECHARACTERSUCCESS: case TypeBytes.CHARACTER_MESSAGE_TYPE_RESPONSECREATECHARACTERSUCCESS:
if(CharacterMessage.canParseMessage(byteBuffer,secondByte)){ if(CharacterMessage.canParseMessage(byteBuffer,secondByte)){
rVal = CharacterMessage.parseResponseCreateCharacterSuccessMessage(byteBuffer); rVal = CharacterMessage.parseResponseCreateCharacterSuccessMessage(byteBuffer,pool);
} }
break; break;
case TypeBytes.CHARACTER_MESSAGE_TYPE_RESPONSECREATECHARACTERFAILURE: case TypeBytes.CHARACTER_MESSAGE_TYPE_RESPONSECREATECHARACTERFAILURE:
if(CharacterMessage.canParseMessage(byteBuffer,secondByte)){ if(CharacterMessage.canParseMessage(byteBuffer,secondByte)){
rVal = CharacterMessage.parseResponseCreateCharacterFailureMessage(byteBuffer); rVal = CharacterMessage.parseResponseCreateCharacterFailureMessage(byteBuffer,pool);
} }
break; break;
case TypeBytes.CHARACTER_MESSAGE_TYPE_REQUESTSPAWNCHARACTER: case TypeBytes.CHARACTER_MESSAGE_TYPE_REQUESTSPAWNCHARACTER:
if(CharacterMessage.canParseMessage(byteBuffer,secondByte)){ if(CharacterMessage.canParseMessage(byteBuffer,secondByte)){
rVal = CharacterMessage.parseRequestSpawnCharacterMessage(byteBuffer); rVal = CharacterMessage.parseRequestSpawnCharacterMessage(byteBuffer,pool);
} }
break; break;
case TypeBytes.CHARACTER_MESSAGE_TYPE_RESPONSESPAWNCHARACTER: case TypeBytes.CHARACTER_MESSAGE_TYPE_RESPONSESPAWNCHARACTER:
if(CharacterMessage.canParseMessage(byteBuffer,secondByte)){ if(CharacterMessage.canParseMessage(byteBuffer,secondByte)){
rVal = CharacterMessage.parseResponseSpawnCharacterMessage(byteBuffer); rVal = CharacterMessage.parseResponseSpawnCharacterMessage(byteBuffer,pool);
} }
break; break;
case TypeBytes.CHARACTER_MESSAGE_TYPE_EDITORSWAP: case TypeBytes.CHARACTER_MESSAGE_TYPE_EDITORSWAP:
if(CharacterMessage.canParseMessage(byteBuffer,secondByte)){ if(CharacterMessage.canParseMessage(byteBuffer,secondByte)){
rVal = CharacterMessage.parseEditorSwapMessage(byteBuffer); rVal = CharacterMessage.parseEditorSwapMessage(byteBuffer,pool);
} }
break; break;
} }
@ -327,62 +327,62 @@ public abstract class NetworkMessage {
switch(secondByte){ switch(secondByte){
case TypeBytes.INVENTORY_MESSAGE_TYPE_ADDITEMTOINVENTORY: case TypeBytes.INVENTORY_MESSAGE_TYPE_ADDITEMTOINVENTORY:
if(InventoryMessage.canParseMessage(byteBuffer,secondByte)){ if(InventoryMessage.canParseMessage(byteBuffer,secondByte)){
rVal = InventoryMessage.parseaddItemToInventoryMessage(byteBuffer); rVal = InventoryMessage.parseaddItemToInventoryMessage(byteBuffer,pool);
} }
break; break;
case TypeBytes.INVENTORY_MESSAGE_TYPE_REMOVEITEMFROMINVENTORY: case TypeBytes.INVENTORY_MESSAGE_TYPE_REMOVEITEMFROMINVENTORY:
if(InventoryMessage.canParseMessage(byteBuffer,secondByte)){ if(InventoryMessage.canParseMessage(byteBuffer,secondByte)){
rVal = InventoryMessage.parseremoveItemFromInventoryMessage(byteBuffer); rVal = InventoryMessage.parseremoveItemFromInventoryMessage(byteBuffer,pool);
} }
break; break;
case TypeBytes.INVENTORY_MESSAGE_TYPE_CLIENTREQUESTEQUIPITEM: case TypeBytes.INVENTORY_MESSAGE_TYPE_CLIENTREQUESTEQUIPITEM:
if(InventoryMessage.canParseMessage(byteBuffer,secondByte)){ if(InventoryMessage.canParseMessage(byteBuffer,secondByte)){
rVal = InventoryMessage.parseclientRequestEquipItemMessage(byteBuffer); rVal = InventoryMessage.parseclientRequestEquipItemMessage(byteBuffer,pool);
} }
break; break;
case TypeBytes.INVENTORY_MESSAGE_TYPE_SERVERCOMMANDMOVEITEMCONTAINER: case TypeBytes.INVENTORY_MESSAGE_TYPE_SERVERCOMMANDMOVEITEMCONTAINER:
if(InventoryMessage.canParseMessage(byteBuffer,secondByte)){ if(InventoryMessage.canParseMessage(byteBuffer,secondByte)){
rVal = InventoryMessage.parseserverCommandMoveItemContainerMessage(byteBuffer); rVal = InventoryMessage.parseserverCommandMoveItemContainerMessage(byteBuffer,pool);
} }
break; break;
case TypeBytes.INVENTORY_MESSAGE_TYPE_SERVERCOMMANDEQUIPITEM: case TypeBytes.INVENTORY_MESSAGE_TYPE_SERVERCOMMANDEQUIPITEM:
if(InventoryMessage.canParseMessage(byteBuffer,secondByte)){ if(InventoryMessage.canParseMessage(byteBuffer,secondByte)){
rVal = InventoryMessage.parseserverCommandEquipItemMessage(byteBuffer); rVal = InventoryMessage.parseserverCommandEquipItemMessage(byteBuffer,pool);
} }
break; break;
case TypeBytes.INVENTORY_MESSAGE_TYPE_SERVERCOMMANDUNEQUIPITEM: case TypeBytes.INVENTORY_MESSAGE_TYPE_SERVERCOMMANDUNEQUIPITEM:
if(InventoryMessage.canParseMessage(byteBuffer,secondByte)){ if(InventoryMessage.canParseMessage(byteBuffer,secondByte)){
rVal = InventoryMessage.parseserverCommandUnequipItemMessage(byteBuffer); rVal = InventoryMessage.parseserverCommandUnequipItemMessage(byteBuffer,pool);
} }
break; break;
case TypeBytes.INVENTORY_MESSAGE_TYPE_CLIENTREQUESTUNEQUIPITEM: case TypeBytes.INVENTORY_MESSAGE_TYPE_CLIENTREQUESTUNEQUIPITEM:
if(InventoryMessage.canParseMessage(byteBuffer,secondByte)){ if(InventoryMessage.canParseMessage(byteBuffer,secondByte)){
rVal = InventoryMessage.parseclientRequestUnequipItemMessage(byteBuffer); rVal = InventoryMessage.parseclientRequestUnequipItemMessage(byteBuffer,pool);
} }
break; break;
case TypeBytes.INVENTORY_MESSAGE_TYPE_CLIENTREQUESTADDTOOLBAR: case TypeBytes.INVENTORY_MESSAGE_TYPE_CLIENTREQUESTADDTOOLBAR:
if(InventoryMessage.canParseMessage(byteBuffer,secondByte)){ if(InventoryMessage.canParseMessage(byteBuffer,secondByte)){
rVal = InventoryMessage.parseclientRequestAddToolbarMessage(byteBuffer); rVal = InventoryMessage.parseclientRequestAddToolbarMessage(byteBuffer,pool);
} }
break; break;
case TypeBytes.INVENTORY_MESSAGE_TYPE_CLIENTREQUESTADDNATURAL: case TypeBytes.INVENTORY_MESSAGE_TYPE_CLIENTREQUESTADDNATURAL:
if(InventoryMessage.canParseMessage(byteBuffer,secondByte)){ if(InventoryMessage.canParseMessage(byteBuffer,secondByte)){
rVal = InventoryMessage.parseclientRequestAddNaturalMessage(byteBuffer); rVal = InventoryMessage.parseclientRequestAddNaturalMessage(byteBuffer,pool);
} }
break; break;
case TypeBytes.INVENTORY_MESSAGE_TYPE_CLIENTUPDATETOOLBAR: case TypeBytes.INVENTORY_MESSAGE_TYPE_CLIENTUPDATETOOLBAR:
if(InventoryMessage.canParseMessage(byteBuffer,secondByte)){ if(InventoryMessage.canParseMessage(byteBuffer,secondByte)){
rVal = InventoryMessage.parseclientUpdateToolbarMessage(byteBuffer); rVal = InventoryMessage.parseclientUpdateToolbarMessage(byteBuffer,pool);
} }
break; break;
case TypeBytes.INVENTORY_MESSAGE_TYPE_CLIENTREQUESTPERFORMITEMACTION: case TypeBytes.INVENTORY_MESSAGE_TYPE_CLIENTREQUESTPERFORMITEMACTION:
if(InventoryMessage.canParseMessage(byteBuffer,secondByte)){ if(InventoryMessage.canParseMessage(byteBuffer,secondByte)){
rVal = InventoryMessage.parseclientRequestPerformItemActionMessage(byteBuffer); rVal = InventoryMessage.parseclientRequestPerformItemActionMessage(byteBuffer,pool);
} }
break; break;
case TypeBytes.INVENTORY_MESSAGE_TYPE_CLIENTREQUESTCRAFT: case TypeBytes.INVENTORY_MESSAGE_TYPE_CLIENTREQUESTCRAFT:
if(InventoryMessage.canParseMessage(byteBuffer,secondByte)){ if(InventoryMessage.canParseMessage(byteBuffer,secondByte)){
rVal = InventoryMessage.parseclientRequestCraftMessage(byteBuffer); rVal = InventoryMessage.parseclientRequestCraftMessage(byteBuffer,pool);
} }
break; break;
} }
@ -392,57 +392,57 @@ public abstract class NetworkMessage {
switch(secondByte){ switch(secondByte){
case TypeBytes.SYNCHRONIZATION_MESSAGE_TYPE_UPDATECLIENTSTATE: case TypeBytes.SYNCHRONIZATION_MESSAGE_TYPE_UPDATECLIENTSTATE:
if(SynchronizationMessage.canParseMessage(byteBuffer,secondByte)){ if(SynchronizationMessage.canParseMessage(byteBuffer,secondByte)){
rVal = SynchronizationMessage.parseUpdateClientStateMessage(byteBuffer); rVal = SynchronizationMessage.parseUpdateClientStateMessage(byteBuffer,pool);
} }
break; break;
case TypeBytes.SYNCHRONIZATION_MESSAGE_TYPE_UPDATECLIENTSTRINGSTATE: case TypeBytes.SYNCHRONIZATION_MESSAGE_TYPE_UPDATECLIENTSTRINGSTATE:
if(SynchronizationMessage.canParseMessage(byteBuffer,secondByte)){ if(SynchronizationMessage.canParseMessage(byteBuffer,secondByte)){
rVal = SynchronizationMessage.parseUpdateClientStringStateMessage(byteBuffer); rVal = SynchronizationMessage.parseUpdateClientStringStateMessage(byteBuffer,pool);
} }
break; break;
case TypeBytes.SYNCHRONIZATION_MESSAGE_TYPE_UPDATECLIENTINTSTATE: case TypeBytes.SYNCHRONIZATION_MESSAGE_TYPE_UPDATECLIENTINTSTATE:
if(SynchronizationMessage.canParseMessage(byteBuffer,secondByte)){ if(SynchronizationMessage.canParseMessage(byteBuffer,secondByte)){
rVal = SynchronizationMessage.parseUpdateClientIntStateMessage(byteBuffer); rVal = SynchronizationMessage.parseUpdateClientIntStateMessage(byteBuffer,pool);
} }
break; break;
case TypeBytes.SYNCHRONIZATION_MESSAGE_TYPE_UPDATECLIENTLONGSTATE: case TypeBytes.SYNCHRONIZATION_MESSAGE_TYPE_UPDATECLIENTLONGSTATE:
if(SynchronizationMessage.canParseMessage(byteBuffer,secondByte)){ if(SynchronizationMessage.canParseMessage(byteBuffer,secondByte)){
rVal = SynchronizationMessage.parseUpdateClientLongStateMessage(byteBuffer); rVal = SynchronizationMessage.parseUpdateClientLongStateMessage(byteBuffer,pool);
} }
break; break;
case TypeBytes.SYNCHRONIZATION_MESSAGE_TYPE_UPDATECLIENTFLOATSTATE: case TypeBytes.SYNCHRONIZATION_MESSAGE_TYPE_UPDATECLIENTFLOATSTATE:
if(SynchronizationMessage.canParseMessage(byteBuffer,secondByte)){ if(SynchronizationMessage.canParseMessage(byteBuffer,secondByte)){
rVal = SynchronizationMessage.parseUpdateClientFloatStateMessage(byteBuffer); rVal = SynchronizationMessage.parseUpdateClientFloatStateMessage(byteBuffer,pool);
} }
break; break;
case TypeBytes.SYNCHRONIZATION_MESSAGE_TYPE_UPDATECLIENTDOUBLESTATE: case TypeBytes.SYNCHRONIZATION_MESSAGE_TYPE_UPDATECLIENTDOUBLESTATE:
if(SynchronizationMessage.canParseMessage(byteBuffer,secondByte)){ if(SynchronizationMessage.canParseMessage(byteBuffer,secondByte)){
rVal = SynchronizationMessage.parseUpdateClientDoubleStateMessage(byteBuffer); rVal = SynchronizationMessage.parseUpdateClientDoubleStateMessage(byteBuffer,pool);
} }
break; break;
case TypeBytes.SYNCHRONIZATION_MESSAGE_TYPE_CLIENTREQUESTBTREEACTION: case TypeBytes.SYNCHRONIZATION_MESSAGE_TYPE_CLIENTREQUESTBTREEACTION:
if(SynchronizationMessage.canParseMessage(byteBuffer,secondByte)){ if(SynchronizationMessage.canParseMessage(byteBuffer,secondByte)){
rVal = SynchronizationMessage.parseClientRequestBTreeActionMessage(byteBuffer); rVal = SynchronizationMessage.parseClientRequestBTreeActionMessage(byteBuffer,pool);
} }
break; break;
case TypeBytes.SYNCHRONIZATION_MESSAGE_TYPE_SERVERNOTIFYBTREETRANSITION: case TypeBytes.SYNCHRONIZATION_MESSAGE_TYPE_SERVERNOTIFYBTREETRANSITION:
if(SynchronizationMessage.canParseMessage(byteBuffer,secondByte)){ if(SynchronizationMessage.canParseMessage(byteBuffer,secondByte)){
rVal = SynchronizationMessage.parseServerNotifyBTreeTransitionMessage(byteBuffer); rVal = SynchronizationMessage.parseServerNotifyBTreeTransitionMessage(byteBuffer,pool);
} }
break; break;
case TypeBytes.SYNCHRONIZATION_MESSAGE_TYPE_ATTACHTREE: case TypeBytes.SYNCHRONIZATION_MESSAGE_TYPE_ATTACHTREE:
if(SynchronizationMessage.canParseMessage(byteBuffer,secondByte)){ if(SynchronizationMessage.canParseMessage(byteBuffer,secondByte)){
rVal = SynchronizationMessage.parseAttachTreeMessage(byteBuffer); rVal = SynchronizationMessage.parseAttachTreeMessage(byteBuffer,pool);
} }
break; break;
case TypeBytes.SYNCHRONIZATION_MESSAGE_TYPE_DETATCHTREE: case TypeBytes.SYNCHRONIZATION_MESSAGE_TYPE_DETATCHTREE:
if(SynchronizationMessage.canParseMessage(byteBuffer,secondByte)){ if(SynchronizationMessage.canParseMessage(byteBuffer,secondByte)){
rVal = SynchronizationMessage.parseDetatchTreeMessage(byteBuffer); rVal = SynchronizationMessage.parseDetatchTreeMessage(byteBuffer,pool);
} }
break; break;
case TypeBytes.SYNCHRONIZATION_MESSAGE_TYPE_LOADSCENE: case TypeBytes.SYNCHRONIZATION_MESSAGE_TYPE_LOADSCENE:
if(SynchronizationMessage.canParseMessage(byteBuffer,secondByte)){ if(SynchronizationMessage.canParseMessage(byteBuffer,secondByte)){
rVal = SynchronizationMessage.parseLoadSceneMessage(byteBuffer); rVal = SynchronizationMessage.parseLoadSceneMessage(byteBuffer,pool);
} }
break; break;
} }
@ -452,7 +452,7 @@ public abstract class NetworkMessage {
switch(secondByte){ switch(secondByte){
case TypeBytes.COMBAT_MESSAGE_TYPE_SERVERREPORTHITBOXCOLLISION: case TypeBytes.COMBAT_MESSAGE_TYPE_SERVERREPORTHITBOXCOLLISION:
if(CombatMessage.canParseMessage(byteBuffer,secondByte)){ if(CombatMessage.canParseMessage(byteBuffer,secondByte)){
rVal = CombatMessage.parseserverReportHitboxCollisionMessage(byteBuffer); rVal = CombatMessage.parseserverReportHitboxCollisionMessage(byteBuffer,pool);
} }
break; break;
} }

View File

@ -132,9 +132,10 @@ public class PlayerMessage extends NetworkMessage {
/** /**
* Parses a message of type Set_ID * Parses a message of type Set_ID
*/ */
public static PlayerMessage parseSet_IDMessage(CircularByteBuffer byteBuffer){ public static PlayerMessage parseSet_IDMessage(CircularByteBuffer byteBuffer, MessagePool pool){
PlayerMessage rVal = new PlayerMessage(PlayerMessageType.SET_ID); PlayerMessage rVal = (PlayerMessage)pool.get(MessageType.PLAYER_MESSAGE);
stripPacketHeader(byteBuffer); rVal.messageType = PlayerMessageType.SET_ID;
PlayerMessage.stripPacketHeader(byteBuffer);
rVal.setplayerID(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setplayerID(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
return rVal; return rVal;
} }
@ -152,9 +153,10 @@ public class PlayerMessage extends NetworkMessage {
/** /**
* Parses a message of type SetInitialDiscretePosition * Parses a message of type SetInitialDiscretePosition
*/ */
public static PlayerMessage parseSetInitialDiscretePositionMessage(CircularByteBuffer byteBuffer){ public static PlayerMessage parseSetInitialDiscretePositionMessage(CircularByteBuffer byteBuffer, MessagePool pool){
PlayerMessage rVal = new PlayerMessage(PlayerMessageType.SETINITIALDISCRETEPOSITION); PlayerMessage rVal = (PlayerMessage)pool.get(MessageType.PLAYER_MESSAGE);
stripPacketHeader(byteBuffer); rVal.messageType = PlayerMessageType.SETINITIALDISCRETEPOSITION;
PlayerMessage.stripPacketHeader(byteBuffer);
rVal.setinitialDiscretePositionX(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setinitialDiscretePositionX(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setinitialDiscretePositionY(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setinitialDiscretePositionY(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setinitialDiscretePositionZ(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setinitialDiscretePositionZ(ByteStreamUtils.popIntFromByteQueue(byteBuffer));

View File

@ -71,9 +71,10 @@ public class ServerMessage extends NetworkMessage {
/** /**
* Parses a message of type Ping * Parses a message of type Ping
*/ */
public static ServerMessage parsePingMessage(CircularByteBuffer byteBuffer){ public static ServerMessage parsePingMessage(CircularByteBuffer byteBuffer, MessagePool pool){
ServerMessage rVal = new ServerMessage(ServerMessageType.PING); ServerMessage rVal = (ServerMessage)pool.get(MessageType.SERVER_MESSAGE);
stripPacketHeader(byteBuffer); rVal.messageType = ServerMessageType.PING;
ServerMessage.stripPacketHeader(byteBuffer);
return rVal; return rVal;
} }
@ -89,9 +90,10 @@ public class ServerMessage extends NetworkMessage {
/** /**
* Parses a message of type Pong * Parses a message of type Pong
*/ */
public static ServerMessage parsePongMessage(CircularByteBuffer byteBuffer){ public static ServerMessage parsePongMessage(CircularByteBuffer byteBuffer, MessagePool pool){
ServerMessage rVal = new ServerMessage(ServerMessageType.PONG); ServerMessage rVal = (ServerMessage)pool.get(MessageType.SERVER_MESSAGE);
stripPacketHeader(byteBuffer); rVal.messageType = ServerMessageType.PONG;
ServerMessage.stripPacketHeader(byteBuffer);
return rVal; return rVal;
} }

View File

@ -265,9 +265,10 @@ public class SynchronizationMessage extends NetworkMessage {
/** /**
* Parses a message of type UpdateClientState * Parses a message of type UpdateClientState
*/ */
public static SynchronizationMessage parseUpdateClientStateMessage(CircularByteBuffer byteBuffer){ public static SynchronizationMessage parseUpdateClientStateMessage(CircularByteBuffer byteBuffer, MessagePool pool){
SynchronizationMessage rVal = new SynchronizationMessage(SynchronizationMessageType.UPDATECLIENTSTATE); SynchronizationMessage rVal = (SynchronizationMessage)pool.get(MessageType.SYNCHRONIZATION_MESSAGE);
stripPacketHeader(byteBuffer); rVal.messageType = SynchronizationMessageType.UPDATECLIENTSTATE;
SynchronizationMessage.stripPacketHeader(byteBuffer);
rVal.setentityId(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setentityId(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setbTreeId(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setbTreeId(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setfieldId(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setfieldId(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
@ -322,9 +323,10 @@ public class SynchronizationMessage extends NetworkMessage {
/** /**
* Parses a message of type UpdateClientStringState * Parses a message of type UpdateClientStringState
*/ */
public static SynchronizationMessage parseUpdateClientStringStateMessage(CircularByteBuffer byteBuffer){ public static SynchronizationMessage parseUpdateClientStringStateMessage(CircularByteBuffer byteBuffer, MessagePool pool){
SynchronizationMessage rVal = new SynchronizationMessage(SynchronizationMessageType.UPDATECLIENTSTRINGSTATE); SynchronizationMessage rVal = (SynchronizationMessage)pool.get(MessageType.SYNCHRONIZATION_MESSAGE);
stripPacketHeader(byteBuffer); rVal.messageType = SynchronizationMessageType.UPDATECLIENTSTRINGSTATE;
SynchronizationMessage.stripPacketHeader(byteBuffer);
rVal.setentityId(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setentityId(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setbTreeId(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setbTreeId(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setfieldId(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setfieldId(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
@ -348,9 +350,10 @@ public class SynchronizationMessage extends NetworkMessage {
/** /**
* Parses a message of type UpdateClientIntState * Parses a message of type UpdateClientIntState
*/ */
public static SynchronizationMessage parseUpdateClientIntStateMessage(CircularByteBuffer byteBuffer){ public static SynchronizationMessage parseUpdateClientIntStateMessage(CircularByteBuffer byteBuffer, MessagePool pool){
SynchronizationMessage rVal = new SynchronizationMessage(SynchronizationMessageType.UPDATECLIENTINTSTATE); SynchronizationMessage rVal = (SynchronizationMessage)pool.get(MessageType.SYNCHRONIZATION_MESSAGE);
stripPacketHeader(byteBuffer); rVal.messageType = SynchronizationMessageType.UPDATECLIENTINTSTATE;
SynchronizationMessage.stripPacketHeader(byteBuffer);
rVal.setentityId(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setentityId(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setbTreeId(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setbTreeId(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setfieldId(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setfieldId(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
@ -374,9 +377,10 @@ public class SynchronizationMessage extends NetworkMessage {
/** /**
* Parses a message of type UpdateClientLongState * Parses a message of type UpdateClientLongState
*/ */
public static SynchronizationMessage parseUpdateClientLongStateMessage(CircularByteBuffer byteBuffer){ public static SynchronizationMessage parseUpdateClientLongStateMessage(CircularByteBuffer byteBuffer, MessagePool pool){
SynchronizationMessage rVal = new SynchronizationMessage(SynchronizationMessageType.UPDATECLIENTLONGSTATE); SynchronizationMessage rVal = (SynchronizationMessage)pool.get(MessageType.SYNCHRONIZATION_MESSAGE);
stripPacketHeader(byteBuffer); rVal.messageType = SynchronizationMessageType.UPDATECLIENTLONGSTATE;
SynchronizationMessage.stripPacketHeader(byteBuffer);
rVal.setentityId(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setentityId(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setbTreeId(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setbTreeId(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setfieldId(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setfieldId(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
@ -400,9 +404,10 @@ public class SynchronizationMessage extends NetworkMessage {
/** /**
* Parses a message of type UpdateClientFloatState * Parses a message of type UpdateClientFloatState
*/ */
public static SynchronizationMessage parseUpdateClientFloatStateMessage(CircularByteBuffer byteBuffer){ public static SynchronizationMessage parseUpdateClientFloatStateMessage(CircularByteBuffer byteBuffer, MessagePool pool){
SynchronizationMessage rVal = new SynchronizationMessage(SynchronizationMessageType.UPDATECLIENTFLOATSTATE); SynchronizationMessage rVal = (SynchronizationMessage)pool.get(MessageType.SYNCHRONIZATION_MESSAGE);
stripPacketHeader(byteBuffer); rVal.messageType = SynchronizationMessageType.UPDATECLIENTFLOATSTATE;
SynchronizationMessage.stripPacketHeader(byteBuffer);
rVal.setentityId(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setentityId(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setbTreeId(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setbTreeId(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setfieldId(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setfieldId(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
@ -426,9 +431,10 @@ public class SynchronizationMessage extends NetworkMessage {
/** /**
* Parses a message of type UpdateClientDoubleState * Parses a message of type UpdateClientDoubleState
*/ */
public static SynchronizationMessage parseUpdateClientDoubleStateMessage(CircularByteBuffer byteBuffer){ public static SynchronizationMessage parseUpdateClientDoubleStateMessage(CircularByteBuffer byteBuffer, MessagePool pool){
SynchronizationMessage rVal = new SynchronizationMessage(SynchronizationMessageType.UPDATECLIENTDOUBLESTATE); SynchronizationMessage rVal = (SynchronizationMessage)pool.get(MessageType.SYNCHRONIZATION_MESSAGE);
stripPacketHeader(byteBuffer); rVal.messageType = SynchronizationMessageType.UPDATECLIENTDOUBLESTATE;
SynchronizationMessage.stripPacketHeader(byteBuffer);
rVal.setentityId(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setentityId(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setbTreeId(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setbTreeId(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setfieldId(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setfieldId(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
@ -452,9 +458,10 @@ public class SynchronizationMessage extends NetworkMessage {
/** /**
* Parses a message of type ClientRequestBTreeAction * Parses a message of type ClientRequestBTreeAction
*/ */
public static SynchronizationMessage parseClientRequestBTreeActionMessage(CircularByteBuffer byteBuffer){ public static SynchronizationMessage parseClientRequestBTreeActionMessage(CircularByteBuffer byteBuffer, MessagePool pool){
SynchronizationMessage rVal = new SynchronizationMessage(SynchronizationMessageType.CLIENTREQUESTBTREEACTION); SynchronizationMessage rVal = (SynchronizationMessage)pool.get(MessageType.SYNCHRONIZATION_MESSAGE);
stripPacketHeader(byteBuffer); rVal.messageType = SynchronizationMessageType.CLIENTREQUESTBTREEACTION;
SynchronizationMessage.stripPacketHeader(byteBuffer);
rVal.setentityId(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setentityId(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setbTreeId(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setbTreeId(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setbTreeValue(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setbTreeValue(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
@ -476,9 +483,10 @@ public class SynchronizationMessage extends NetworkMessage {
/** /**
* Parses a message of type ServerNotifyBTreeTransition * Parses a message of type ServerNotifyBTreeTransition
*/ */
public static SynchronizationMessage parseServerNotifyBTreeTransitionMessage(CircularByteBuffer byteBuffer){ public static SynchronizationMessage parseServerNotifyBTreeTransitionMessage(CircularByteBuffer byteBuffer, MessagePool pool){
SynchronizationMessage rVal = new SynchronizationMessage(SynchronizationMessageType.SERVERNOTIFYBTREETRANSITION); SynchronizationMessage rVal = (SynchronizationMessage)pool.get(MessageType.SYNCHRONIZATION_MESSAGE);
stripPacketHeader(byteBuffer); rVal.messageType = SynchronizationMessageType.SERVERNOTIFYBTREETRANSITION;
SynchronizationMessage.stripPacketHeader(byteBuffer);
rVal.setentityId(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setentityId(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setbTreeId(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setbTreeId(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setfieldId(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setfieldId(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
@ -502,9 +510,10 @@ public class SynchronizationMessage extends NetworkMessage {
/** /**
* Parses a message of type AttachTree * Parses a message of type AttachTree
*/ */
public static SynchronizationMessage parseAttachTreeMessage(CircularByteBuffer byteBuffer){ public static SynchronizationMessage parseAttachTreeMessage(CircularByteBuffer byteBuffer, MessagePool pool){
SynchronizationMessage rVal = new SynchronizationMessage(SynchronizationMessageType.ATTACHTREE); SynchronizationMessage rVal = (SynchronizationMessage)pool.get(MessageType.SYNCHRONIZATION_MESSAGE);
stripPacketHeader(byteBuffer); rVal.messageType = SynchronizationMessageType.ATTACHTREE;
SynchronizationMessage.stripPacketHeader(byteBuffer);
rVal.setentityId(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setentityId(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setbTreeId(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setbTreeId(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
return rVal; return rVal;
@ -524,9 +533,10 @@ public class SynchronizationMessage extends NetworkMessage {
/** /**
* Parses a message of type DetatchTree * Parses a message of type DetatchTree
*/ */
public static SynchronizationMessage parseDetatchTreeMessage(CircularByteBuffer byteBuffer){ public static SynchronizationMessage parseDetatchTreeMessage(CircularByteBuffer byteBuffer, MessagePool pool){
SynchronizationMessage rVal = new SynchronizationMessage(SynchronizationMessageType.DETATCHTREE); SynchronizationMessage rVal = (SynchronizationMessage)pool.get(MessageType.SYNCHRONIZATION_MESSAGE);
stripPacketHeader(byteBuffer); rVal.messageType = SynchronizationMessageType.DETATCHTREE;
SynchronizationMessage.stripPacketHeader(byteBuffer);
rVal.setentityId(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setentityId(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setbTreeId(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setbTreeId(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
return rVal; return rVal;
@ -568,9 +578,10 @@ public class SynchronizationMessage extends NetworkMessage {
/** /**
* Parses a message of type LoadScene * Parses a message of type LoadScene
*/ */
public static SynchronizationMessage parseLoadSceneMessage(CircularByteBuffer byteBuffer){ public static SynchronizationMessage parseLoadSceneMessage(CircularByteBuffer byteBuffer, MessagePool pool){
SynchronizationMessage rVal = new SynchronizationMessage(SynchronizationMessageType.LOADSCENE); SynchronizationMessage rVal = (SynchronizationMessage)pool.get(MessageType.SYNCHRONIZATION_MESSAGE);
stripPacketHeader(byteBuffer); rVal.messageType = SynchronizationMessageType.LOADSCENE;
SynchronizationMessage.stripPacketHeader(byteBuffer);
rVal.setstringValue(ByteStreamUtils.popStringFromByteQueue(byteBuffer)); rVal.setstringValue(ByteStreamUtils.popStringFromByteQueue(byteBuffer));
return rVal; return rVal;
} }

View File

@ -546,7 +546,7 @@ public class TerrainMessage extends NetworkMessage {
public static TerrainMessage parseRequestMetadataMessage(CircularByteBuffer byteBuffer, MessagePool pool){ public static TerrainMessage parseRequestMetadataMessage(CircularByteBuffer byteBuffer, MessagePool pool){
TerrainMessage rVal = (TerrainMessage)pool.get(MessageType.TERRAIN_MESSAGE); TerrainMessage rVal = (TerrainMessage)pool.get(MessageType.TERRAIN_MESSAGE);
rVal.messageType = TerrainMessageType.REQUESTMETADATA; rVal.messageType = TerrainMessageType.REQUESTMETADATA;
stripPacketHeader(byteBuffer); TerrainMessage.stripPacketHeader(byteBuffer);
return rVal; return rVal;
} }
@ -565,7 +565,7 @@ public class TerrainMessage extends NetworkMessage {
public static TerrainMessage parseResponseMetadataMessage(CircularByteBuffer byteBuffer, MessagePool pool){ public static TerrainMessage parseResponseMetadataMessage(CircularByteBuffer byteBuffer, MessagePool pool){
TerrainMessage rVal = (TerrainMessage)pool.get(MessageType.TERRAIN_MESSAGE); TerrainMessage rVal = (TerrainMessage)pool.get(MessageType.TERRAIN_MESSAGE);
rVal.messageType = TerrainMessageType.RESPONSEMETADATA; rVal.messageType = TerrainMessageType.RESPONSEMETADATA;
stripPacketHeader(byteBuffer); TerrainMessage.stripPacketHeader(byteBuffer);
rVal.setworldSizeDiscrete(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setworldSizeDiscrete(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setworldMinX(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setworldMinX(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setworldMinY(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setworldMinY(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
@ -598,7 +598,7 @@ public class TerrainMessage extends NetworkMessage {
public static TerrainMessage parseRequestEditVoxelMessage(CircularByteBuffer byteBuffer, MessagePool pool){ public static TerrainMessage parseRequestEditVoxelMessage(CircularByteBuffer byteBuffer, MessagePool pool){
TerrainMessage rVal = (TerrainMessage)pool.get(MessageType.TERRAIN_MESSAGE); TerrainMessage rVal = (TerrainMessage)pool.get(MessageType.TERRAIN_MESSAGE);
rVal.messageType = TerrainMessageType.REQUESTEDITVOXEL; rVal.messageType = TerrainMessageType.REQUESTEDITVOXEL;
stripPacketHeader(byteBuffer); TerrainMessage.stripPacketHeader(byteBuffer);
rVal.setworldX(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setworldX(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setworldY(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setworldY(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setworldZ(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setworldZ(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
@ -633,7 +633,7 @@ public class TerrainMessage extends NetworkMessage {
public static TerrainMessage parseUpdateVoxelMessage(CircularByteBuffer byteBuffer, MessagePool pool){ public static TerrainMessage parseUpdateVoxelMessage(CircularByteBuffer byteBuffer, MessagePool pool){
TerrainMessage rVal = (TerrainMessage)pool.get(MessageType.TERRAIN_MESSAGE); TerrainMessage rVal = (TerrainMessage)pool.get(MessageType.TERRAIN_MESSAGE);
rVal.messageType = TerrainMessageType.UPDATEVOXEL; rVal.messageType = TerrainMessageType.UPDATEVOXEL;
stripPacketHeader(byteBuffer); TerrainMessage.stripPacketHeader(byteBuffer);
rVal.setworldX(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setworldX(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setworldY(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setworldY(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setworldZ(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setworldZ(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
@ -668,7 +668,7 @@ public class TerrainMessage extends NetworkMessage {
public static TerrainMessage parseRequestUseTerrainPaletteMessage(CircularByteBuffer byteBuffer, MessagePool pool){ public static TerrainMessage parseRequestUseTerrainPaletteMessage(CircularByteBuffer byteBuffer, MessagePool pool){
TerrainMessage rVal = (TerrainMessage)pool.get(MessageType.TERRAIN_MESSAGE); TerrainMessage rVal = (TerrainMessage)pool.get(MessageType.TERRAIN_MESSAGE);
rVal.messageType = TerrainMessageType.REQUESTUSETERRAINPALETTE; rVal.messageType = TerrainMessageType.REQUESTUSETERRAINPALETTE;
stripPacketHeader(byteBuffer); TerrainMessage.stripPacketHeader(byteBuffer);
rVal.setrealLocationX(ByteStreamUtils.popDoubleFromByteQueue(byteBuffer)); rVal.setrealLocationX(ByteStreamUtils.popDoubleFromByteQueue(byteBuffer));
rVal.setrealLocationY(ByteStreamUtils.popDoubleFromByteQueue(byteBuffer)); rVal.setrealLocationY(ByteStreamUtils.popDoubleFromByteQueue(byteBuffer));
rVal.setrealLocationZ(ByteStreamUtils.popDoubleFromByteQueue(byteBuffer)); rVal.setrealLocationZ(ByteStreamUtils.popDoubleFromByteQueue(byteBuffer));
@ -699,7 +699,7 @@ public class TerrainMessage extends NetworkMessage {
public static TerrainMessage parseSpawnPositionMessage(CircularByteBuffer byteBuffer, MessagePool pool){ public static TerrainMessage parseSpawnPositionMessage(CircularByteBuffer byteBuffer, MessagePool pool){
TerrainMessage rVal = (TerrainMessage)pool.get(MessageType.TERRAIN_MESSAGE); TerrainMessage rVal = (TerrainMessage)pool.get(MessageType.TERRAIN_MESSAGE);
rVal.messageType = TerrainMessageType.SPAWNPOSITION; rVal.messageType = TerrainMessageType.SPAWNPOSITION;
stripPacketHeader(byteBuffer); TerrainMessage.stripPacketHeader(byteBuffer);
rVal.setrealLocationX(ByteStreamUtils.popDoubleFromByteQueue(byteBuffer)); rVal.setrealLocationX(ByteStreamUtils.popDoubleFromByteQueue(byteBuffer));
rVal.setrealLocationY(ByteStreamUtils.popDoubleFromByteQueue(byteBuffer)); rVal.setrealLocationY(ByteStreamUtils.popDoubleFromByteQueue(byteBuffer));
rVal.setrealLocationZ(ByteStreamUtils.popDoubleFromByteQueue(byteBuffer)); rVal.setrealLocationZ(ByteStreamUtils.popDoubleFromByteQueue(byteBuffer));
@ -724,7 +724,7 @@ public class TerrainMessage extends NetworkMessage {
public static TerrainMessage parseRequestChunkDataMessage(CircularByteBuffer byteBuffer, MessagePool pool){ public static TerrainMessage parseRequestChunkDataMessage(CircularByteBuffer byteBuffer, MessagePool pool){
TerrainMessage rVal = (TerrainMessage)pool.get(MessageType.TERRAIN_MESSAGE); TerrainMessage rVal = (TerrainMessage)pool.get(MessageType.TERRAIN_MESSAGE);
rVal.messageType = TerrainMessageType.REQUESTCHUNKDATA; rVal.messageType = TerrainMessageType.REQUESTCHUNKDATA;
stripPacketHeader(byteBuffer); TerrainMessage.stripPacketHeader(byteBuffer);
rVal.setworldX(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setworldX(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setworldY(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setworldY(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setworldZ(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setworldZ(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
@ -780,7 +780,7 @@ public class TerrainMessage extends NetworkMessage {
public static TerrainMessage parsesendChunkDataMessage(CircularByteBuffer byteBuffer, MessagePool pool){ public static TerrainMessage parsesendChunkDataMessage(CircularByteBuffer byteBuffer, MessagePool pool){
TerrainMessage rVal = (TerrainMessage)pool.get(MessageType.TERRAIN_MESSAGE); TerrainMessage rVal = (TerrainMessage)pool.get(MessageType.TERRAIN_MESSAGE);
rVal.messageType = TerrainMessageType.SENDCHUNKDATA; rVal.messageType = TerrainMessageType.SENDCHUNKDATA;
stripPacketHeader(byteBuffer); TerrainMessage.stripPacketHeader(byteBuffer);
rVal.setworldX(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setworldX(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setworldY(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setworldY(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setworldZ(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setworldZ(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
@ -807,7 +807,7 @@ public class TerrainMessage extends NetworkMessage {
public static TerrainMessage parseRequestReducedChunkDataMessage(CircularByteBuffer byteBuffer, MessagePool pool){ public static TerrainMessage parseRequestReducedChunkDataMessage(CircularByteBuffer byteBuffer, MessagePool pool){
TerrainMessage rVal = (TerrainMessage)pool.get(MessageType.TERRAIN_MESSAGE); TerrainMessage rVal = (TerrainMessage)pool.get(MessageType.TERRAIN_MESSAGE);
rVal.messageType = TerrainMessageType.REQUESTREDUCEDCHUNKDATA; rVal.messageType = TerrainMessageType.REQUESTREDUCEDCHUNKDATA;
stripPacketHeader(byteBuffer); TerrainMessage.stripPacketHeader(byteBuffer);
rVal.setworldX(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setworldX(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setworldY(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setworldY(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setworldZ(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setworldZ(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
@ -871,7 +871,7 @@ public class TerrainMessage extends NetworkMessage {
public static TerrainMessage parseSendReducedChunkDataMessage(CircularByteBuffer byteBuffer, MessagePool pool){ public static TerrainMessage parseSendReducedChunkDataMessage(CircularByteBuffer byteBuffer, MessagePool pool){
TerrainMessage rVal = (TerrainMessage)pool.get(MessageType.TERRAIN_MESSAGE); TerrainMessage rVal = (TerrainMessage)pool.get(MessageType.TERRAIN_MESSAGE);
rVal.messageType = TerrainMessageType.SENDREDUCEDCHUNKDATA; rVal.messageType = TerrainMessageType.SENDREDUCEDCHUNKDATA;
stripPacketHeader(byteBuffer); TerrainMessage.stripPacketHeader(byteBuffer);
rVal.setworldX(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setworldX(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setworldY(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setworldY(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setworldZ(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setworldZ(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
@ -902,7 +902,7 @@ public class TerrainMessage extends NetworkMessage {
public static TerrainMessage parseRequestReducedBlockDataMessage(CircularByteBuffer byteBuffer, MessagePool pool){ public static TerrainMessage parseRequestReducedBlockDataMessage(CircularByteBuffer byteBuffer, MessagePool pool){
TerrainMessage rVal = (TerrainMessage)pool.get(MessageType.TERRAIN_MESSAGE); TerrainMessage rVal = (TerrainMessage)pool.get(MessageType.TERRAIN_MESSAGE);
rVal.messageType = TerrainMessageType.REQUESTREDUCEDBLOCKDATA; rVal.messageType = TerrainMessageType.REQUESTREDUCEDBLOCKDATA;
stripPacketHeader(byteBuffer); TerrainMessage.stripPacketHeader(byteBuffer);
rVal.setworldX(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setworldX(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setworldY(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setworldY(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setworldZ(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setworldZ(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
@ -966,7 +966,7 @@ public class TerrainMessage extends NetworkMessage {
public static TerrainMessage parseSendReducedBlockDataMessage(CircularByteBuffer byteBuffer, MessagePool pool){ public static TerrainMessage parseSendReducedBlockDataMessage(CircularByteBuffer byteBuffer, MessagePool pool){
TerrainMessage rVal = (TerrainMessage)pool.get(MessageType.TERRAIN_MESSAGE); TerrainMessage rVal = (TerrainMessage)pool.get(MessageType.TERRAIN_MESSAGE);
rVal.messageType = TerrainMessageType.SENDREDUCEDBLOCKDATA; rVal.messageType = TerrainMessageType.SENDREDUCEDBLOCKDATA;
stripPacketHeader(byteBuffer); TerrainMessage.stripPacketHeader(byteBuffer);
rVal.setworldX(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setworldX(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setworldY(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setworldY(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setworldZ(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setworldZ(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
@ -997,7 +997,7 @@ public class TerrainMessage extends NetworkMessage {
public static TerrainMessage parseUpdateBlockMessage(CircularByteBuffer byteBuffer, MessagePool pool){ public static TerrainMessage parseUpdateBlockMessage(CircularByteBuffer byteBuffer, MessagePool pool){
TerrainMessage rVal = (TerrainMessage)pool.get(MessageType.TERRAIN_MESSAGE); TerrainMessage rVal = (TerrainMessage)pool.get(MessageType.TERRAIN_MESSAGE);
rVal.messageType = TerrainMessageType.UPDATEBLOCK; rVal.messageType = TerrainMessageType.UPDATEBLOCK;
stripPacketHeader(byteBuffer); TerrainMessage.stripPacketHeader(byteBuffer);
rVal.setworldX(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setworldX(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setworldY(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setworldY(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setworldZ(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setworldZ(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
@ -1032,7 +1032,7 @@ public class TerrainMessage extends NetworkMessage {
public static TerrainMessage parseRequestFluidDataMessage(CircularByteBuffer byteBuffer, MessagePool pool){ public static TerrainMessage parseRequestFluidDataMessage(CircularByteBuffer byteBuffer, MessagePool pool){
TerrainMessage rVal = (TerrainMessage)pool.get(MessageType.TERRAIN_MESSAGE); TerrainMessage rVal = (TerrainMessage)pool.get(MessageType.TERRAIN_MESSAGE);
rVal.messageType = TerrainMessageType.REQUESTFLUIDDATA; rVal.messageType = TerrainMessageType.REQUESTFLUIDDATA;
stripPacketHeader(byteBuffer); TerrainMessage.stripPacketHeader(byteBuffer);
rVal.setworldX(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setworldX(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setworldY(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setworldY(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setworldZ(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setworldZ(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
@ -1088,7 +1088,7 @@ public class TerrainMessage extends NetworkMessage {
public static TerrainMessage parsesendFluidDataMessage(CircularByteBuffer byteBuffer, MessagePool pool){ public static TerrainMessage parsesendFluidDataMessage(CircularByteBuffer byteBuffer, MessagePool pool){
TerrainMessage rVal = (TerrainMessage)pool.get(MessageType.TERRAIN_MESSAGE); TerrainMessage rVal = (TerrainMessage)pool.get(MessageType.TERRAIN_MESSAGE);
rVal.messageType = TerrainMessageType.SENDFLUIDDATA; rVal.messageType = TerrainMessageType.SENDFLUIDDATA;
stripPacketHeader(byteBuffer); TerrainMessage.stripPacketHeader(byteBuffer);
rVal.setworldX(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setworldX(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setworldY(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setworldY(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setworldZ(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setworldZ(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
@ -1146,7 +1146,7 @@ public class TerrainMessage extends NetworkMessage {
public static TerrainMessage parseupdateFluidDataMessage(CircularByteBuffer byteBuffer, MessagePool pool){ public static TerrainMessage parseupdateFluidDataMessage(CircularByteBuffer byteBuffer, MessagePool pool){
TerrainMessage rVal = (TerrainMessage)pool.get(MessageType.TERRAIN_MESSAGE); TerrainMessage rVal = (TerrainMessage)pool.get(MessageType.TERRAIN_MESSAGE);
rVal.messageType = TerrainMessageType.UPDATEFLUIDDATA; rVal.messageType = TerrainMessageType.UPDATEFLUIDDATA;
stripPacketHeader(byteBuffer); TerrainMessage.stripPacketHeader(byteBuffer);
rVal.setworldX(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setworldX(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setworldY(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setworldY(ByteStreamUtils.popIntFromByteQueue(byteBuffer));
rVal.setworldZ(ByteStreamUtils.popIntFromByteQueue(byteBuffer)); rVal.setworldZ(ByteStreamUtils.popIntFromByteQueue(byteBuffer));

View File

@ -43,16 +43,16 @@ public class NetworkParser {
* The queue of outgoing messages that have yet to be sent * The queue of outgoing messages that have yet to be sent
*/ */
CopyOnWriteArrayList<NetworkMessage> outgoingMessageQueue = new CopyOnWriteArrayList<NetworkMessage>(); CopyOnWriteArrayList<NetworkMessage> outgoingMessageQueue = new CopyOnWriteArrayList<NetworkMessage>();
/**
* The byte buffer for storing incoming bytes
*/
CircularByteBuffer incomingByteBuffer = new CircularByteBuffer(CIRCULAR_BUFFER_SIZE);
/** /**
* Message object pool * Message object pool
*/ */
MessagePool pool = new MessagePool(); MessagePool pool = new MessagePool();
/**
* The byte buffer for storing incoming bytes
*/
CircularByteBuffer incomingByteBuffer = new CircularByteBuffer(CIRCULAR_BUFFER_SIZE);
/** /**
* The block array used to read blocks of bytes in * The block array used to read blocks of bytes in
@ -110,7 +110,7 @@ public class NetworkParser {
for(NetworkMessage message : outgoingMessageQueue){ for(NetworkMessage message : outgoingMessageQueue){
outgoingMessageQueue.remove(message); outgoingMessageQueue.remove(message);
outgoingStream.write(message.getRawBytes()); outgoingStream.write(message.getRawBytes());
pool.release(message); this.pool.release(message);
} }
} }
@ -169,5 +169,13 @@ public class NetworkParser {
public void release(NetworkMessage message){ public void release(NetworkMessage message){
this.pool.release(message); this.pool.release(message);
} }
/**
* Gets the message pool
* @return The message pool
*/
public MessagePool getMessagePool(){
return this.pool;
}
} }

View File

@ -129,6 +129,7 @@ public class ServerConnectionHandler implements Runnable {
if(this.local){ if(this.local){
//run if serverconnectionHandler is created by passing in input/output streams //run if serverconnectionHandler is created by passing in input/output streams
networkParser = new NetworkParser(inputStream,outputStream); networkParser = new NetworkParser(inputStream,outputStream);
networkParser.getMessagePool().setAlwaysAllocate(true);
messageProtocol = new MessageProtocol(this); messageProtocol = new MessageProtocol(this);
} else { } else {
//run if ServerConnectionHandler is created by passing in a socket //run if ServerConnectionHandler is created by passing in a socket