mirror of
https://github.com/mangosfour/server.git
synced 2025-12-15 10:37:02 +00:00
[7929] Some fixes and optimizations for work with packet guids.
* Allocate only minimal required buffer size for object packet guid cache, avoid it realocation. * At adding aboyher buffer content copy only until wpos (really writed to buffer data) * In appendPackGUID check buffer size before data write.
This commit is contained in:
parent
0bfcc44bb8
commit
fb45529eff
4 changed files with 8 additions and 6 deletions
|
|
@ -63,7 +63,7 @@ uint32 GuidHigh2TypeId(uint32 guid_hi)
|
||||||
return NUM_CLIENT_OBJECT_TYPES; // unknown
|
return NUM_CLIENT_OBJECT_TYPES; // unknown
|
||||||
}
|
}
|
||||||
|
|
||||||
Object::Object( )
|
Object::Object( ) : m_PackGUID(sizeof(uint64)+1)
|
||||||
{
|
{
|
||||||
m_objectTypeId = TYPEID_OBJECT;
|
m_objectTypeId = TYPEID_OBJECT;
|
||||||
m_objectType = TYPEMASK_OBJECT;
|
m_objectType = TYPEMASK_OBJECT;
|
||||||
|
|
@ -75,7 +75,6 @@ Object::Object( )
|
||||||
m_inWorld = false;
|
m_inWorld = false;
|
||||||
m_objectUpdated = false;
|
m_objectUpdated = false;
|
||||||
|
|
||||||
m_PackGUID.clear();
|
|
||||||
m_PackGUID.appendPackGUID(0);
|
m_PackGUID.appendPackGUID(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -118,7 +117,7 @@ void Object::_Create( uint32 guidlow, uint32 entry, HighGuid guidhigh )
|
||||||
uint64 guid = MAKE_NEW_GUID(guidlow, entry, guidhigh);
|
uint64 guid = MAKE_NEW_GUID(guidlow, entry, guidhigh);
|
||||||
SetUInt64Value( OBJECT_FIELD_GUID, guid );
|
SetUInt64Value( OBJECT_FIELD_GUID, guid );
|
||||||
SetUInt32Value( OBJECT_FIELD_TYPE, m_objectType );
|
SetUInt32Value( OBJECT_FIELD_TYPE, m_objectType );
|
||||||
m_PackGUID.clear();
|
m_PackGUID.wpos(0);
|
||||||
m_PackGUID.appendPackGUID(GetGUID());
|
m_PackGUID.appendPackGUID(GetGUID());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3414,7 +3414,7 @@ void Aura::HandleAuraModStun(bool apply, bool Real)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_target->SetUnitMovementFlags(0); // Clear movement flags
|
m_target->SetUnitMovementFlags(0); // Clear movement flags
|
||||||
m_target->SetStandState(UNIT_STAND_STATE_STAND);
|
m_target->SetStandState(UNIT_STAND_STATE_STAND);// in 1.5 client
|
||||||
}
|
}
|
||||||
|
|
||||||
WorldPacket data(SMSG_FORCE_MOVE_ROOT, 8);
|
WorldPacket data(SMSG_FORCE_MOVE_ROOT, 8);
|
||||||
|
|
|
||||||
|
|
@ -309,11 +309,14 @@ class ByteBuffer
|
||||||
}
|
}
|
||||||
void append(const ByteBuffer& buffer)
|
void append(const ByteBuffer& buffer)
|
||||||
{
|
{
|
||||||
if(buffer.size()) append(buffer.contents(),buffer.size());
|
if(buffer.size()) append(buffer.contents(),buffer.wpos());
|
||||||
}
|
}
|
||||||
|
|
||||||
void appendPackGUID(uint64 guid)
|
void appendPackGUID(uint64 guid)
|
||||||
{
|
{
|
||||||
|
if (_storage.size() < _wpos + sizeof(guid) + 1)
|
||||||
|
_storage.resize(_wpos + sizeof(guid) + 1);
|
||||||
|
|
||||||
size_t mask_position = wpos();
|
size_t mask_position = wpos();
|
||||||
*this << uint8(0);
|
*this << uint8(0);
|
||||||
for(uint8 i = 0; i < 8; i++)
|
for(uint8 i = 0; i < 8; i++)
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#ifndef __REVISION_NR_H__
|
#ifndef __REVISION_NR_H__
|
||||||
#define __REVISION_NR_H__
|
#define __REVISION_NR_H__
|
||||||
#define REVISION_NR "7928"
|
#define REVISION_NR "7929"
|
||||||
#endif // __REVISION_NR_H__
|
#endif // __REVISION_NR_H__
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue