work on ServerModule
This commit is contained in:
50
modules/ClientModule/src/ClientEvents.h
Normal file
50
modules/ClientModule/src/ClientEvents.h
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
#include "Archimedes.h"
|
||||||
|
|
||||||
|
#include <steam/steamnetworkingsockets.h>
|
||||||
|
#include <steam/isteamnetworkingutils.h>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
namespace CMEvent {
|
||||||
|
class DataRecievedEvent : public Archimedes::Event {
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
DataRecievedEvent() : msg(nullptr) {}
|
||||||
|
|
||||||
|
DataRecievedEvent(ISteamNetworkingMessage* m) : msg(m) {}
|
||||||
|
|
||||||
|
operator std::string() const { return "DataRecievedEvent"; }
|
||||||
|
|
||||||
|
ISteamNetworkingMessage* msg;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
class DataSentEvent : public Archimedes::Event {
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
DataSentEvent() : msg(nullptr) {}
|
||||||
|
|
||||||
|
DataSentEvent(ISteamNetworkingMessage* m) : msg(m) {}
|
||||||
|
|
||||||
|
operator std::string() const { return "DataSentEvent"; }
|
||||||
|
|
||||||
|
ISteamNetworkingMessage* msg;
|
||||||
|
};
|
||||||
|
|
||||||
|
class ConnectionStatusChangedEvent : public Archimedes::Event {
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
ConnectionStatusChangedEvent() : info(nullptr) {}
|
||||||
|
|
||||||
|
ConnectionStatusChangedEvent(SteamNetConnectionStatusChangedCallback_t* i) : info(i) {}
|
||||||
|
|
||||||
|
operator std::string() const { return "ConnectionStatusChangedEvent"; }
|
||||||
|
|
||||||
|
SteamNetConnectionStatusChangedCallback_t* info;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -10,17 +10,18 @@ namespace SMEvent {
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
DataRecievedEvent() : clientID(0), buffer(nullptr), size(0) {}
|
DataRecievedEvent() : msg(nullptr) {}
|
||||||
|
|
||||||
DataRecievedEvent(unsigned int c, void* buf, unsigned int s) : clientID(c), buffer(buf), size(s) {}
|
~DataRecievedEvent() {
|
||||||
|
if(msg)
|
||||||
|
msg->Release();
|
||||||
|
}
|
||||||
|
|
||||||
|
DataRecievedEvent(ISteamNetworkingMessage* m) : msg(m) {}
|
||||||
|
|
||||||
operator std::string() const { return "DataRecievedEvent"; }
|
operator std::string() const { return "DataRecievedEvent"; }
|
||||||
|
|
||||||
unsigned int clientID;
|
ISteamNetworkingMessage* msg;
|
||||||
|
|
||||||
void* buffer;
|
|
||||||
|
|
||||||
unsigned int size;
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -28,18 +29,18 @@ namespace SMEvent {
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
DataSentEvent() : clientID(0), buffer(nullptr), size(0) {}
|
DataSentEvent() : msg(nullptr) {}
|
||||||
|
|
||||||
DataSentEvent(unsigned int c, void* buf, unsigned int s) : clientID(c), buffer(buf), size(s) {}
|
~DataSentEvent() {
|
||||||
|
if(msg)
|
||||||
|
msg->Release();
|
||||||
|
}
|
||||||
|
|
||||||
|
DataSentEvent(ISteamNetworkingMessage* m) : msg(m) {}
|
||||||
|
|
||||||
operator std::string() const { return "DataSentEvent"; }
|
operator std::string() const { return "DataSentEvent"; }
|
||||||
|
|
||||||
unsigned int clientID;
|
ISteamNetworkingMessage* msg;
|
||||||
|
|
||||||
void* buffer;
|
|
||||||
|
|
||||||
unsigned int size;
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class ConnectionStatusChangedEvent : public Archimedes::Event {
|
class ConnectionStatusChangedEvent : public Archimedes::Event {
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ void ServerModule::onLoad() {
|
|||||||
|
|
||||||
void ServerModule::run() {
|
void ServerModule::run() {
|
||||||
if(running) {
|
if(running) {
|
||||||
PollIncomingMessages();
|
pollIncomingData();
|
||||||
PollConnectionStateChanges();
|
PollConnectionStateChanges();
|
||||||
PollLocalUserInput();
|
PollLocalUserInput();
|
||||||
} else if(port >= 0) {
|
} else if(port >= 0) {
|
||||||
@@ -189,3 +189,20 @@ bool ServerModule::onEvent(const Archimedes::Event& event) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ServerModule::pollIncomingData() {
|
||||||
|
|
||||||
|
while ( running )
|
||||||
|
{
|
||||||
|
ISteamNetworkingMessage *pIncomingMsg = nullptr;
|
||||||
|
int numMsgs = interface->ReceiveMessagesOnPollGroup( pollGroup, &pIncomingMsg, 1 );
|
||||||
|
if ( numMsgs == 0 )
|
||||||
|
break;
|
||||||
|
if ( numMsgs < 0 )
|
||||||
|
std::cerr << "Error checking for messages" << std::endl;
|
||||||
|
assert( numMsgs == 1 && pIncomingMsg );
|
||||||
|
auto itClient = clients.find( pIncomingMsg->m_conn );
|
||||||
|
assert( itClient != clients.end() );
|
||||||
|
|
||||||
|
app->emitEvent(new SMEvent::DataRecievedEvent(pIncomingMsg));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user