70 lines
1.7 KiB
C++
70 lines
1.7 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#pragma once
|
|
|
|
#include "OnlineSubsystemSteamTypes.h"
|
|
#include "NboSerializerOSS.h"
|
|
|
|
/**
|
|
* Serializes data in network byte order form into a buffer
|
|
*/
|
|
class FNboSerializeToBufferSteam : public FNboSerializeToBufferOSS
|
|
{
|
|
public:
|
|
/** Default constructor zeros num bytes*/
|
|
FNboSerializeToBufferSteam() :
|
|
FNboSerializeToBufferOSS(512)
|
|
{
|
|
}
|
|
|
|
/** Constructor specifying the size to use */
|
|
FNboSerializeToBufferSteam(uint32 Size) :
|
|
FNboSerializeToBufferOSS(Size)
|
|
{
|
|
}
|
|
|
|
/**
|
|
* Adds Steam session info to the buffer
|
|
*/
|
|
friend inline FNboSerializeToBufferSteam& operator<<(FNboSerializeToBufferSteam& Ar, const FOnlineSessionInfoSteam& SessionInfo)
|
|
{
|
|
check(SessionInfo.HostAddr.IsValid());
|
|
// Skip SessionType (assigned at creation)
|
|
((FNboSerializeToBuffer&)Ar) << *SessionInfo.HostAddr;
|
|
((FNboSerializeToBuffer&)Ar) << SessionInfo.SessionId->UniqueNetId;
|
|
return Ar;
|
|
}
|
|
};
|
|
|
|
/**
|
|
* Class used to write data into packets for sending via system link
|
|
*/
|
|
class FNboSerializeFromBufferSteam : public FNboSerializeFromBufferOSS
|
|
{
|
|
public:
|
|
/**
|
|
* Initializes the buffer, size, and zeros the read offset
|
|
*/
|
|
FNboSerializeFromBufferSteam(uint8* Packet,int32 Length) :
|
|
FNboSerializeFromBufferOSS(Packet,Length)
|
|
{
|
|
}
|
|
|
|
/**
|
|
* Reads Steam session info from the buffer
|
|
*/
|
|
friend inline FNboSerializeFromBufferSteam& operator>>(FNboSerializeFromBufferSteam& Ar, FOnlineSessionInfoSteam& SessionInfo)
|
|
{
|
|
check(SessionInfo.HostAddr.IsValid());
|
|
|
|
// Skip SessionType (assigned at creation)
|
|
Ar >> *SessionInfo.HostAddr;
|
|
|
|
uint64 SessionId;
|
|
Ar >> SessionId;
|
|
SessionInfo.SessionId = FUniqueNetIdSteam::Create(SessionId);
|
|
|
|
return Ar;
|
|
}
|
|
};
|