summaryrefslogtreecommitdiffstats
path: root/src/Common/Request/DisconnectRequest.h
diff options
context:
space:
mode:
authorMatthias Schiffer <matthias@gamezock.de>2008-09-13 03:59:58 +0200
committerMatthias Schiffer <matthias@gamezock.de>2008-09-13 03:59:58 +0200
commit7e87778a02f3d37865c10051a3f14038bbbcbaef (patch)
treeb1853c2e1d94d0d8d7d87b3e5db73fa618019b29 /src/Common/Request/DisconnectRequest.h
parent920c506d477bd7f357e05590e8cdedf8e5e8a1b8 (diff)
downloadmad-7e87778a02f3d37865c10051a3f14038bbbcbaef.tar
mad-7e87778a02f3d37865c10051a3f14038bbbcbaef.zip
Benutze weniger Inline-Funktionen
Diffstat (limited to 'src/Common/Request/DisconnectRequest.h')
-rw-r--r--src/Common/Request/DisconnectRequest.h47
1 files changed, 7 insertions, 40 deletions
diff --git a/src/Common/Request/DisconnectRequest.h b/src/Common/Request/DisconnectRequest.h
index 1b2d467..136ef73 100644
--- a/src/Common/Request/DisconnectRequest.h
+++ b/src/Common/Request/DisconnectRequest.h
@@ -21,60 +21,27 @@
#define MAD_COMMON_REQUEST_DISCONNECTREQUEST_H_
#include "Request.h"
-#include "../RequestManager.h"
-#include <Net/Connection.h>
-#include <Net/Packet.h>
#include <sigc++/signal.h>
namespace Mad {
namespace Common {
+
+class RequestManager;
+
namespace Request {
-class DisconnectRequest: public Request {
+class DisconnectRequest : public Request {
private:
sigc::signal<void> finished;
DisconnectRequest() {}
public:
- static bool send(Net::Connection *connection, RequestManager &requestManager, const sigc::slot<void> &callback) {
- DisconnectRequest *request = new DisconnectRequest();
-
- request->finished.connect(callback);
-
- if(requestManager.sendRequest(connection, request))
- return true;
-
- delete request;
- return false;
- }
-
- virtual bool sendRequest(Net::Connection *connection, uint16_t requestId) {
- if(isSent())
- return false;
-
- if(!connection->send(Net::Packet(Net::Packet::DISCONNECT, requestId)))
- return false;
-
- setSent();
- return true;
- }
-
- virtual bool handlePacket(Net::Connection *connection, const Net::Packet &packet) {
- if(isFinished())
- return false;
-
- if(packet.getType() != Net::Packet::OK)
- return false; // TODO Logging
-
- connection->disconnect();
-
- finished();
+ static bool send(Net::Connection *connection, RequestManager &requestManager, const sigc::slot<void> &callback);
- setFinished();
- return true;
- }
+ virtual bool sendRequest(Net::Connection *connection, uint16_t requestId);
+ virtual bool handlePacket(Net::Connection *connection, const Net::Packet &packet);
};
}