Clean up NetworkSyncManager

This commit is contained in:
Steve Checkoway
2004-03-17 06:05:52 +00:00
parent 09e6b85f3b
commit 858ab01ae9
4 changed files with 48 additions and 53 deletions
+24 -23
View File
@@ -15,25 +15,27 @@
#include "ezsockets.h" #include "ezsockets.h"
#include "RageLog.h" #include "RageLog.h"
NetworkSyncManager::NetworkSyncManager(int argc, char **argv)
NetworkSyncManager::NetworkSyncManager ()
{ {
//No Code NetPlayerClient = new EzSockets;
if (argc > 1)
Connect(argv[1],8765);
else
useSMserver = false;
} }
NetworkSyncManager::~NetworkSyncManager () NetworkSyncManager::~NetworkSyncManager ()
{ {
if (useSMserver!=1)
return ;
//Close Connection to server nicely. //Close Connection to server nicely.
NetPlayerClient.close(); if (useSMserver)
return ; NetPlayerClient->close();
delete NetPlayerClient;
} }
int NetworkSyncManager::Connect(char * addy, int port) int NetworkSyncManager::Connect(char * addy, int port)
{ {
if (port!=8765) if (port!=8765)
return (-1); return -1;
//Make sure using port 8765 //Make sure using port 8765
//This may change in future versions //This may change in future versions
//It is this way now for protocol's purpose. //It is this way now for protocol's purpose.
@@ -43,21 +45,21 @@ int NetworkSyncManager::Connect(char * addy, int port)
//will be connecting to localhost, this port does not matter. //will be connecting to localhost, this port does not matter.
NetPlayerClient.create(); //Initilize Socket NetPlayerClient->create(); //Initilize Socket
if(!NetPlayerClient.connect(addy,port)) { if(!NetPlayerClient->connect(addy,port)) {
useSMserver = -1; //If connection to socket fails, tell useSMserver = -1; //If connection to socket fails, tell
//other network functions to not do anything //other network functions to not do anything
} else { } else {
useSMserver = 1; //Utilize other network funtions useSMserver = 1; //Utilize other network funtions
} }
return (1); return 1;
} }
void NetworkSyncManager::ReportScore (int playerID, int step, int score, int combo) void NetworkSyncManager::ReportScore(int playerID, int step, int score, int combo)
{ {
if (useSMserver!=1) //Make sure that we are using the network if (useSMserver!=1) //Make sure that we are using the network
return ; return;
netHolder SendNetPack; //Create packet to send to server netHolder SendNetPack; //Create packet to send to server
@@ -66,12 +68,11 @@ void NetworkSyncManager::ReportScore (int playerID, int step, int score, int com
SendNetPack.m_score=score; //Load packet with aproperate info SendNetPack.m_score=score; //Load packet with aproperate info
SendNetPack.m_step=step-1; SendNetPack.m_step=step-1;
NetPlayerClient.send((char*)&SendNetPack, sizeof(netHolder));
//Send packet to server //Send packet to server
return; NetPlayerClient->send((char*)&SendNetPack, sizeof(netHolder));
} }
void NetworkSyncManager::ReportSongOver () void NetworkSyncManager::ReportSongOver()
{ {
if (useSMserver!=1) //Make sure that we are using the network if (useSMserver!=1) //Make sure that we are using the network
return ; return ;
@@ -83,17 +84,16 @@ void NetworkSyncManager::ReportSongOver ()
SendNetPack.m_score=0; //Use PID 21 (Song over Packet) SendNetPack.m_score=0; //Use PID 21 (Song over Packet)
SendNetPack.m_step=0; SendNetPack.m_step=0;
NetPlayerClient.send((char*)&SendNetPack, sizeof(netHolder)); NetPlayerClient->send((char*)&SendNetPack, sizeof(netHolder));
return; return;
} }
void NetworkSyncManager::StartRequest () void NetworkSyncManager::StartRequest()
{ {
if (useSMserver!=1) if (useSMserver!=1)
return ; return ;
vector <char> tmp; //Temporary vector used by receive function vector <char> tmp; //Temporary vector used by receive function when waiting
//when waiting
LOG->Trace("Requesting Start from Server."); LOG->Trace("Requesting Start from Server.");
@@ -104,14 +104,15 @@ void NetworkSyncManager::StartRequest ()
SendNetPack.m_score=0; //PID 20 (Song Start Request Packet) SendNetPack.m_score=0; //PID 20 (Song Start Request Packet)
SendNetPack.m_step=0; SendNetPack.m_step=0;
NetPlayerClient.send((char*)&SendNetPack, sizeof(netHolder)); NetPlayerClient->send((char*)&SendNetPack, sizeof(netHolder));
LOG->Trace("Waiting for RECV"); LOG->Trace("Waiting for RECV");
//Block until go is recieved. //Block until go is recieved.
NetPlayerClient.receive(tmp); NetPlayerClient->receive(tmp);
LOG->Trace("Starting Game."); LOG->Trace("Starting Game.");
return ;
} }
//Global and accessable from anywhere
NetworkSyncManager *NSMAN;
+10 -14
View File
@@ -13,15 +13,12 @@
----------------------------------------------------------------------------- -----------------------------------------------------------------------------
*/ */
#include "ezsockets.h" class EzSockets;
static int useSMserver; //Using network or not?
static EzSockets NetPlayerClient; //Socket used for network traffic
class NetworkSyncManager class NetworkSyncManager
{ {
public: public:
NetworkSyncManager(); NetworkSyncManager(int argc, char **argv);
~NetworkSyncManager(); ~NetworkSyncManager();
void ReportScore(int playerID, int step, int score, int combo); void ReportScore(int playerID, int step, int score, int combo);
@@ -38,22 +35,21 @@ public:
int m_step; int m_step;
int m_score; int m_score;
int m_combo; int m_combo;
private: bool useSMserver;
}; EzSockets *NetPlayerClient;
class netHolder //Data structure used for sending data to server private:
{ struct netHolder //Data structure used for sending data to server
public: {
int m_playerID; //PID (also used for Commands) int m_playerID; //PID (also used for Commands)
int m_step; //SID (StepID, 0-6 for Miss to Marv, 7,8 for boo and ok) int m_step; //SID (StepID, 0-6 for Miss to Marv, 7,8 for boo and ok)
int m_score; //Player's Score int m_score; //Player's Score
int m_combo; //Player's Current Combo int m_combo; //Player's Current Combo
};
}; };
//Static this class inside itself extern NetworkSyncManager *NSMAN;
//so that other parts of the program that include
//NetworkSyncManager can use "currentNetPlayer"
static NetworkSyncManager currentNetPlayer;
#endif #endif
+3 -4
View File
@@ -870,10 +870,6 @@ int main(int argc, char* argv[])
#endif #endif
if (argc > 1)
currentNetPlayer.Connect (argv[1],8765);
/* Almost everything uses this to read and write files. Load this early. */ /* Almost everything uses this to read and write files. Load this early. */
FILEMAN = new RageFileManager( argv[0] ); FILEMAN = new RageFileManager( argv[0] );
FILEMAN->MountInitialFilesystems(); FILEMAN->MountInitialFilesystems();
@@ -978,6 +974,8 @@ int main(int argc, char* argv[])
MODELMAN = new ModelManager; MODELMAN = new ModelManager;
delete loading_window; // destroy this before init'ing Display delete loading_window; // destroy this before init'ing Display
NSMAN = new NetworkSyncManager(argc, argv);
DISPLAY = CreateDisplay(); DISPLAY = CreateDisplay();
DISPLAY->ChangeCentering( DISPLAY->ChangeCentering(
@@ -1038,6 +1036,7 @@ int main(int argc, char* argv[])
} }
#endif #endif
SAFE_DELETE( NSMAN );
SAFE_DELETE( SCREENMAN ); SAFE_DELETE( SCREENMAN );
/* Delete INPUTMAN before the other INPUTFILTER handlers, or an input /* Delete INPUTMAN before the other INPUTFILTER handlers, or an input
* driver may try to send a message to INPUTFILTER after we delete it. */ * driver may try to send a message to INPUTFILTER after we delete it. */
+6 -7
View File
@@ -12,8 +12,10 @@
Windows-Based OSes. Windows-Based OSes.
********************************************/ ********************************************/
#ifdef _WINDOWS
//We need the Winsock32 Libary
#pragma comment(lib,"wsock32.lib") #pragma comment(lib,"wsock32.lib")
//We need the Winsock32 Libary #endif
#include "ezsockets.h" #include "ezsockets.h"
@@ -75,13 +77,10 @@ bool EzSockets::listen() {
bool EzSockets::accept(EzSockets &socket) { bool EzSockets::accept(EzSockets &socket) {
//Windows wants it defined as a signed int //Windows wants it defined as a signed int
#if defined(WIN32) //As does everything else -- Steve
int length = sizeof(socket); int length = sizeof(socket);
#else
unsigned int length = sizeof(socket);
#endif
socket.sock = ::accept(sock, (struct sockaddr *) & socket.addr,& length); socket.sock = ::accept(sock, (struct sockaddr *)&socket.addr,&length);
if (socket.sock < 0) { if (socket.sock < 0) {
return false; return false;
} }
@@ -272,7 +271,7 @@ bool EzSockets::connect(std::string host, int port) {
#else #else
addr.sin_family = AF_INET; addr.sin_family = AF_INET;
addr.sin_port = htons(port); addr.sin_port = htons(port);
int status = inet_pton ( AF_INET, host.c_str(), &addr.sin_addr ); inet_pton ( AF_INET, host.c_str(), &addr.sin_addr );
int desc = ::connect(sock,(struct sockaddr *)&addr,sizeof(addr)); int desc = ::connect(sock,(struct sockaddr *)&addr,sizeof(addr));
#endif #endif