mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-24 06:39:46 -06:00
Moved Traversal Client code over from old netplay
Moved over gui code for copying host code added gui to netplay diag setup to switch between direct and traversal connection
This commit is contained in:
96
Source/Core/Common/TraversalProto.h
Normal file
96
Source/Core/Common/TraversalProto.h
Normal file
@ -0,0 +1,96 @@
|
||||
// This file is public domain, in case it's useful to anyone. -comex
|
||||
|
||||
#pragma once
|
||||
#include <array>
|
||||
#include "Common/CommonTypes.h"
|
||||
|
||||
|
||||
typedef std::array<char, 8> TraversalHostId;
|
||||
typedef u64 TraversalRequestId;
|
||||
|
||||
enum TraversalPacketType
|
||||
{
|
||||
// [*->*]
|
||||
TraversalPacketAck = 0,
|
||||
// [c->s]
|
||||
TraversalPacketPing = 1,
|
||||
// [c->s]
|
||||
TraversalPacketHelloFromClient = 2,
|
||||
// [s->c]
|
||||
TraversalPacketHelloFromServer = 3,
|
||||
// [c->s] When connecting, first the client asks the central server...
|
||||
TraversalPacketConnectPlease = 4,
|
||||
// [s->c] ...who asks the game host to send a UDP packet to the
|
||||
// client... (an ack implies success)
|
||||
TraversalPacketPleaseSendPacket = 5,
|
||||
// [s->c] ...which the central server relays back to the client.
|
||||
TraversalPacketConnectReady = 6,
|
||||
// [s->c] Alternately, the server might not have heard of this host.
|
||||
TraversalPacketConnectFailed = 7
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
TraversalProtoVersion = 0
|
||||
};
|
||||
|
||||
enum TraversalConnectFailedReason
|
||||
{
|
||||
TraversalConnectFailedClientDidntRespond = 0,
|
||||
TraversalConnectFailedClientFailure,
|
||||
TraversalConnectFailedNoSuchClient
|
||||
};
|
||||
|
||||
#pragma pack(push, 1)
|
||||
struct TraversalInetAddress
|
||||
{
|
||||
u8 isIPV6;
|
||||
u32 address[4];
|
||||
u16 port;
|
||||
};
|
||||
struct TraversalPacket
|
||||
{
|
||||
u8 type;
|
||||
TraversalRequestId requestId;
|
||||
union
|
||||
{
|
||||
struct
|
||||
{
|
||||
u8 ok;
|
||||
} ack;
|
||||
struct
|
||||
{
|
||||
TraversalHostId hostId;
|
||||
} ping;
|
||||
struct
|
||||
{
|
||||
u8 protoVersion;
|
||||
} helloFromClient;
|
||||
struct
|
||||
{
|
||||
u8 ok;
|
||||
TraversalHostId yourHostId;
|
||||
TraversalInetAddress yourAddress; // currently unused
|
||||
} helloFromServer;
|
||||
struct
|
||||
{
|
||||
TraversalHostId hostId;
|
||||
} connectPlease;
|
||||
struct
|
||||
{
|
||||
TraversalInetAddress address;
|
||||
} pleaseSendPacket;
|
||||
struct
|
||||
{
|
||||
TraversalRequestId requestId;
|
||||
TraversalInetAddress address;
|
||||
} connectReady;
|
||||
struct
|
||||
{
|
||||
TraversalRequestId requestId;
|
||||
u8 reason;
|
||||
} connectFailed;
|
||||
};
|
||||
};
|
||||
#pragma pack(pop)
|
||||
|
Reference in New Issue
Block a user