Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Merge pull request #203 from EternalWind/master
Networking fixed!
  • Loading branch information
svenstaro committed Mar 28, 2012
2 parents 7e0dd0f + c2c0715 commit eea38bc
Show file tree
Hide file tree
Showing 8 changed files with 16 additions and 17 deletions.
4 changes: 2 additions & 2 deletions engine/src/Network/ConnectionsManager.cpp
Expand Up @@ -48,10 +48,10 @@ bool ConnectionsManager::isKnownConnection(Connection c) {
return getConnectionID(c) != 0;
}

ConnectionsManager::ID_t ConnectionsManager::addConnection(Connection* c) {
ConnectionsManager::ID_t ConnectionsManager::addConnection(Connection::ConnectionSP c) {
ConnectionsManager::ID_t id = _getNewID();
if(id != 0)
mConnections[id] = Connection::ConnectionSP(c);
mConnections[id] = c;
return id;
}

Expand Down
2 changes: 1 addition & 1 deletion engine/src/Network/ConnectionsManager.hpp
Expand Up @@ -79,7 +79,7 @@ class DUCTTAPE_API ConnectionsManager : public Manager {
* @param c The Connection to add.
* @returns The ID assigned to the Connection.
*/
ID_t addConnection(Connection* c);
ID_t addConnection(Connection::ConnectionSP c);

/**
* Removes a Connection from the manager.
Expand Down
15 changes: 7 additions & 8 deletions engine/src/Network/NetworkManager.cpp
Expand Up @@ -57,11 +57,10 @@ bool NetworkManager::bindSocket(uint16_t port) {
return true;
}

void NetworkManager::connect(Connection target) {
void NetworkManager::connect(Connection::ConnectionSP target) {
//Logger::Get().Info("New Connection : " + QString::fromStdString(target.GetIPAddress().ToString()));
// remember target
uint16_t id = mConnectionsManager.addConnection(&target);
// Connection* c = mConnectionsManager.GetConnection(id);
uint16_t id = mConnectionsManager.addConnection(target);

// send handshake
std::shared_ptr<HandshakeEvent> h(new HandshakeEvent());
Expand Down Expand Up @@ -107,12 +106,12 @@ void NetworkManager::handleIncomingEvents() {
uint16_t port;
if(mSocket.receive(packet, remote, port) == sf::Socket::Done) {
// check if sender is known, otherwise add it
Connection sender(remote, port);
Connection::ConnectionSP sender(new Connection(remote, port));
uint16_t sender_id = 0;
if(mConnectionsManager.isKnownConnection(sender)) {
sender_id = mConnectionsManager.getConnectionID(sender);
if(mConnectionsManager.isKnownConnection(*sender.get())) {
sender_id = mConnectionsManager.getConnectionID(*sender.get());
} else {
sender_id = mConnectionsManager.addConnection(&sender);
sender_id = mConnectionsManager.addConnection(sender);
}

while(!packet.endOfPacket()) {
Expand Down Expand Up @@ -244,7 +243,7 @@ void NetworkManager::_sendEvent(std::shared_ptr<NetworkEvent> event) {
const std::vector<uint16_t>& recipients = event->getRecipients();
for(auto iter = recipients.begin(); iter != recipients.end(); ++iter) {
Connection::ConnectionSP r = mConnectionsManager.getConnection(*iter);
if(r) {
if(!r) {
Logger::get().error("Cannot send event to " + Utils::toString(*iter) + ": No connection with this ID");
} else {
mSocket.send(p, r->getIPAddress(), r->getPort());
Expand Down
2 changes: 1 addition & 1 deletion engine/src/Network/NetworkManager.hpp
Expand Up @@ -61,7 +61,7 @@ class DUCTTAPE_API NetworkManager : public Manager {
* Connects to a remote device. This method sends a HandshakeEvent to that target.
* @param target The remote device to connect to.
*/
void connect(Connection target);
void connect(Connection::ConnectionSP target);

/**
* Disconnects from a remote device. This method sends a GoodbyeEvent to that target.
Expand Down
2 changes: 1 addition & 1 deletion engine/src/Scene/StateManager.hpp
Expand Up @@ -71,7 +71,7 @@ class DUCTTAPE_API StateManager : public Manager {
private:
std::shared_ptr<State> mNewState; //!< The newly created game state to be pushed onto the stack in the next step.
bool mHasNewState; //!< Whether a new state has been assigned.
std::vector<std::shared_ptr<State> > mStates; //!< The stack of game states.
std::vector<std::shared_ptr<State>> mStates; //!< The stack of game states.
uint16_t mPopCount; //!< The number of states to remove in the next frame.
};

Expand Down
2 changes: 1 addition & 1 deletion samples/chat/src/client/Client.cpp
Expand Up @@ -30,7 +30,7 @@ void Client::onInitialize() {
dt::NetworkManager::get()->registerNetworkEventPrototype(ptr);

dt::NetworkManager::get()->bindSocket();
dt::NetworkManager::get()->connect(dt::Connection(mServerIP, 29876));
dt::NetworkManager::get()->connect(dt::Connection::ConnectionSP(new dt::Connection(mServerIP, 29876)));

mInputThread = std::shared_ptr<sf::Thread>(new sf::Thread(&Client::inputThread, this));
mInputThread->launch();
Expand Down
4 changes: 2 additions & 2 deletions tests/src/ConnectionsTest/ConnectionsTest.cpp
Expand Up @@ -11,7 +11,7 @@
namespace ConnectionsTest {

bool ConnectionsTest::run(int argc, char** argv) {
std::map<uint16_t, dt::Connection*> connections;
std::map<uint16_t, dt::Connection::ConnectionSP> connections;
dt::ConnectionsManager connections_manager;

uint16_t max_connections = 50;
Expand All @@ -22,7 +22,7 @@ bool ConnectionsTest::run(int argc, char** argv) {
uint16_t ip = dt::Random::get(1, 255);
uint16_t port = dt::Random::get(1001, 51311);

dt::Connection* connection = new dt::Connection(sf::IpAddress("127.168.178." + dt::Utils::toStdString(dt::Utils::toString(ip))), port+i);
dt::Connection::ConnectionSP connection(new dt::Connection(sf::IpAddress("127.168.178." + dt::Utils::toStdString(dt::Utils::toString(ip))), port+i));
uint16_t connection_id = connections_manager.addConnection(connection);
if(connection_id != 0) {
connections[connection_id] = connection;
Expand Down
2 changes: 1 addition & 1 deletion tests/src/NetworkTest/NetworkTest.cpp
Expand Up @@ -68,7 +68,7 @@ bool NetworkTest::runClient() {

dt::NetworkManager* nm = root.getNetworkManager();
nm->bindSocket(CLIENT_PORT);
nm->connect(dt::Connection(sf::IpAddress::LocalHost, SERVER_PORT));
nm->connect(dt::Connection::ConnectionSP(new dt::Connection(sf::IpAddress::LocalHost, SERVER_PORT)));

int data = 1337;

Expand Down

0 comments on commit eea38bc

Please sign in to comment.