Files
FlaxEngine/Source/Engine/Networking/NetworkMessage.h
2021-03-11 18:08:12 +01:00

49 lines
1.1 KiB
C++

// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved.
#pragma once
#include "Engine/Scripting/ScriptingType.h"
API_STRUCT(Namespace="FlaxEngine.Networking") struct FLAXENGINE_API NetworkMessage
{
DECLARE_SCRIPTING_TYPE_MINIMAL(NetworkMessage);
public:
API_FIELD()
uint8* Buffer = nullptr;
API_FIELD()
uint32 MessageId = 0; // TODO: Make it read-only
API_FIELD()
uint32 BufferSize = 0;
API_FIELD()
uint32 Length = 0;
API_FIELD()
uint32 Position = 0;
public:
NetworkMessage() = default;
NetworkMessage(uint8* buffer, uint32 messageId, uint32 bufferSize, uint32 length, uint32 position) :
Buffer(buffer), MessageId(messageId), BufferSize(bufferSize), Length(length), Position(position)
{ }
~NetworkMessage() = default;
public:
void WriteBytes(uint8* bytes, int numBytes);
void ReadBytes(uint8* bytes, int numBytes);
public:
void WriteUInt32(uint32 value); // TODO: Macro the shit out of this
uint32 ReadUInt32();
public:
bool IsValid() const
{
return Buffer != nullptr && BufferSize > 0;
}
};