summaryrefslogtreecommitdiff
path: root/src/net/network.h
diff options
context:
space:
mode:
authorBjørn Lindeijer <bjorn@lindeijer.nl>2006-08-20 00:56:23 +0000
committerBjørn Lindeijer <bjorn@lindeijer.nl>2006-08-20 00:56:23 +0000
commit01591924a4f33d5a5e4a86db6c256c8ce797a820 (patch)
treea1fe33f8a28a19fddd9f4ccdf7816f85636c4bcb /src/net/network.h
parent0841d65d15e4c318ad8f5fe4b7e257d963ef7841 (diff)
downloadmana-client-01591924a4f33d5a5e4a86db6c256c8ce797a820.tar.gz
mana-client-01591924a4f33d5a5e4a86db6c256c8ce797a820.tar.bz2
mana-client-01591924a4f33d5a5e4a86db6c256c8ce797a820.tar.xz
mana-client-01591924a4f33d5a5e4a86db6c256c8ce797a820.zip
The Network can now connect to the three servers and affected methods now take
the server type as a parameter. The MessageOut gained a convenience constructor (same as was added server side). The game states during login sequence have been renamed and redone in order to ensure no communication is attempted to unconnected servers. This allowed the removal of the outgoing message queue. Connecting to the account server has been moved before the login/register phase (dialogs will still need to be updated). Quite a few things are expected to be broken since I'm rather tired at the moment. I've left many TODO entries in the code.
Diffstat (limited to 'src/net/network.h')
-rw-r--r--src/net/network.h59
1 files changed, 35 insertions, 24 deletions
diff --git a/src/net/network.h b/src/net/network.h
index eb2ce8ab..49583b9d 100644
--- a/src/net/network.h
+++ b/src/net/network.h
@@ -36,8 +36,6 @@ class MessageHandler;
class MessageIn;
class MessageOut;
-class Network;
-
class Network
{
public:
@@ -46,35 +44,53 @@ class Network
Network();
~Network();
- bool connect(const std::string &address, short port);
- void disconnect();
+ typedef enum {
+ ACCOUNT,
+ GAME,
+ CHAT
+ } Server;
+
+ bool
+ connect(Server server, const std::string &address, short port);
+
+ void
+ disconnect(Server server);
+
+ void
+ registerHandler(MessageHandler *handler);
+
+ void
+ unregisterHandler(MessageHandler *handler);
- void registerHandler(MessageHandler *handler);
- void unregisterHandler(MessageHandler *handler);
- void clearHandlers();
+ void
+ clearHandlers();
- int getState() const { return mState; }
- bool isConnected() const { return mState == CONNECTED; }
+ int
+ getState() const { return mState; }
- void dispatchMessage(ENetPacket *packet);
- void flush();
+ bool
+ isConnected(Server server) const;
- void send(const MessageOut &msg);
+ void
+ dispatchMessage(ENetPacket *packet);
+
+ void
+ flush();
+
+ void
+ send(Server server, const MessageOut &msg);
enum State {
- IDLE,
- CONNECTED,
- CONNECTING,
- DATA,
+ NET_OK,
NET_ERROR
};
private:
ENetHost *mClient;
- ENetPeer *mServer;
- std::string mAddress;
- short mPort;
+ ENetPeer *mAccountServer;
+ ENetPeer *mGameServer;
+ ENetPeer *mChatServer;
unsigned int mToSkip;
@@ -83,11 +99,6 @@ class Network
typedef std::map<unsigned short, MessageHandler*> MessageHandlers;
typedef MessageHandlers::iterator MessageHandlerIterator;
MessageHandlers mMessageHandlers;
-
- std::queue<ENetPacket *> mOutgoingPackets;
-
- bool realConnect();
- void receive();
};
/** Convert an address from int format to string */