Clean up NetworkSyncManager
This commit is contained in:
@@ -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;
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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. */
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user