summaryrefslogtreecommitdiff
path: root/src/PeerConnection.h
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2010-03-04 16:24:03 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2010-03-04 16:24:03 +0000
commit8b73c2843f659fe6cafd94534481e371888f0b5e (patch)
treea228c40972e5a2053ef2837b8df7687019f99d9f /src/PeerConnection.h
parent5d05ef0e756a7c52673fcf78b4ab8c9ccee2154d (diff)
2010-03-05 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Reduced copying/std::string instantiation in sending/receiving BitTorrent messages. * src/BtBitfieldMessage.cc * src/BtBitfieldMessage.h * src/BtExtendedMessage.cc * src/BtExtendedMessage.h * src/BtHandshakeMessage.cc * src/BtHandshakeMessage.h * src/BtKeepAliveMessage.cc * src/BtKeepAliveMessage.h * src/BtPieceMessage.cc * src/BtPieceMessage.h * src/BtPortMessage.cc * src/BtPortMessage.h * src/BtUnchokeMessage.h * src/DefaultBtMessageReceiver.cc * src/IndexBtMessage.cc * src/IndexBtMessage.h * src/PeerConnection.cc * src/PeerConnection.h * src/RangeBtMessage.cc * src/RangeBtMessage.h * src/SimpleBtMessage.cc * src/SimpleBtMessage.h * src/SocketBuffer.cc * src/SocketBuffer.h * src/ZeroBtMessage.cc * src/ZeroBtMessage.h * test/BtAllowedFastMessageTest.cc * test/BtBitfieldMessageTest.cc * test/BtCancelMessageTest.cc * test/BtChokeMessageTest.cc * test/BtExtendedMessageTest.cc * test/BtHandshakeMessageTest.cc * test/BtHaveAllMessageTest.cc * test/BtHaveMessageTest.cc * test/BtHaveNoneMessageTest.cc * test/BtInterestedMessageTest.cc * test/BtKeepAliveMessageTest.cc * test/BtNotInterestedMessageTest.cc * test/BtPieceMessageTest.cc * test/BtPortMessageTest.cc * test/BtRejectMessageTest.cc * test/BtRequestMessageTest.cc * test/BtSuggestPieceMessageTest.cc * test/BtUnchokeMessageTest.cc
Diffstat (limited to 'src/PeerConnection.h')
-rw-r--r--src/PeerConnection.h22
1 files changed, 20 insertions, 2 deletions
diff --git a/src/PeerConnection.h b/src/PeerConnection.h
index b87102da..a7b41f14 100644
--- a/src/PeerConnection.h
+++ b/src/PeerConnection.h
@@ -36,9 +36,11 @@
#define _D_PEER_CONNECTION_H_
#include "common.h"
+
+#include <unistd.h>
+
#include "SharedHandle.h"
#include "SocketBuffer.h"
-#include <unistd.h>
namespace aria2 {
@@ -57,7 +59,7 @@ private:
SharedHandle<SocketCore> socket;
Logger* logger;
- unsigned char resbuf[MAX_PAYLOAD_LEN];
+ unsigned char* resbuf;
size_t resbufLength;
size_t currentPayloadLength;
unsigned char lenbuf[4];
@@ -83,6 +85,10 @@ public:
// Returns the number of bytes written
ssize_t sendMessage(const unsigned char* data, size_t dataLength);
+ void pushBytes(unsigned char* data, size_t len);
+
+ void pushStr(const std::string& data);
+
bool receiveMessage(unsigned char* data, size_t& dataLength);
/**
@@ -101,6 +107,18 @@ public:
bool sendBufferIsEmpty() const;
ssize_t sendPendingData();
+
+ const unsigned char* getBuffer() const
+ {
+ return resbuf;
+ }
+
+ unsigned char* detachBuffer()
+ {
+ unsigned char* detachbuf = resbuf;
+ resbuf = new unsigned char[MAX_PAYLOAD_LEN];
+ return detachbuf;
+ }
};
typedef SharedHandle<PeerConnection> PeerConnectionHandle;