ObjectDeliverer
                                
                                 ObjectDeliverer copied to clipboard
                                
                                    ObjectDeliverer copied to clipboard
                            
                            
                            
                        ObjectDeliverer is a data transmission / reception library for Unreal Engine (C ++, Blueprint).
ObjectDeliverer
UE4 Marketplace
https://www.unrealengine.com/marketplace/ja/slug/objectdeliverer
Description
ObjectDeliverer is a data transmission / reception library for Unreal Engine (C ++, Blueprint).
It has the following features.
- Communication protocol, data division rule, serialization method can be switched by part replacement.
- Available for both C ++ and Blueprint
Relationship between branch and UE4 Engine version
The master branch supports UE4 4.25 and above. 4.24 and below cannot be built. if you use 4.24 or below, please use the "lessthan_425" branch.
| Engine Version | branch | 
|---|---|
| 4.25 or adove | master | 
| 4.24 or less | lessthan_425 | 
Communication protocol
The following protocols can be used with built-in. You can also add your own protocol.
- TCP/IP Server(Connectable to multiple clients)
- TCP/IP Client
- UDP(Sender)
- UDP(Receiver)
- Shared Memory(Windows Only)
- LogFile Writer
- LogFile Reader
Data division rule
The following rules are available for built-in split rules of transmitted and received data.
- 
FixedSize 
 Example) In the case of fixed 1024 bytes 
- 
Header(BodySize) + Body 
 Example) When the size area is 4 bytes
  
- 
Split by terminal symbol 
 Example) When 0x00 is the end 
Serialization method
- Byte Array
- UTF-8 string
- Object(Json)
Installation
- Please clone this repository
- Please copy the Plugins directory to the project folder
- Please activate ObjectDeliverer from Plugins after launching editor
Quick Start
- Create an ObjectDelivererManager
- Create a DeliveryBox(If you wish to send and receive data other than binary)
- Set the send / receive protocol and PacketRule, then start the ObjectDelivererManager

void UMyClass::Start()
{
    auto deliverer = UObjectDelivererManager::CreateObjectDelivererManager();
    // bind connected event
    deliverer->Connected.AddDynamic(this, &UMyClass::OnConnect);
    // bind disconnected event
    deliverer->Disconnected.AddDynamic(this, &UMyClass::OnDisConnect);
    // bind receive event
    deliverer->ReceiveData.AddDynamic(this, &UMyClass::OnReceive);
    // start deliverer
    // + protocol : TCP/IP Server
    // + Data division rule : Header(BodySize) + Body
    // + Serialization method : Byte Array
    deliverer->Start(UProtocolFactory::CreateProtocolTcpIpServer(9099),
                     UPacketRuleFactory::CreatePacketRuleSizeBody());
}
void UMyClass::OnConnect(UObjectDelivererProtocol* ClientSocket)
{
    // send data
    TArray<uint8> buffer;
    deliverer->Send(buffer);
}
void UMyClass::OnDisConnect(UObjectDelivererProtocol* ClientSocket)
{
    // closed
    UE_LOG(LogTemp, Log, TEXT("closed"));
}
void UMyClass::OnReceive(UObjectDelivererProtocol* ClientSocket, const TArray<uint8>& Buffer)
{
    // received data buffer
}
How to use each function
Look at the Wiki https://github.com/ayumax/ObjectDeliverer/wiki