summaryrefslogtreecommitdiff
path: root/src/DownloadEngine.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/DownloadEngine.h')
-rw-r--r--src/DownloadEngine.h55
1 files changed, 30 insertions, 25 deletions
diff --git a/src/DownloadEngine.h b/src/DownloadEngine.h
index d2dd0521..aa118ac7 100644
--- a/src/DownloadEngine.h
+++ b/src/DownloadEngine.h
@@ -32,22 +32,44 @@
typedef deque<SocketHandle> Sockets;
typedef deque<Command*> Commands;
typedef deque<CommandUuid> CommandUuids;
-typedef multimap<SocketHandle, int> SockCmdMap;
+
+class SocketEntry {
+public:
+ enum TYPE {
+ TYPE_RD,
+ TYPE_WR,
+ };
+
+ SocketHandle socket;
+ CommandUuid commandUuid;
+ TYPE type;
+public:
+ SocketEntry(const SocketHandle& socket,
+ const CommandUuid& commandUuid,
+ TYPE type):
+ socket(socket), commandUuid(commandUuid), type(type) {}
+ ~SocketEntry() {}
+
+ bool operator==(const SocketEntry& entry) {
+ return socket == entry.socket &&
+ commandUuid == entry.commandUuid &&
+ type == entry.type;
+ }
+};
+
+typedef deque<SocketEntry> SocketEntries;
class DownloadEngine {
private:
- void waitData(CommandUuids& activeCommandUuids);
- SockCmdMap rsockmap;
- SockCmdMap wsockmap;
+ void waitData(CommandUuids& activeUuids);
+ SocketEntries socketEntries;
fd_set rfdset;
fd_set wfdset;
int fdmax;
void shortSleep() const;
- bool addSocket(SockCmdMap& sockmap, const SocketHandle& socket,
- const CommandUuid& commandUuid);
- bool deleteSocket(SockCmdMap& sockmap, const SocketHandle& socket,
- const CommandUuid& commandUuid);
+ bool addSocket(const SocketEntry& socketEntry);
+ bool deleteSocket(const SocketEntry& socketEntry);
protected:
const Logger* logger;
virtual void initStatistics() = 0;
@@ -80,22 +102,5 @@ public:
};
-template<class T1, class T2>
-class PairFind {
-private:
- T1 first;
- T2 second;
-public:
- PairFind(T1 t1, T2 t2):first(t1), second(t2) {}
-
- bool operator()(const pair<T1, T2>& pa) {
- if(pa.first == first && pa.second == second) {
- return true;
- } else {
- return false;
- }
- }
-};
-
#endif // _D_DOWNLOAD_ENGINE_H_