mirror of https://github.com/aria2/aria2
2009-11-22 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Added bencode::decode overload functions. They have extra argument 'end', passed by reference. 'end' points to the beyond the last position of data used in decoding process. * src/bencode.cc * src/bencode.h * test/BencodeTest.ccpull/1/head
parent
93968c4fa5
commit
5130b5c1e0
|
@ -1,3 +1,12 @@
|
|||
2009-11-22 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
|
||||
|
||||
Added bencode::decode overload functions. They have extra argument
|
||||
'end', passed by reference. 'end' points to the beyond the last
|
||||
position of data used in decoding process.
|
||||
* src/bencode.cc
|
||||
* src/bencode.h
|
||||
* test/BencodeTest.cc
|
||||
|
||||
2009-11-21 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
|
||||
|
||||
Initial support of Extension for Peers to Send Metadata
|
||||
|
|
|
@ -155,13 +155,21 @@ BDE decode(std::istream& in)
|
|||
}
|
||||
|
||||
BDE decode(const std::string& s)
|
||||
{
|
||||
size_t end;
|
||||
return decode(s, end);
|
||||
}
|
||||
|
||||
BDE decode(const std::string& s, size_t& end)
|
||||
{
|
||||
if(s.empty()) {
|
||||
return BDE::none;
|
||||
}
|
||||
std::istringstream ss(s);
|
||||
|
||||
return decodeiter(ss);
|
||||
BDE bde = decodeiter(ss);
|
||||
end = ss.tellg();
|
||||
return bde;
|
||||
}
|
||||
|
||||
BDE decode(const unsigned char* data, size_t length)
|
||||
|
@ -169,6 +177,11 @@ BDE decode(const unsigned char* data, size_t length)
|
|||
return decode(std::string(&data[0], &data[length]));
|
||||
}
|
||||
|
||||
BDE decode(const unsigned char* data, size_t length, size_t& end)
|
||||
{
|
||||
return decode(std::string(&data[0], &data[length]), end);
|
||||
}
|
||||
|
||||
BDE decodeFromFile(const std::string& filename)
|
||||
{
|
||||
std::ifstream f(filename.c_str(), std::ios::binary);
|
||||
|
|
|
@ -51,8 +51,14 @@ BDE decode(std::istream& in);
|
|||
// Decode the data in s.
|
||||
BDE decode(const std::string& s);
|
||||
|
||||
// Decode the data in s. After decode is done successfully, return the
|
||||
// bencoded string length in end.
|
||||
BDE decode(const std::string& s, size_t& end);
|
||||
|
||||
BDE decode(const unsigned char* data, size_t length);
|
||||
|
||||
BDE decode(const unsigned char* data, size_t length, size_t& end);
|
||||
|
||||
BDE decodeFromFile(const std::string& filename);
|
||||
|
||||
std::string encode(const BDE& bde);
|
||||
|
|
|
@ -146,6 +146,13 @@ void BencodeTest::testDecode()
|
|||
BDE s = bencode::decode("5:aria2trail");
|
||||
CPPUNIT_ASSERT_EQUAL(std::string("aria2"), s.s());
|
||||
}
|
||||
{
|
||||
// Get trailing garbage position
|
||||
size_t end;
|
||||
BDE s = bencode::decode("5:aria2trail", end);
|
||||
CPPUNIT_ASSERT_EQUAL(std::string("aria2"), s.s());
|
||||
CPPUNIT_ASSERT_EQUAL((size_t)7, end);
|
||||
}
|
||||
}
|
||||
|
||||
void BencodeTest::testEncode()
|
||||
|
|
Loading…
Reference in New Issue