One sender thread per client. Requires loads of resources. Kind of hacked, because the internal dependencies are very ugly now. Requires loads of testing. A problem might be the last packet sent by the server to a specific client before closing the connection, for example an error message. It might never even reach the client, because the sender thread is terminated before. I have not yet found a good way to fix this.

This commit is contained in:
lotodore
2009-01-07 21:52:16 +00:00
parent 606158c4f0
commit d72cdb6873
16 changed files with 150 additions and 325 deletions
-3
View File
@@ -114,7 +114,6 @@ protected:
ClientState &GetState();
void SetState(ClientState &newState);
SenderThread &GetSender();
ReceiverHelper &GetReceiver();
void SetGameId(unsigned id);
@@ -167,12 +166,10 @@ private:
mutable boost::mutex m_outPacketListMutex;
boost::shared_ptr<ClientContext> m_context;
boost::shared_ptr<ClientSenderCallback> m_senderCallback;
ClientState *m_curState;
GuiInterface &m_gui;
AvatarManager &m_avatarManager;
boost::shared_ptr<SenderThread> m_sender;
boost::shared_ptr<ReceiverHelper> m_receiver;
GameData m_gameData;