优化 FKCPWrap
修复 Log 乱码 允许直接获取 KCPCB 添加 DebugName 区分不同 KCP 对象
This commit is contained in:
parent
d2877f6b10
commit
39be28a997
27
Source/ThirdParty/KCP/Private/KCPWrap.cpp
vendored
27
Source/ThirdParty/KCP/Private/KCPWrap.cpp
vendored
@ -13,22 +13,35 @@ namespace FKCPFuncWrap
|
|||||||
|
|
||||||
void Writelog(const char* log, ikcpcb* kcp, void* user)
|
void Writelog(const char* log, ikcpcb* kcp, void* user)
|
||||||
{
|
{
|
||||||
UE_LOG(LogKCP, Log, TEXT("[%i]: %s"), kcp->conv, log);
|
FKCPWrap* KCPWrap = (FKCPWrap*)user;
|
||||||
|
UE_LOG(LogKCP, Log, TEXT("%s: %s"), *KCPWrap->GetDebugName(), ANSI_TO_TCHAR(log));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
FKCPWrap::FKCPWrap(uint32 Conv)
|
FKCPWrap::FKCPWrap(uint32 Conv)
|
||||||
|
: KCPPtr(ikcp_create(Conv, this))
|
||||||
|
, DebugName(FString::Printf(TEXT("[%i]"), Conv))
|
||||||
{
|
{
|
||||||
KCPPtr = ikcp_create(Conv, this);
|
|
||||||
KCPPtr->output = &FKCPFuncWrap::Output;
|
KCPPtr->output = &FKCPFuncWrap::Output;
|
||||||
KCPPtr->writelog = &FKCPFuncWrap::Writelog;
|
KCPPtr->writelog = &FKCPFuncWrap::Writelog;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FKCPWrap::FKCPWrap(uint32 Conv, const FString & InDebugName)
|
||||||
|
: FKCPWrap(Conv)
|
||||||
|
{
|
||||||
|
DebugName = InDebugName;
|
||||||
|
}
|
||||||
|
|
||||||
FKCPWrap::~FKCPWrap()
|
FKCPWrap::~FKCPWrap()
|
||||||
{
|
{
|
||||||
ikcp_release(KCPPtr);
|
ikcp_release(KCPPtr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ikcpcb & FKCPWrap::GetKCPCB()
|
||||||
|
{
|
||||||
|
return *KCPPtr;
|
||||||
|
}
|
||||||
|
|
||||||
int FKCPWrap::Recv(uint8 * Data, int32 Count)
|
int FKCPWrap::Recv(uint8 * Data, int32 Count)
|
||||||
{
|
{
|
||||||
return ikcp_recv(KCPPtr, (char*)Data, Count);
|
return ikcp_recv(KCPPtr, (char*)Data, Count);
|
||||||
@ -93,3 +106,13 @@ int FKCPWrap::SetTurboMode()
|
|||||||
{
|
{
|
||||||
return SetNoDelay(1, 10, 2, 1);
|
return SetNoDelay(1, 10, 2, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FKCPWrap::SetDebugName(const FString & InDebugName)
|
||||||
|
{
|
||||||
|
DebugName = InDebugName;
|
||||||
|
}
|
||||||
|
|
||||||
|
const FString & FKCPWrap::GetDebugName() const
|
||||||
|
{
|
||||||
|
return DebugName;
|
||||||
|
}
|
||||||
|
12
Source/ThirdParty/KCP/Public/KCPWrap.h
vendored
12
Source/ThirdParty/KCP/Public/KCPWrap.h
vendored
@ -9,8 +9,12 @@ public:
|
|||||||
|
|
||||||
FKCPWrap(uint32 Conv);
|
FKCPWrap(uint32 Conv);
|
||||||
|
|
||||||
|
FKCPWrap(uint32 Conv, const FString& InDebugName);
|
||||||
|
|
||||||
~FKCPWrap();
|
~FKCPWrap();
|
||||||
|
|
||||||
|
ikcpcb& GetKCPCB();
|
||||||
|
|
||||||
int Recv(uint8* Data, int32 Count);
|
int Recv(uint8* Data, int32 Count);
|
||||||
|
|
||||||
int Send(const uint8* Data, int32 Count);
|
int Send(const uint8* Data, int32 Count);
|
||||||
@ -37,10 +41,16 @@ public:
|
|||||||
|
|
||||||
int SetTurboMode();
|
int SetTurboMode();
|
||||||
|
|
||||||
TFunction<int(const uint8* Data, int32 Count)> OutputFunc;
|
TFunction<int32(const uint8* Data, int32 Count)> OutputFunc;
|
||||||
|
|
||||||
|
void SetDebugName(const FString& InDebugName);
|
||||||
|
|
||||||
|
const FString& GetDebugName() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
ikcpcb* KCPPtr;
|
ikcpcb* KCPPtr;
|
||||||
|
|
||||||
|
FString DebugName;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user