mirror of
https://github.com/melonDS-emu/melonDS.git
synced 2025-07-25 15:19:53 -06:00
get enet going, I guess
still very experimental
This commit is contained in:
@ -28,8 +28,19 @@
|
||||
namespace Netplay
|
||||
{
|
||||
|
||||
bool Active;
|
||||
bool IsHost;
|
||||
|
||||
ENetHost* Host;
|
||||
ENetPeer* Peer;
|
||||
|
||||
|
||||
bool Init()
|
||||
{
|
||||
Active = false;
|
||||
IsHost = false;
|
||||
Host = nullptr;
|
||||
|
||||
if (enet_initialize() != 0)
|
||||
{
|
||||
printf("enet shat itself :(\n");
|
||||
@ -45,4 +56,89 @@ void DeInit()
|
||||
enet_deinitialize();
|
||||
}
|
||||
|
||||
|
||||
void StartHost()
|
||||
{
|
||||
ENetAddress addr;
|
||||
addr.host = ENET_HOST_ANY;
|
||||
addr.port = 8064;
|
||||
|
||||
// TODO determine proper number of clients/channels
|
||||
Host = enet_host_create(&addr, 16, 16, 0, 0);
|
||||
if (!Host)
|
||||
{
|
||||
printf("host shat itself :(\n");
|
||||
return;
|
||||
}
|
||||
|
||||
Active = true;
|
||||
IsHost = true;
|
||||
}
|
||||
|
||||
void StartClient()
|
||||
{
|
||||
// TODO determine proper number of clients/channels
|
||||
Host = enet_host_create(nullptr, 16, 16, 0, 0);
|
||||
if (!Host)
|
||||
{
|
||||
printf("client shat itself :(\n");
|
||||
return;
|
||||
}
|
||||
|
||||
printf("client created, connecting\n");
|
||||
|
||||
ENetAddress addr;
|
||||
enet_address_set_host(&addr, "127.0.0.1"); // TODO!!!!
|
||||
addr.port = 8064;
|
||||
Peer = enet_host_connect(Host, &addr, 2, 0);
|
||||
if (!Peer)
|
||||
{
|
||||
printf("connect shat itself :(\n");
|
||||
return;
|
||||
}
|
||||
|
||||
ENetEvent event;
|
||||
bool conn = false;
|
||||
if (enet_host_service(Host, &event, 5000) > 0)
|
||||
{
|
||||
if (event.type == ENET_EVENT_TYPE_CONNECT)
|
||||
{
|
||||
printf("connected!\n");
|
||||
conn = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (!conn)
|
||||
{
|
||||
printf("connection failed\n");
|
||||
enet_peer_reset(Peer);
|
||||
}
|
||||
|
||||
Active = true;
|
||||
IsHost = false;
|
||||
}
|
||||
|
||||
|
||||
void ProcessFrame()
|
||||
{
|
||||
ENetEvent event;
|
||||
while (enet_host_service(Host, &event, 0) > 0)
|
||||
{
|
||||
switch (event.type)
|
||||
{
|
||||
case ENET_EVENT_TYPE_CONNECT:
|
||||
printf("client connected %08X %d\n", event.peer->address.host, event.peer->address.port);
|
||||
break;
|
||||
|
||||
case ENET_EVENT_TYPE_DISCONNECT:
|
||||
printf("client disconnected %08X %d\n", event.peer->address.host, event.peer->address.port);
|
||||
break;
|
||||
|
||||
case ENET_EVENT_TYPE_RECEIVE:
|
||||
printf("received shit\n");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user