(svn r7829) -Codechange: move the network (core) initialization/shutdown functions into network/core, so the can be reused in the masterserver_updater.
authorrubidium
Thu, 04 Jan 2007 18:50:40 +0000
changeset 5774 9df45c532d5d
parent 5773 6736f59c1011
child 5775 016a737acde3
(svn r7829) -Codechange: move the network (core) initialization/shutdown functions into network/core, so the can be reused in the masterserver_updater.
projects/openttd.vcproj
projects/openttd_vs80.vcproj
source.list
src/network/core/core.c
src/network/core/core.h
src/network/network.c
--- a/projects/openttd.vcproj	Thu Jan 04 18:30:28 2007 +0000
+++ b/projects/openttd.vcproj	Thu Jan 04 18:50:40 2007 +0000
@@ -260,6 +260,9 @@
 				RelativePath=".\..\src\namegen.c">
 			</File>
 			<File
+				RelativePath=".\..\src\network\core\core.c">
+			</File>
+			<File
 				RelativePath=".\..\src\network\core\packet.c">
 			</File>
 			<File
@@ -477,6 +480,9 @@
 				RelativePath=".\..\src\network\core\config.h">
 			</File>
 			<File
+				RelativePath=".\..\src\network\core\core.h">
+			</File>
+			<File
 				RelativePath=".\..\src\network\core\game.h">
 			</File>
 			<File
--- a/projects/openttd_vs80.vcproj	Thu Jan 04 18:30:28 2007 +0000
+++ b/projects/openttd_vs80.vcproj	Thu Jan 04 18:50:40 2007 +0000
@@ -543,6 +543,9 @@
 				RelativePath=".\..\src\namegen.c">
 			</File>
 			<File
+				RelativePath=".\..\src\network\core\core.c">
+			</File>
+			<File
 				RelativePath=".\..\src\network\core\packet.c">
 			</File>
 			<File
@@ -760,6 +763,9 @@
 				RelativePath=".\..\src\network\core\config.h">
 			</File>
 			<File
+				RelativePath=".\..\src\network\core\core.h">
+			</File>
+			<File
 				RelativePath=".\..\src\network\core\game.h">
 			</File>
 			<File
--- a/source.list	Thu Jan 04 18:30:28 2007 +0000
+++ b/source.list	Thu Jan 04 18:50:40 2007 +0000
@@ -32,6 +32,7 @@
 mixer.c
 music.c
 namegen.c
+network/core/core.c
 network/core/packet.c
 network/core/tcp.c
 network/core/udp.c
@@ -115,6 +116,7 @@
 mixer.h
 music.h
 network/core/config.h
+network/core/core.h
 network/core/game.h
 network/core/os_abstraction.h
 network/core/packet.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/network/core/core.c	Thu Jan 04 18:50:40 2007 +0000
@@ -0,0 +1,86 @@
+/* $Id$ */
+
+#ifdef ENABLE_NETWORK
+
+#include "../../stdafx.h"
+#include "os_abstraction.h"
+
+#ifdef __MORPHOS__
+/* the library base is required here */
+struct Library *SocketBase = NULL;
+#endif
+
+/**
+ * Initializes the network core (as that is needed for some platforms
+ */
+void NetworkCoreInitialize(void)
+{
+#if defined(__MORPHOS__) || defined(__AMIGA__)
+	/*
+	 *  IMPORTANT NOTE: SocketBase needs to be initialized before we use _any_
+	 *  network related function, else: crash.
+	 */
+	DEBUG(net, 3, "[core] loading bsd socket library");
+	SocketBase = OpenLibrary("bsdsocket.library", 4);
+	if (SocketBase == NULL) {
+		DEBUG(net, 0, "[core] can't open bsdsocket.library version 4, network unavailable");
+		_network_available = false;
+		return;
+	}
+
+#if defined(__AMIGA__)
+	/* for usleep() implementation (only required for legacy AmigaOS builds) */
+	TimerPort = CreateMsgPort();
+	if (TimerPort != NULL) {
+		TimerRequest = (struct timerequest*)CreateIORequest(TimerPort, sizeof(struct timerequest);
+		if (TimerRequest != NULL) {
+			if (OpenDevice("timer.device", UNIT_MICROHZ, (struct IORequest*)TimerRequest, 0) == 0) {
+				TimerBase = TimerRequest->tr_node.io_Device;
+				if (TimerBase == NULL) {
+					// free ressources...
+					DEBUG(net, 0, "[core] can't initialize timer, network unavailable");
+					_network_available = false;
+					return;
+				}
+			}
+		}
+	}
+#endif // __AMIGA__
+#endif // __MORPHOS__ / __AMIGA__
+
+/* Let's load the network in windows */
+#ifdef WIN32
+	{
+		WSADATA wsa;
+		DEBUG(net, 3, "[core] loading windows socket library");
+		if (WSAStartup(MAKEWORD(2, 0), &wsa) != 0) {
+			DEBUG(net, 0, "[core] WSAStartup failed, network unavailable");
+			_network_available = false;
+			return;
+		}
+	}
+#endif /* WIN32 */
+}
+
+/**
+ * Shuts down the network core (as that is needed for some platforms
+ */
+void NetworkCoreShutdown(void)
+{
+#if defined(__MORPHOS__) || defined(__AMIGA__)
+	/* free allocated ressources */
+#if defined(__AMIGA__)
+	if (TimerBase    != NULL) CloseDevice((struct IORequest*)TimerRequest); // XXX This smells wrong
+	if (TimerRequest != NULL) DeleteIORequest(TimerRequest);
+	if (TimerPort    != NULL) DeleteMsgPort(TimerPort);
+#endif
+
+	if (SocketBase != NULL) CloseLibrary(SocketBase);
+#endif
+
+#if defined(WIN32)
+	WSACleanup();
+#endif
+}
+
+#endif /* ENABLE_NETWORK */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/network/core/core.h	Thu Jan 04 18:50:40 2007 +0000
@@ -0,0 +1,13 @@
+/* $Id$ */
+
+#ifndef NETWORK_CORE_H
+#define NETWORK_CORE_H
+
+#ifdef ENABLE_NETWORK
+
+void NetworkCoreInitialize(void);
+void NetworkCoreShutdown(void);
+
+#endif /* ENABLE_NETWORK */
+
+#endif /* NETWORK_CORE_H */
--- a/src/network/network.c	Thu Jan 04 18:30:28 2007 +0000
+++ b/src/network/network.c	Thu Jan 04 18:50:40 2007 +0000
@@ -32,16 +32,12 @@
 #include "network_gamelist.h"
 #include "core/udp.h"
 #include "core/tcp.h"
+#include "core/core.h"
 #include "network_gui.h"
 #include "../console.h" /* IConsoleCmdExec */
 #include <stdarg.h> /* va_list */
 #include "../md5.h"
 
-#ifdef __MORPHOS__
-// the library base is required here
-struct Library *SocketBase = NULL;
-#endif
-
 // The listen socket for the server
 static SOCKET _listensocket;
 
@@ -1345,39 +1341,6 @@
 {
 	DEBUG(net, 3, "[core] starting network...");
 
-#if defined(__MORPHOS__) || defined(__AMIGA__)
-	/*
-	 *  IMPORTANT NOTE: SocketBase needs to be initialized before we use _any_
-	 *  network related function, else: crash.
-	 */
-	DEBUG(net, 3, "[core] loading bsd socket library");
-	SocketBase = OpenLibrary("bsdsocket.library", 4);
-	if (SocketBase == NULL) {
-		DEBUG(net, 0, "[core] can't open bsdsocket.library version 4, network unavailable");
-		_network_available = false;
-		return;
-	}
-
-#if defined(__AMIGA__)
-	// for usleep() implementation (only required for legacy AmigaOS builds)
-	TimerPort = CreateMsgPort();
-	if (TimerPort != NULL) {
-		TimerRequest = (struct timerequest*)CreateIORequest(TimerPort, sizeof(struct timerequest);
-		if (TimerRequest != NULL) {
-			if (OpenDevice("timer.device", UNIT_MICROHZ, (struct IORequest*)TimerRequest, 0) == 0) {
-				TimerBase = TimerRequest->tr_node.io_Device;
-				if (TimerBase == NULL) {
-					// free ressources...
-					DEBUG(net, 0, "[core] can't initialize timer, network unavailable");
-					_network_available = false;
-					return;
-				}
-			}
-		}
-	}
-#endif // __AMIGA__
-#endif // __MORPHOS__ / __AMIGA__
-
 	// Network is available
 	_network_available = true;
 	_network_dedicated = false;
@@ -1385,6 +1348,8 @@
 	_network_need_advertise = true;
 	_network_advertise_retries = 0;
 
+	NetworkCoreInitialize();
+
 	/* Load the ip from the openttd.cfg */
 	_network_server_bind_ip = inet_addr(_network_server_bind_ip_host);
 	/* And put the data back in it in case it was an invalid ip */
@@ -1404,18 +1369,6 @@
 		_network_game_info.spectators_max = sp_max;
 	}
 
-	// Let's load the network in windows
-	#if defined(WIN32)
-	{
-		WSADATA wsa;
-		DEBUG(net, 3, "[core] loading windows socket library");
-		if (WSAStartup(MAKEWORD(2,0), &wsa) != 0) {
-			DEBUG(net, 0, "[core] WSAStartup failed, network unavailable");
-			_network_available = false;
-			return;
-		}
-	}
-	#endif // WIN32
 
 	NetworkInitialize();
 	DEBUG(net, 3, "[core] network online, multiplayer available");
@@ -1432,20 +1385,7 @@
 
 	_network_available = false;
 
-#if defined(__MORPHOS__) || defined(__AMIGA__)
-	// free allocated ressources
-#if defined(__AMIGA__)
-	if (TimerBase    != NULL) CloseDevice((struct IORequest*)TimerRequest); // XXX This smells wrong
-	if (TimerRequest != NULL) DeleteIORequest(TimerRequest);
-	if (TimerPort    != NULL) DeleteMsgPort(TimerPort);
-#endif
-
-	if (SocketBase != NULL) CloseLibrary(SocketBase);
-#endif
-
-#if defined(WIN32)
-	WSACleanup();
-#endif
+	NetworkCoreShutdown();
 }
 
 #endif /* ENABLE_NETWORK */