| 
									
										
										
										
											2015-03-09 18:37:02 +01:00
										 |  |  | // Copyright 2015 Dolphin Emulator Project
 | 
					
						
							| 
									
										
										
										
											2015-05-18 01:08:10 +02:00
										 |  |  | // Licensed under GPLv2+
 | 
					
						
							| 
									
										
										
										
											2015-03-09 18:37:02 +01:00
										 |  |  | // Refer to the license.txt file included.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include "ENetUtil.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-10 20:16:05 -05:00
										 |  |  | #include "Common/CommonTypes.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-03-09 18:37:02 +01:00
										 |  |  | namespace ENetUtil | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void WakeupThread(ENetHost* host) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	// Send ourselves a spurious message.  This is hackier than it should be.
 | 
					
						
							|  |  |  | 	// comex reported this as https://github.com/lsalzman/enet/issues/23, so
 | 
					
						
							|  |  |  | 	// hopefully there will be a better way to do it in the future.
 | 
					
						
							|  |  |  | 	ENetAddress address; | 
					
						
							|  |  |  | 	if (host->address.port != 0) | 
					
						
							|  |  |  | 		address.port = host->address.port; | 
					
						
							|  |  |  | 	else | 
					
						
							|  |  |  | 		enet_socket_get_address(host->socket, &address); | 
					
						
							|  |  |  | 	address.host = 0x0100007f; // localhost
 | 
					
						
							|  |  |  | 	u8 byte = 0; | 
					
						
							|  |  |  | 	ENetBuffer buf; | 
					
						
							|  |  |  | 	buf.data = &byte; | 
					
						
							|  |  |  | 	buf.dataLength = 1; | 
					
						
							|  |  |  | 	enet_socket_send(host->socket, &address, &buf, 1); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-03-14 15:19:18 +01:00
										 |  |  | int ENET_CALLBACK InterceptCallback(ENetHost* host, ENetEvent* event) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	// wakeup packet received
 | 
					
						
							|  |  |  | 	if (host->receivedDataLength == 1 && host->receivedData[0] == 0) | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 		event->type = (ENetEventType) 42; | 
					
						
							|  |  |  | 		return 1; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	return 0; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-03-09 18:37:02 +01:00
										 |  |  | } |