diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2006-03-28 15:23:51 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2006-03-28 15:23:51 +0000 |
| commit | e1f24adc4046dfc24d01fc5eb9797d05420c136f (patch) | |
| tree | ace7bc087b90e3ac7b544cdcba946ff100b3ff49 /src/SendMessageQueue.h | |
| parent | 4892b409453b110f1bec80823e199767181475d8 (diff) | |
Added new class SendMessageQueue that includes PendingMessages
and
RequestSlotMan.
* src/SendMessageQueue.h: New class.
* src/SendMessageQueue.cc: New class.
* src/PendingMessage.h: Added new member variable blockIndex and
its
accessors.
(createRequestMessage): Updated.
* src/PendingMessage.cc (createRequestMessage): Updated.
* src/PeerInteractionCommand.cc (executeInternal): Updated with
SendMessageQueue.
(checkLongTimePeerChoking): Updated with SendMessageQueue.
(receiveMessage): Updated with SendMessageQueue.
(deletePendingPieceMessage): Removed.
(getNewPieceAndSendInterest): Updated with SendMessageQueue.
(sendInterest): Updated with SendMessageQueue.
(createRequestPendingMessage): Updated with SendMessageQueue.
(sendMessages): Updated with SendMessageQueue.
(onAbort): Updated with SendMessageQueue.
(keepAlive): Updated with SendMessageQueue.
(beforeSocketCheck): Updated SendMessageQueue.
* src/PeerInteractionCommand (sendMessages): Shuffle
missingBLockIndexes before using it.
Added its own timeout for peer connection.
* src/PeerAbstractCommand.h: Added member variable timeout and
its
setter.
* src/prefs.h: Added PREF_PEER_CONNECTION_TIMEOUT.
* src/PeerInteractionCommand.cc (PeerInteractionCommand):
Added setTimeout() call.
(executeInternal): Added setTimeout() call.
* src/PeerAbstractCommand.cc (PeerAbstractCommand):
Added timeout.
(isTimeoutDetected): Updated.
* src/main.cc (main): Added PREF_PEER_CONNECTION_TIMEOUT entry
to
option.
Added *simple* message flooding checker.
* src/PeerInteractionCommand.cc (executeInternal):
Added detectMessageFlooding() call.
(detectMessageFlooding): New function.
(receiveMessage): Count up CHOKE, UNCHOKE, HAVE message.
(beforeSocketCheck): Added detectMessageFlooding() call.
* src/PeerInteractionCommand.h: Added sendMessageQueue,
chokeUnchokeCount, haveCount, detectMessageFlooding().
Removed deletePendingPieceMessage(), getRequestSlot(),
deleteRequestSlot(), deleteAllRequestSlot().
* src/PeerInteractionCommand.cc (beforeSocketCheck):
Added checkLongTimePeerChoking() call.
* src/RequestSlotMan.h: Renamed deleteTimeoutRequestSlot().
* src/TorrentMan.cc (addPeer): Delete at most MAX_PEER_LIST_SIZE
peers
if duplicate == false.
The parameter "uploaded" and "downloaded" in the tracker request
are
the size since the client sent the "started" event to the
tracker.
* src/TorrentMan.cc (setup): Assigned saved downloaded Size and
uploaded size to preDownloadedSize, preUploadedSize
respectively.
* src/TorrentMan.h: Added preDownloadedSize, preUploadedSize,
getSessionDownloadedSize(), getSessionUploadedSize().
* src/TrackerInitCommand.cc (execute): Use
getSessionDownloadedSize(),
getSessionUploadedSize() instead of getDownloadedSize(),
getUploadedSize().
* src/PendingMessage.cc (processMessage): Do not send request
message
if the peer is choking the client.
* src/TrackerUpdateCommand.cc (execute): Check wtheher
minInterval is
less than interval.
Diffstat (limited to 'src/SendMessageQueue.h')
| -rw-r--r-- | src/SendMessageQueue.h | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/src/SendMessageQueue.h b/src/SendMessageQueue.h new file mode 100644 index 00000000..0d0c58c7 --- /dev/null +++ b/src/SendMessageQueue.h @@ -0,0 +1,57 @@ +/* <!-- copyright */ +/* + * aria2 - a simple utility for downloading files faster + * + * Copyright (C) 2006 Tatsuhiro Tsujikawa + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +/* copyright --> */ +#ifndef _D_SEND_MESSAGE_QUEUE_H_ +#define _D_SEND_MESSAGE_QUEUE_H_ + +#include "common.h" +#include "RequestSlotMan.h" + +class SendMessageQueue { +private: + int cuid; + RequestSlotMan* requestSlotMan; + PendingMessages pendingMessages; + const Logger* logger; +public: + SendMessageQueue(int cuid, PeerConnection* peerConnection, + TorrentMan* torrentMan, const Logger* logger); + ~SendMessageQueue(); + + void send(); + + void addPendingMessage(const PendingMessage& pendingMessage); + void deletePendingPieceMessage(const PeerMessage* cancelMessage); + void deletePendingRequestMessage(); + + void deleteRequestSlot(const RequestSlot& requestSlot); + void deleteTimeoutRequestSlot(Piece& piece); + void deleteCompletedRequestSlot(const Piece& piece); + RequestSlot getCorrespoindingRequestSlot(const PeerMessage* pieceMessage) const; + + void cancelAllRequest(); + void cancelAllRequest(Piece& piece); + + int countPendingMessage() const; + int countRequestSlot() const; +}; + +#endif // _D_SEND_MESSAGE_QUEUE_H_ |
