| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- /*
- * Copyright (c) 2014, Oculus VR, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- *
- */
- #ifndef __UDP_PROXY_COMMON_H
- #define __UDP_PROXY_COMMON_H
- // System flow:
- /*
- UDPProxyClient: End user
- UDPProxyServer: open server, to route messages from end users that can't connect to each other using UDPForwarder class.
- UDPProxyCoordinator: Server somewhere, connected to by RakNet, to maintain a list of UDPProxyServer
- UDPProxyServer
- On startup, log into UDPProxyCoordinator and register self
- UDPProxyClient
- Wish to open route to X
- Send message to UDPProxyCoordinator containing X, desired timeout
- Wait for success or failure
- UDPProxyCoordinator:
- * Get openRouteRequest
- If no servers registered, return failure
- Add entry to memory
- chooseBestUDPProxyServer() (overridable, chooses at random by default)
- Query this server to StartForwarding(). Return success or failure
- If failure, choose another server from the remaining list. If none remaining, return failure. Else return success.
- * Disconnect:
- If disconnected system is pending client on openRouteRequest, delete that request
- If disconnected system is UDPProxyServer, remove from list. For each pending client for this server, choose from remaining servers.
- * Login:
- Add to UDPProxyServer list, validating password if set
- */
- // Stored in the second byte after ID_UDP_PROXY_GENERAL
- // Otherwise MessageIdentifiers.h is too cluttered and will hit the limit on enumerations in a single byte
- enum UDPProxyMessages
- {
- ID_UDP_PROXY_FORWARDING_SUCCEEDED,
- ID_UDP_PROXY_FORWARDING_NOTIFICATION,
- ID_UDP_PROXY_NO_SERVERS_ONLINE,
- ID_UDP_PROXY_RECIPIENT_GUID_NOT_CONNECTED_TO_COORDINATOR,
- ID_UDP_PROXY_ALL_SERVERS_BUSY,
- ID_UDP_PROXY_IN_PROGRESS,
- ID_UDP_PROXY_FORWARDING_REQUEST_FROM_CLIENT_TO_COORDINATOR,
- ID_UDP_PROXY_PING_SERVERS_FROM_COORDINATOR_TO_CLIENT,
- ID_UDP_PROXY_PING_SERVERS_REPLY_FROM_CLIENT_TO_COORDINATOR,
- ID_UDP_PROXY_FORWARDING_REQUEST_FROM_COORDINATOR_TO_SERVER,
- ID_UDP_PROXY_FORWARDING_REPLY_FROM_SERVER_TO_COORDINATOR,
- ID_UDP_PROXY_LOGIN_REQUEST_FROM_SERVER_TO_COORDINATOR,
- ID_UDP_PROXY_LOGIN_SUCCESS_FROM_COORDINATOR_TO_SERVER,
- ID_UDP_PROXY_ALREADY_LOGGED_IN_FROM_COORDINATOR_TO_SERVER,
- ID_UDP_PROXY_NO_PASSWORD_SET_FROM_COORDINATOR_TO_SERVER,
- ID_UDP_PROXY_WRONG_PASSWORD_FROM_COORDINATOR_TO_SERVER
- };
- #define UDP_FORWARDER_MAXIMUM_TIMEOUT (60000 * 10)
- #endif
|