Merge remote-tracking branch 'origin/poco-1.8.0' into poco-1.8.0

This commit is contained in:
Francis ANDRE 2017-10-31 18:11:51 +01:00
commit 5591d10a21
310 changed files with 6021 additions and 1144 deletions

View File

@ -37,20 +37,24 @@ class Foundation_API Base64DecoderBuf: public UnbufferedStreamBuf
/// its streambuf. /// its streambuf.
{ {
public: public:
Base64DecoderBuf(std::istream& istr); Base64DecoderBuf(std::istream& istr, int options = 0);
~Base64DecoderBuf(); ~Base64DecoderBuf();
private: private:
int readFromDevice(); int readFromDevice();
int readOne(); int readOne();
int _options;
unsigned char _group[3]; unsigned char _group[3];
int _groupLength; int _groupLength;
int _groupIndex; int _groupIndex;
std::streambuf& _buf; std::streambuf& _buf;
const unsigned char* _pInEncoding;
static unsigned char IN_ENCODING[256]; static unsigned char IN_ENCODING[256];
static bool IN_ENCODING_INIT; static bool IN_ENCODING_INIT;
static unsigned char IN_ENCODING_URL[256];
static bool IN_ENCODING_URL_INIT;
private: private:
Base64DecoderBuf(const Base64DecoderBuf&); Base64DecoderBuf(const Base64DecoderBuf&);
@ -65,7 +69,7 @@ class Foundation_API Base64DecoderIOS: public virtual std::ios
/// order of the stream buffer and base classes. /// order of the stream buffer and base classes.
{ {
public: public:
Base64DecoderIOS(std::istream& istr); Base64DecoderIOS(std::istream& istr, int options = 0);
~Base64DecoderIOS(); ~Base64DecoderIOS();
Base64DecoderBuf* rdbuf(); Base64DecoderBuf* rdbuf();
@ -89,7 +93,7 @@ class Foundation_API Base64Decoder: public Base64DecoderIOS, public std::istream
/// its streambuf. /// its streambuf.
{ {
public: public:
Base64Decoder(std::istream& istr); Base64Decoder(std::istream& istr, int options = 0);
~Base64Decoder(); ~Base64Decoder();
private: private:

View File

@ -26,6 +26,19 @@
namespace Poco { namespace Poco {
enum Base64EncodingOptions
{
BASE64_URL_ENCODING = 0x01,
/// Use the URL and filename-safe alphabet,
/// replacing '+' with '-' and '/' with '_'.
///
/// Will also set line length to unlimited.
BASE64_NO_PADDING = 0x02
/// Do not append padding characters ('=') at end.
};
class Foundation_API Base64EncoderBuf: public UnbufferedStreamBuf class Foundation_API Base64EncoderBuf: public UnbufferedStreamBuf
/// This streambuf base64-encodes all data written /// This streambuf base64-encodes all data written
/// to it and forwards it to a connected /// to it and forwards it to a connected
@ -37,7 +50,7 @@ class Foundation_API Base64EncoderBuf: public UnbufferedStreamBuf
/// not updated to match the buffer's state. /// not updated to match the buffer's state.
{ {
public: public:
Base64EncoderBuf(std::ostream& ostr); Base64EncoderBuf(std::ostream& ostr, int options = 0);
~Base64EncoderBuf(); ~Base64EncoderBuf();
int close(); int close();
@ -57,13 +70,16 @@ public:
private: private:
int writeToDevice(char c); int writeToDevice(char c);
int _options;
unsigned char _group[3]; unsigned char _group[3];
int _groupLength; int _groupLength;
int _pos; int _pos;
int _lineLength; int _lineLength;
std::streambuf& _buf; std::streambuf& _buf;
const unsigned char* _pOutEncoding;
static const unsigned char OUT_ENCODING[64]; static const unsigned char OUT_ENCODING[64];
static const unsigned char OUT_ENCODING_URL[64];
friend class Base64DecoderBuf; friend class Base64DecoderBuf;
@ -79,7 +95,7 @@ class Foundation_API Base64EncoderIOS: public virtual std::ios
/// order of the stream buffer and base classes. /// order of the stream buffer and base classes.
{ {
public: public:
Base64EncoderIOS(std::ostream& ostr); Base64EncoderIOS(std::ostream& ostr, int options = 0);
~Base64EncoderIOS(); ~Base64EncoderIOS();
int close(); int close();
Base64EncoderBuf* rdbuf(); Base64EncoderBuf* rdbuf();
@ -107,7 +123,7 @@ class Foundation_API Base64Encoder: public Base64EncoderIOS, public std::ostream
/// not updated to match the buffer's state. /// not updated to match the buffer's state.
{ {
public: public:
Base64Encoder(std::ostream& ostr); Base64Encoder(std::ostream& ostr, int options = 0);
~Base64Encoder(); ~Base64Encoder();
private: private:

View File

@ -1,8 +1,6 @@
// //
// RecursiveDirectoryIteratorStategies.h // RecursiveDirectoryIteratorStategies.h
// //
// $Id$
//
// Library: Foundation // Library: Foundation
// Package: Filesystem // Package: Filesystem
// Module: RecursiveDirectoryIterator // Module: RecursiveDirectoryIterator

View File

@ -1,8 +1,6 @@
// //
// EventChannel.h // EventChannel.h
// //
// $Id$
//
// Library: Foundation // Library: Foundation
// Package: Logging // Package: Logging
// Module: EventChannel // Module: EventChannel

View File

@ -1,8 +1,6 @@
// //
// RecursiveDirectoryIterator.h // RecursiveDirectoryIterator.h
// //
// $Id$
//
// Library: Foundation // Library: Foundation
// Package: Filesystem // Package: Filesystem
// Module: RecursiveDirectoryIterator // Module: RecursiveDirectoryIterator

View File

@ -1,8 +1,6 @@
// //
// RecursiveDirectoryIteratorImpl.h // RecursiveDirectoryIteratorImpl.h
// //
// $Id$
//
// Library: Foundation // Library: Foundation
// Package: Filesystem // Package: Filesystem
// Module: RecursiveDirectoryIterator // Module: RecursiveDirectoryIterator

View File

@ -1,8 +1,6 @@
// //
// SortedDirectoryIterator.h // SortedDirectoryIterator.h
// //
// $Id$
//
// Library: Foundation // Library: Foundation
// Package: Filesystem // Package: Filesystem
// Module: DirectoryIterator // Module: DirectoryIterator

View File

@ -23,6 +23,8 @@ namespace Poco {
unsigned char Base64DecoderBuf::IN_ENCODING[256]; unsigned char Base64DecoderBuf::IN_ENCODING[256];
bool Base64DecoderBuf::IN_ENCODING_INIT = false; bool Base64DecoderBuf::IN_ENCODING_INIT = false;
unsigned char Base64DecoderBuf::IN_ENCODING_URL[256];
bool Base64DecoderBuf::IN_ENCODING_URL_INIT = false;
namespace namespace
@ -31,12 +33,32 @@ namespace
} }
Base64DecoderBuf::Base64DecoderBuf(std::istream& istr): Base64DecoderBuf::Base64DecoderBuf(std::istream& istr, int options):
_options(options),
_groupLength(0), _groupLength(0),
_groupIndex(0), _groupIndex(0),
_buf(*istr.rdbuf()) _buf(*istr.rdbuf()),
_pInEncoding((options & BASE64_URL_ENCODING) ? IN_ENCODING_URL : IN_ENCODING)
{ {
FastMutex::ScopedLock lock(mutex); FastMutex::ScopedLock lock(mutex);
if (options & BASE64_URL_ENCODING)
{
if (!IN_ENCODING_URL_INIT)
{
for (unsigned i = 0; i < sizeof(IN_ENCODING_URL); i++)
{
IN_ENCODING_URL[i] = 0xFF;
}
for (unsigned i = 0; i < sizeof(Base64EncoderBuf::OUT_ENCODING_URL); i++)
{
IN_ENCODING_URL[Base64EncoderBuf::OUT_ENCODING_URL[i]] = i;
}
IN_ENCODING_URL[static_cast<unsigned char>('=')] = '\0';
IN_ENCODING_URL_INIT = true;
}
}
else
{
if (!IN_ENCODING_INIT) if (!IN_ENCODING_INIT)
{ {
for (unsigned i = 0; i < sizeof(IN_ENCODING); i++) for (unsigned i = 0; i < sizeof(IN_ENCODING); i++)
@ -50,6 +72,7 @@ Base64DecoderBuf::Base64DecoderBuf(std::istream& istr):
IN_ENCODING[static_cast<unsigned char>('=')] = '\0'; IN_ENCODING[static_cast<unsigned char>('=')] = '\0';
IN_ENCODING_INIT = true; IN_ENCODING_INIT = true;
} }
}
} }
@ -70,20 +93,36 @@ int Base64DecoderBuf::readFromDevice()
int c; int c;
if ((c = readOne()) == -1) return -1; if ((c = readOne()) == -1) return -1;
buffer[0] = (unsigned char) c; buffer[0] = (unsigned char) c;
if (IN_ENCODING[buffer[0]] == 0xFF) throw DataFormatException(); if (_pInEncoding[buffer[0]] == 0xFF) throw DataFormatException();
if ((c = readOne()) == -1) throw DataFormatException(); if ((c = readOne()) == -1) return -1;
buffer[1] = (unsigned char) c; buffer[1] = (unsigned char) c;
if (IN_ENCODING[buffer[1]] == 0xFF) throw DataFormatException(); if (_pInEncoding[buffer[1]] == 0xFF) throw DataFormatException();
if (_options & BASE64_NO_PADDING)
{
if ((c = readOne()) != -1)
buffer[2] = c;
else
buffer[2] = '=';
if (_pInEncoding[buffer[2]] == 0xFF) throw DataFormatException();
if ((c = readOne()) != -1)
buffer[3] = c;
else
buffer[3] = '=';
if (_pInEncoding[buffer[3]] == 0xFF) throw DataFormatException();
}
else
{
if ((c = readOne()) == -1) throw DataFormatException(); if ((c = readOne()) == -1) throw DataFormatException();
buffer[2] = c; buffer[2] = c;
if (IN_ENCODING[buffer[2]] == 0xFF) throw DataFormatException(); if (_pInEncoding[buffer[2]] == 0xFF) throw DataFormatException();
if ((c = readOne()) == -1) throw DataFormatException(); if ((c = readOne()) == -1) throw DataFormatException();
buffer[3] = c; buffer[3] = c;
if (IN_ENCODING[buffer[3]] == 0xFF) throw DataFormatException(); if (_pInEncoding[buffer[3]] == 0xFF) throw DataFormatException();
}
_group[0] = (IN_ENCODING[buffer[0]] << 2) | (IN_ENCODING[buffer[1]] >> 4); _group[0] = (_pInEncoding[buffer[0]] << 2) | (_pInEncoding[buffer[1]] >> 4);
_group[1] = ((IN_ENCODING[buffer[1]] & 0x0F) << 4) | (IN_ENCODING[buffer[2]] >> 2); _group[1] = ((_pInEncoding[buffer[1]] & 0x0F) << 4) | (_pInEncoding[buffer[2]] >> 2);
_group[2] = (IN_ENCODING[buffer[2]] << 6) | IN_ENCODING[buffer[3]]; _group[2] = (_pInEncoding[buffer[2]] << 6) | _pInEncoding[buffer[3]];
if (buffer[2] == '=') if (buffer[2] == '=')
_groupLength = 1; _groupLength = 1;
@ -100,13 +139,16 @@ int Base64DecoderBuf::readFromDevice()
int Base64DecoderBuf::readOne() int Base64DecoderBuf::readOne()
{ {
int ch = _buf.sbumpc(); int ch = _buf.sbumpc();
if (!(_options & BASE64_URL_ENCODING))
{
while (ch == ' ' || ch == '\r' || ch == '\t' || ch == '\n') while (ch == ' ' || ch == '\r' || ch == '\t' || ch == '\n')
ch = _buf.sbumpc(); ch = _buf.sbumpc();
}
return ch; return ch;
} }
Base64DecoderIOS::Base64DecoderIOS(std::istream& istr): _buf(istr) Base64DecoderIOS::Base64DecoderIOS(std::istream& istr, int options): _buf(istr, options)
{ {
poco_ios_init(&_buf); poco_ios_init(&_buf);
} }
@ -123,7 +165,7 @@ Base64DecoderBuf* Base64DecoderIOS::rdbuf()
} }
Base64Decoder::Base64Decoder(std::istream& istr): Base64DecoderIOS(istr), std::istream(&_buf) Base64Decoder::Base64Decoder(std::istream& istr, int options): Base64DecoderIOS(istr, options), std::istream(&_buf)
{ {
} }

View File

@ -31,11 +31,26 @@ const unsigned char Base64EncoderBuf::OUT_ENCODING[64] =
}; };
Base64EncoderBuf::Base64EncoderBuf(std::ostream& ostr): const unsigned char Base64EncoderBuf::OUT_ENCODING_URL[64] =
{
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',
'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X',
'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f',
'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n',
'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
'w', 'x', 'y', 'z', '0', '1', '2', '3',
'4', '5', '6', '7', '8', '9', '-', '_'
};
Base64EncoderBuf::Base64EncoderBuf(std::ostream& ostr, int options):
_options(options),
_groupLength(0), _groupLength(0),
_pos(0), _pos(0),
_lineLength(72), _lineLength((options & BASE64_URL_ENCODING) ? 0 : 72),
_buf(*ostr.rdbuf()) _buf(*ostr.rdbuf()),
_pOutEncoding((options & BASE64_URL_ENCODING) ? OUT_ENCODING_URL : OUT_ENCODING)
{ {
} }
@ -73,13 +88,13 @@ int Base64EncoderBuf::writeToDevice(char c)
{ {
unsigned char idx; unsigned char idx;
idx = _group[0] >> 2; idx = _group[0] >> 2;
if (_buf.sputc(OUT_ENCODING[idx]) == eof) return eof; if (_buf.sputc(_pOutEncoding[idx]) == eof) return eof;
idx = ((_group[0] & 0x03) << 4) | (_group[1] >> 4); idx = ((_group[0] & 0x03) << 4) | (_group[1] >> 4);
if (_buf.sputc(OUT_ENCODING[idx]) == eof) return eof; if (_buf.sputc(_pOutEncoding[idx]) == eof) return eof;
idx = ((_group[1] & 0x0F) << 2) | (_group[2] >> 6); idx = ((_group[1] & 0x0F) << 2) | (_group[2] >> 6);
if (_buf.sputc(OUT_ENCODING[idx]) == eof) return eof; if (_buf.sputc(_pOutEncoding[idx]) == eof) return eof;
idx = _group[2] & 0x3F; idx = _group[2] & 0x3F;
if (_buf.sputc(OUT_ENCODING[idx]) == eof) return eof; if (_buf.sputc(_pOutEncoding[idx]) == eof) return eof;
_pos += 4; _pos += 4;
if (_lineLength > 0 && _pos >= _lineLength) if (_lineLength > 0 && _pos >= _lineLength)
{ {
@ -103,30 +118,36 @@ int Base64EncoderBuf::close()
_group[1] = 0; _group[1] = 0;
unsigned char idx; unsigned char idx;
idx = _group[0] >> 2; idx = _group[0] >> 2;
if (_buf.sputc(OUT_ENCODING[idx]) == eof) return eof; if (_buf.sputc(_pOutEncoding[idx]) == eof) return eof;
idx = ((_group[0] & 0x03) << 4) | (_group[1] >> 4); idx = ((_group[0] & 0x03) << 4) | (_group[1] >> 4);
if (_buf.sputc(OUT_ENCODING[idx]) == eof) return eof; if (_buf.sputc(_pOutEncoding[idx]) == eof) return eof;
if (!(_options & BASE64_NO_PADDING))
{
if (_buf.sputc('=') == eof) return eof; if (_buf.sputc('=') == eof) return eof;
if (_buf.sputc('=') == eof) return eof; if (_buf.sputc('=') == eof) return eof;
} }
}
else if (_groupLength == 2) else if (_groupLength == 2)
{ {
_group[2] = 0; _group[2] = 0;
unsigned char idx; unsigned char idx;
idx = _group[0] >> 2; idx = _group[0] >> 2;
if (_buf.sputc(OUT_ENCODING[idx]) == eof) return eof; if (_buf.sputc(_pOutEncoding[idx]) == eof) return eof;
idx = ((_group[0] & 0x03) << 4) | (_group[1] >> 4); idx = ((_group[0] & 0x03) << 4) | (_group[1] >> 4);
if (_buf.sputc(OUT_ENCODING[idx]) == eof) return eof; if (_buf.sputc(_pOutEncoding[idx]) == eof) return eof;
idx = ((_group[1] & 0x0F) << 2) | (_group[2] >> 6); idx = ((_group[1] & 0x0F) << 2) | (_group[2] >> 6);
if (_buf.sputc(OUT_ENCODING[idx]) == eof) return eof; if (_buf.sputc(_pOutEncoding[idx]) == eof) return eof;
if (!(_options & BASE64_NO_PADDING))
{
if (_buf.sputc('=') == eof) return eof; if (_buf.sputc('=') == eof) return eof;
} }
}
_groupLength = 0; _groupLength = 0;
return _buf.pubsync(); return _buf.pubsync();
} }
Base64EncoderIOS::Base64EncoderIOS(std::ostream& ostr): _buf(ostr) Base64EncoderIOS::Base64EncoderIOS(std::ostream& ostr, int options): _buf(ostr, options)
{ {
poco_ios_init(&_buf); poco_ios_init(&_buf);
} }
@ -149,7 +170,7 @@ Base64EncoderBuf* Base64EncoderIOS::rdbuf()
} }
Base64Encoder::Base64Encoder(std::ostream& ostr): Base64EncoderIOS(ostr), std::ostream(&_buf) Base64Encoder::Base64Encoder(std::ostream& ostr, int options): Base64EncoderIOS(ostr, options), std::ostream(&_buf)
{ {
} }

View File

@ -1,8 +1,6 @@
// //
// RecursiveDirectoryIteratorStategies.cpp // RecursiveDirectoryIteratorStategies.cpp
// //
// $Id$
//
// Library: Foundation // Library: Foundation
// Package: Filesystem // Package: Filesystem
// Module: RecursiveDirectoryIterator // Module: RecursiveDirectoryIterator

View File

@ -1,8 +1,6 @@
// //
// EventChannel.cpp // EventChannel.cpp
// //
// $Id$
//
// Library: Foundation // Library: Foundation
// Package: Logging // Package: Logging
// Module: EventChannel // Module: EventChannel

View File

@ -1,8 +1,6 @@
// //
// SortedDirectoryIterator.cpp // SortedDirectoryIterator.cpp
// //
// $Id$
//
// Library: Foundation // Library: Foundation
// Package: Filesystem // Package: Filesystem
// Module: DirectoryIterator // Module: DirectoryIterator

View File

@ -55,6 +55,79 @@ void Base64Test::testEncoder()
encoder.close(); encoder.close();
assert (str.str() == "QUJDREVG"); assert (str.str() == "QUJDREVG");
} }
{
std::ostringstream str;
Base64Encoder encoder(str);
encoder << "!@#$%^&*()_~<>";
encoder.close();
assert (str.str() == "IUAjJCVeJiooKV9+PD4=");
}
}
void Base64Test::testEncoderURL()
{
{
std::ostringstream str;
Base64Encoder encoder(str, Poco::BASE64_URL_ENCODING);
encoder << std::string("\00\01\02\03\04\05", 6);
encoder.close();
assert (str.str() == "AAECAwQF");
}
{
std::ostringstream str;
Base64Encoder encoder(str, Poco::BASE64_URL_ENCODING);
encoder << std::string("\00\01\02\03", 4);
encoder.close();
assert (str.str() == "AAECAw==");
}
{
std::ostringstream str;
Base64Encoder encoder(str, Poco::BASE64_URL_ENCODING);
encoder << "ABCDEF";
encoder.close();
assert (str.str() == "QUJDREVG");
}
{
std::ostringstream str;
Base64Encoder encoder(str, Poco::BASE64_URL_ENCODING);
encoder << "!@#$%^&*()_~<>";
encoder.close();
assert (str.str() == "IUAjJCVeJiooKV9-PD4=");
}
}
void Base64Test::testEncoderNoPadding()
{
{
std::ostringstream str;
Base64Encoder encoder(str, Poco::BASE64_URL_ENCODING | Poco::BASE64_NO_PADDING);
encoder << std::string("\00\01\02\03\04\05", 6);
encoder.close();
assert (str.str() == "AAECAwQF");
}
{
std::ostringstream str;
Base64Encoder encoder(str, Poco::BASE64_URL_ENCODING | Poco::BASE64_NO_PADDING);
encoder << std::string("\00\01\02\03", 4);
encoder.close();
assert (str.str() == "AAECAw");
}
{
std::ostringstream str;
Base64Encoder encoder(str, Poco::BASE64_URL_ENCODING | Poco::BASE64_NO_PADDING);
encoder << "ABCDEF";
encoder.close();
assert (str.str() == "QUJDREVG");
}
{
std::ostringstream str;
Base64Encoder encoder(str, Poco::BASE64_URL_ENCODING | Poco::BASE64_NO_PADDING);
encoder << "!@#$%^&*()_~<>";
encoder.close();
assert (str.str() == "IUAjJCVeJiooKV9-PD4");
}
} }
@ -125,6 +198,115 @@ void Base64Test::testDecoder()
} }
void Base64Test::testDecoderURL()
{
{
std::istringstream istr("AAECAwQF");
Base64Decoder decoder(istr, Poco::BASE64_URL_ENCODING);
assert (decoder.good() && decoder.get() == 0);
assert (decoder.good() && decoder.get() == 1);
assert (decoder.good() && decoder.get() == 2);
assert (decoder.good() && decoder.get() == 3);
assert (decoder.good() && decoder.get() == 4);
assert (decoder.good() && decoder.get() == 5);
assert (decoder.good() && decoder.get() == -1);
}
{
std::istringstream istr("AAECAwQ=");
Base64Decoder decoder(istr, Poco::BASE64_URL_ENCODING);
assert (decoder.good() && decoder.get() == 0);
assert (decoder.good() && decoder.get() == 1);
assert (decoder.good() && decoder.get() == 2);
assert (decoder.good() && decoder.get() == 3);
assert (decoder.good() && decoder.get() == 4);
assert (decoder.good() && decoder.get() == -1);
}
{
std::istringstream istr("AAECAw==", Poco::BASE64_URL_ENCODING);
Base64Decoder decoder(istr);
assert (decoder.good() && decoder.get() == 0);
assert (decoder.good() && decoder.get() == 1);
assert (decoder.good() && decoder.get() == 2);
assert (decoder.good() && decoder.get() == 3);
assert (decoder.good() && decoder.get() == -1);
}
{
std::istringstream istr("QUJDREVG", Poco::BASE64_URL_ENCODING);
Base64Decoder decoder(istr);
std::string s;
decoder >> s;
assert (s == "ABCDEF");
assert (decoder.eof());
assert (!decoder.fail());
}
{
std::istringstream istr("QUJ\r\nDRE\r\nVG");
Base64Decoder decoder(istr, Poco::BASE64_URL_ENCODING);
std::string s;
decoder >> s;
assert (decoder.bad());
}
{
std::istringstream istr("QUJD#REVG");
Base64Decoder decoder(istr, Poco::BASE64_URL_ENCODING);
std::string s;
try
{
decoder >> s;
assert (decoder.bad());
}
catch (DataFormatException&)
{
}
assert (!decoder.eof());
}
{
std::istringstream istr("IUAjJCVeJiooKV9-PD4=");
Base64Decoder decoder(istr, Poco::BASE64_URL_ENCODING);
std::string s;
decoder >> s;
assert (s == "!@#$%^&*()_~<>");
assert (decoder.eof());
assert (!decoder.fail());
}
}
void Base64Test::testDecoderNoPadding()
{
{
std::istringstream istr("AAECAwQF");
Base64Decoder decoder(istr, Poco::BASE64_NO_PADDING);
assert (decoder.good() && decoder.get() == 0);
assert (decoder.good() && decoder.get() == 1);
assert (decoder.good() && decoder.get() == 2);
assert (decoder.good() && decoder.get() == 3);
assert (decoder.good() && decoder.get() == 4);
assert (decoder.good() && decoder.get() == 5);
assert (decoder.good() && decoder.get() == -1);
}
{
std::istringstream istr("AAECAwQ");
Base64Decoder decoder(istr, Poco::BASE64_NO_PADDING);
assert (decoder.good() && decoder.get() == 0);
assert (decoder.good() && decoder.get() == 1);
assert (decoder.good() && decoder.get() == 2);
assert (decoder.good() && decoder.get() == 3);
assert (decoder.good() && decoder.get() == 4);
assert (decoder.good() && decoder.get() == -1);
}
{
std::istringstream istr("AAECAw");
Base64Decoder decoder(istr, Poco::BASE64_NO_PADDING);
assert (decoder.good() && decoder.get() == 0);
assert (decoder.good() && decoder.get() == 1);
assert (decoder.good() && decoder.get() == 2);
assert (decoder.good() && decoder.get() == 3);
assert (decoder.good() && decoder.get() == -1);
}
}
void Base64Test::testEncodeDecode() void Base64Test::testEncodeDecode()
{ {
{ {
@ -170,7 +352,11 @@ CppUnit::Test* Base64Test::suite()
CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("Base64Test"); CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("Base64Test");
CppUnit_addTest(pSuite, Base64Test, testEncoder); CppUnit_addTest(pSuite, Base64Test, testEncoder);
CppUnit_addTest(pSuite, Base64Test, testEncoderURL);
CppUnit_addTest(pSuite, Base64Test, testEncoderNoPadding);
CppUnit_addTest(pSuite, Base64Test, testDecoder); CppUnit_addTest(pSuite, Base64Test, testDecoder);
CppUnit_addTest(pSuite, Base64Test, testDecoderURL);
CppUnit_addTest(pSuite, Base64Test, testDecoderNoPadding);
CppUnit_addTest(pSuite, Base64Test, testEncodeDecode); CppUnit_addTest(pSuite, Base64Test, testEncodeDecode);
return pSuite; return pSuite;

View File

@ -25,7 +25,11 @@ public:
~Base64Test(); ~Base64Test();
void testEncoder(); void testEncoder();
void testEncoderURL();
void testEncoderNoPadding();
void testDecoder(); void testDecoder();
void testDecoderURL();
void testDecoderNoPadding();
void testEncodeDecode(); void testEncodeDecode();
void setUp(); void setUp();

View File

@ -1,8 +1,6 @@
// //
// Array.h // Array.h
// //
// $Id$
//
// Library: JSON // Library: JSON
// Package: JSON // Package: JSON
// Module: Array // Module: Array

View File

@ -1,8 +1,6 @@
// //
// Handler.h // Handler.h
// //
// $Id$
//
// Library: JSON // Library: JSON
// Package: JSON // Package: JSON
// Module: Handler // Module: Handler

View File

@ -1,8 +1,6 @@
// //
// JSON.h // JSON.h
// //
// $Id$
//
// Library: JSON // Library: JSON
// Package: JSON // Package: JSON
// Module: JSON // Module: JSON

View File

@ -1,8 +1,6 @@
// //
// JSONException.h // JSONException.h
// //
// $Id$
//
// Library: JSON // Library: JSON
// Package: JSON // Package: JSON
// Module: JSONException // Module: JSONException

View File

@ -1,8 +1,6 @@
// //
// Object.h // Object.h
// //
// $Id$
//
// Library: JSON // Library: JSON
// Package: JSON // Package: JSON
// Module: Object // Module: Object

View File

@ -1,8 +1,6 @@
// //
// ParseHandler.h // ParseHandler.h
// //
// $Id$
//
// Library: JSON // Library: JSON
// Package: JSON // Package: JSON
// Module: ParseHandler // Module: ParseHandler

View File

@ -1,8 +1,6 @@
// //
// Parser.h // Parser.h
// //
// $Id$
//
// Library: JSON // Library: JSON
// Package: JSON // Package: JSON
// Module: Parser // Module: Parser

View File

@ -1,8 +1,6 @@
// //
// Parser.h // Parser.h
// //
// $Id$
//
// Library: JSON // Library: JSON
// Package: JSON // Package: JSON
// Module: ParserImpl // Module: ParserImpl

View File

@ -1,8 +1,6 @@
// //
// PrintHandler.h // PrintHandler.h
// //
// $Id$
//
// Library: JSON // Library: JSON
// Package: JSON // Package: JSON
// Module: PrintHandler // Module: PrintHandler

View File

@ -1,8 +1,6 @@
// //
// Query.h // Query.h
// //
// $Id$
//
// Library: JSON // Library: JSON
// Package: JSON // Package: JSON
// Module: Query // Module: Query

View File

@ -1,8 +1,6 @@
// //
// Stringifier.h // Stringifier.h
// //
// $Id$
//
// Library: JSON // Library: JSON
// Package: JSON // Package: JSON
// Module: Stringifier // Module: Stringifier

View File

@ -1,8 +1,6 @@
// //
// Template.h // Template.h
// //
// $Id$
//
// Library: JSON // Library: JSON
// Package: JSON // Package: JSON
// Module: Template // Module: Template

View File

@ -1,8 +1,6 @@
// //
// TemplateCache.h // TemplateCache.h
// //
// $Id$
//
// Library: JSON // Library: JSON
// Package: JSON // Package: JSON
// Module: TemplateCache // Module: TemplateCache

View File

@ -1,8 +1,6 @@
// //
// Benchmark.cpp // Benchmark.cpp
// //
// $Id$
//
// This sample shows a benchmark of the JSON parser. // This sample shows a benchmark of the JSON parser.
// //
// Copyright (c) 2012, Applied Informatics Software Engineering GmbH. // Copyright (c) 2012, Applied Informatics Software Engineering GmbH.

View File

@ -1,8 +1,6 @@
// //
// Array.cpp // Array.cpp
// //
// $Id$
//
// Library: JSON // Library: JSON
// Package: JSON // Package: JSON
// Module: Array // Module: Array

View File

@ -1,8 +1,6 @@
// //
// Handler.cpp // Handler.cpp
// //
// $Id$
//
// Library: JSON // Library: JSON
// Package: JSON // Package: JSON
// Module: Handler // Module: Handler

View File

@ -1,8 +1,6 @@
// //
// JSONException.cpp // JSONException.cpp
// //
// $Id$
//
// Library: JSON // Library: JSON
// Package: JSON // Package: JSON
// Module: JSONException // Module: JSONException

View File

@ -1,8 +1,6 @@
// //
// Object.cpp // Object.cpp
// //
// $Id$
//
// Library: JSON // Library: JSON
// Package: JSON // Package: JSON
// Module: Object // Module: Object

View File

@ -1,8 +1,6 @@
// //
// ParseHandler.cpp // ParseHandler.cpp
// //
// $Id$
//
// Library: JSON // Library: JSON
// Package: JSON // Package: JSON
// Module: ParseHandler // Module: ParseHandler

View File

@ -1,8 +1,6 @@
// //
// Parser.cpp // Parser.cpp
// //
// $Id$
//
// Library: JSON // Library: JSON
// Package: JSON // Package: JSON
// Module: Parser // Module: Parser

View File

@ -1,8 +1,6 @@
// //
// Parser.cpp // Parser.cpp
// //
// $Id$
//
// Library: JSON // Library: JSON
// Package: JSON // Package: JSON
// Module: Parser // Module: Parser

View File

@ -1,8 +1,6 @@
// //
// PrintHandler.cpp // PrintHandler.cpp
// //
// $Id$
//
// Library: JSON // Library: JSON
// Package: JSON // Package: JSON
// Module: PrintHandler // Module: PrintHandler

View File

@ -1,8 +1,6 @@
// //
// Query.cpp // Query.cpp
// //
// $Id$
//
// Library: JSON // Library: JSON
// Package: JSON // Package: JSON
// Module: Query // Module: Query

View File

@ -1,8 +1,6 @@
// //
// Stringifier.cpp // Stringifier.cpp
// //
// $Id$
//
// Library: JSON // Library: JSON
// Package: JSON // Package: JSON
// Module: Stringifier // Module: Stringifier

View File

@ -1,8 +1,6 @@
// //
// Template.cpp // Template.cpp
// //
// $Id$
//
// Library: JSON // Library: JSON
// Package: JSON // Package: JSON
// Module: Template // Module: Template

View File

@ -1,8 +1,6 @@
// //
// TemplateCache.cpp // TemplateCache.cpp
// //
// $Id$
//
// Library: JSON // Library: JSON
// Package: JSON // Package: JSON
// Module: TemplateCache // Module: TemplateCache

View File

@ -3,7 +3,7 @@
#include <stdio.h> #include <stdio.h>
#if defined(__cplusplus) && !defined(POCO_OS_FAMILY_WINDOWS) #if defined(__cplusplus) && !(defined(_WIN32_WCE) || defined(_WIN32) || defined(_WIN64))
extern "C" { extern "C" {
#endif #endif
@ -43,7 +43,7 @@ size_t json_get_position(json_stream *json);
size_t json_get_depth(json_stream *json); size_t json_get_depth(json_stream *json);
const char *json_get_error(json_stream *json); const char *json_get_error(json_stream *json);
#if defined(__cplusplus) && !defined(POCO_OS_FAMILY_WINDOWS) #if defined(__cplusplus) && !(defined(_WIN32_WCE) || defined(_WIN32) || defined(_WIN64))
} }
#endif #endif

View File

@ -6,10 +6,6 @@
#endif // __STDC_VERSION__ #endif // __STDC_VERSION__
#include <stdio.h> #include <stdio.h>
#if defined(__cplusplus) && !defined(POCO_OS_FAMILY_WINDOWS)
extern "C" {
#endif
struct json_source { struct json_source {
int (*get) (struct json_source *); int (*get) (struct json_source *);
int (*peek) (struct json_source *); int (*peek) (struct json_source *);
@ -53,8 +49,4 @@ struct json_stream {
char errmsg[128]; char errmsg[128];
}; };
#if defined(__cplusplus) && !defined(POCO_OS_FAMILY_WINDOWS)
}
#endif
#endif #endif

View File

@ -1,8 +1,6 @@
// //
// JSONTestSuite.h // JSONTestSuite.h
// //
// $Id$
//
// Definition of the JSONTestSuite class. // Definition of the JSONTestSuite class.
// //
// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH. // Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH.

View File

@ -1,8 +1,6 @@
// //
// Array.h // Array.h
// //
// $Id$
//
// Library: MongoDB // Library: MongoDB
// Package: MongoDB // Package: MongoDB
// Module: Array // Module: Array

View File

@ -1,8 +1,6 @@
// //
// BSONReader.h // BSONReader.h
// //
// $Id$
//
// Library: MongoDB // Library: MongoDB
// Package: MongoDB // Package: MongoDB
// Module: BSONReader // Module: BSONReader

View File

@ -1,8 +1,6 @@
// //
// BSONWriter.h // BSONWriter.h
// //
// $Id$
//
// Library: MongoDB // Library: MongoDB
// Package: MongoDB // Package: MongoDB
// Module: BSONWriter // Module: BSONWriter

View File

@ -1,8 +1,6 @@
// //
// Binary.h // Binary.h
// //
// $Id$
//
// Library: MongoDB // Library: MongoDB
// Package: MongoDB // Package: MongoDB
// Module: Binary // Module: Binary

View File

@ -1,8 +1,6 @@
// //
// Connection.h // Connection.h
// //
// $Id$
//
// Library: MongoDB // Library: MongoDB
// Package: MongoDB // Package: MongoDB
// Module: Connection // Module: Connection

View File

@ -1,8 +1,6 @@
// //
// Cursor.h // Cursor.h
// //
// $Id$
//
// Library: MongoDB // Library: MongoDB
// Package: MongoDB // Package: MongoDB
// Module: Cursor // Module: Cursor

View File

@ -1,8 +1,6 @@
// //
// Database.h // Database.h
// //
// $Id$
//
// Library: MongoDB // Library: MongoDB
// Package: MongoDB // Package: MongoDB
// Module: Database // Module: Database

View File

@ -1,8 +1,6 @@
// //
// DeleteRequest.h // DeleteRequest.h
// //
// $Id$
//
// Library: MongoDB // Library: MongoDB
// Package: MongoDB // Package: MongoDB
// Module: DeleteRequest // Module: DeleteRequest

View File

@ -1,8 +1,6 @@
// //
// Document.h // Document.h
// //
// $Id$
//
// Library: MongoDB // Library: MongoDB
// Package: MongoDB // Package: MongoDB
// Module: Document // Module: Document

View File

@ -1,8 +1,6 @@
// //
// Element.h // Element.h
// //
// $Id$
//
// Library: MongoDB // Library: MongoDB
// Package: MongoDB // Package: MongoDB
// Module: Element // Module: Element

View File

@ -1,8 +1,6 @@
// //
// GetMoreRequest.h // GetMoreRequest.h
// //
// $Id$
//
// Library: MongoDB // Library: MongoDB
// Package: MongoDB // Package: MongoDB
// Module: GetMoreRequest // Module: GetMoreRequest

View File

@ -1,8 +1,6 @@
// //
// InsertRequest.h // InsertRequest.h
// //
// $Id$
//
// Library: MongoDB // Library: MongoDB
// Package: MongoDB // Package: MongoDB
// Module: InsertRequest // Module: InsertRequest

View File

@ -1,8 +1,6 @@
// //
// JavaScriptCode.h // JavaScriptCode.h
// //
// $Id$
//
// Library: MongoDB // Library: MongoDB
// Package: MongoDB // Package: MongoDB
// Module: JavaScriptCode // Module: JavaScriptCode

View File

@ -1,8 +1,6 @@
// //
// KillCursorsRequest.h // KillCursorsRequest.h
// //
// $Id$
//
// Library: MongoDB // Library: MongoDB
// Package: MongoDB // Package: MongoDB
// Module: KillCursorsRequest // Module: KillCursorsRequest

View File

@ -1,8 +1,6 @@
// //
// Message.h // Message.h
// //
// $Id$
//
// Library: MongoDB // Library: MongoDB
// Package: MongoDB // Package: MongoDB
// Module: Message // Module: Message

View File

@ -1,8 +1,6 @@
// //
// MessageHeader.h // MessageHeader.h
// //
// $Id$
//
// Library: MongoDB // Library: MongoDB
// Package: MongoDB // Package: MongoDB
// Module: MessageHeader // Module: MessageHeader

View File

@ -1,8 +1,6 @@
// //
// MongoDB.h // MongoDB.h
// //
// $Id$
//
// Library: MongoDB // Library: MongoDB
// Package: MongoDB // Package: MongoDB
// Module: MongoDB // Module: MongoDB

View File

@ -1,8 +1,6 @@
// //
// Array.h // Array.h
// //
// $Id$
//
// Library: MongoDB // Library: MongoDB
// Package: MongoDB // Package: MongoDB
// Module: ObjectId // Module: ObjectId

View File

@ -1,8 +1,6 @@
// //
// PoolableConnectionFactory.h // PoolableConnectionFactory.h
// //
// $Id$
//
// Library: MongoDB // Library: MongoDB
// Package: MongoDB // Package: MongoDB
// Module: PoolableConnectionFactory // Module: PoolableConnectionFactory

View File

@ -1,8 +1,6 @@
// //
// QueryRequest.h // QueryRequest.h
// //
// $Id$
//
// Library: MongoDB // Library: MongoDB
// Package: MongoDB // Package: MongoDB
// Module: QueryRequest // Module: QueryRequest

View File

@ -1,8 +1,6 @@
// //
// RegularExpression.h // RegularExpression.h
// //
// $Id$
//
// Library: MongoDB // Library: MongoDB
// Package: MongoDB // Package: MongoDB
// Module: RegularExpression // Module: RegularExpression

View File

@ -1,8 +1,6 @@
// //
// ReplicaSet.h // ReplicaSet.h
// //
// $Id$
//
// Library: MongoDB // Library: MongoDB
// Package: MongoDB // Package: MongoDB
// Module: ReplicaSet // Module: ReplicaSet

View File

@ -1,8 +1,6 @@
// //
// RequestMessage.h // RequestMessage.h
// //
// $Id$
//
// Library: MongoDB // Library: MongoDB
// Package: MongoDB // Package: MongoDB
// Module: RequestMessage // Module: RequestMessage

View File

@ -1,8 +1,6 @@
// //
// ResponseMessage.h // ResponseMessage.h
// //
// $Id$
//
// Library: MongoDB // Library: MongoDB
// Package: MongoDB // Package: MongoDB
// Module: ResponseMessage // Module: ResponseMessage

View File

@ -1,8 +1,6 @@
// //
// UpdateRequest.h // UpdateRequest.h
// //
// $Id$
//
// Library: MongoDB // Library: MongoDB
// Package: MongoDB // Package: MongoDB
// Module: UpdateRequest // Module: UpdateRequest

View File

@ -1,8 +1,6 @@
// //
// main.cpp // main.cpp
// //
// $Id$
//
// This sample shows SQL to mongo Shell to C++ examples. // This sample shows SQL to mongo Shell to C++ examples.
// //
// Copyright (c) 2013, Applied Informatics Software Engineering GmbH. // Copyright (c) 2013, Applied Informatics Software Engineering GmbH.

View File

@ -1,8 +1,6 @@
// //
// Array.cpp // Array.cpp
// //
// $Id$
//
// Library: MongoDB // Library: MongoDB
// Package: MongoDB // Package: MongoDB
// Module: Array // Module: Array

View File

@ -1,8 +1,6 @@
// //
// Binary.cpp // Binary.cpp
// //
// $Id$
//
// Library: MongoDB // Library: MongoDB
// Package: MongoDB // Package: MongoDB
// Module: Binary // Module: Binary

View File

@ -1,8 +1,6 @@
// //
// Connection.cpp // Connection.cpp
// //
// $Id$
//
// Library: MongoDB // Library: MongoDB
// Package: MongoDB // Package: MongoDB
// Module: Connection // Module: Connection

View File

@ -1,8 +1,6 @@
// //
// Cursor.cpp // Cursor.cpp
// //
// $Id$
//
// Library: MongoDB // Library: MongoDB
// Package: MongoDB // Package: MongoDB
// Module: Cursor // Module: Cursor

View File

@ -1,8 +1,6 @@
// //
// Database.cpp // Database.cpp
// //
// $Id$
//
// Library: MongoDB // Library: MongoDB
// Package: MongoDB // Package: MongoDB
// Module: Database // Module: Database

View File

@ -1,8 +1,6 @@
// //
// DeleteRequest.cpp // DeleteRequest.cpp
// //
// $Id$
//
// Library: MongoDB // Library: MongoDB
// Package: MongoDB // Package: MongoDB
// Module: DeleteRequest // Module: DeleteRequest

View File

@ -1,8 +1,6 @@
// //
// Document.cpp // Document.cpp
// //
// $Id$
//
// Library: MongoDB // Library: MongoDB
// Package: MongoDB // Package: MongoDB
// Module: Document // Module: Document

View File

@ -1,8 +1,6 @@
// //
// Element.cpp // Element.cpp
// //
// $Id$
//
// Library: MongoDB // Library: MongoDB
// Package: MongoDB // Package: MongoDB
// Module: Element // Module: Element

View File

@ -1,8 +1,6 @@
// //
// GetMoreRequest.cpp // GetMoreRequest.cpp
// //
// $Id$
//
// Library: MongoDB // Library: MongoDB
// Package: MongoDB // Package: MongoDB
// Module: GetMoreRequest // Module: GetMoreRequest

View File

@ -1,8 +1,6 @@
// //
// InsertRequest.cpp // InsertRequest.cpp
// //
// $Id$
//
// Library: MongoDB // Library: MongoDB
// Package: MongoDB // Package: MongoDB
// Module: InsertRequest // Module: InsertRequest

View File

@ -1,8 +1,6 @@
// //
// JavaScriptCode.cpp // JavaScriptCode.cpp
// //
// $Id$
//
// Library: MongoDB // Library: MongoDB
// Package: MongoDB // Package: MongoDB
// Module: JavaScriptCode // Module: JavaScriptCode

View File

@ -1,8 +1,6 @@
// //
// KillCursorsRequest.cpp // KillCursorsRequest.cpp
// //
// $Id$
//
// Library: MongoDB // Library: MongoDB
// Package: MongoDB // Package: MongoDB
// Module: KillCursorsRequest // Module: KillCursorsRequest

View File

@ -1,8 +1,6 @@
// //
// Message.cpp // Message.cpp
// //
// $Id$
//
// Library: MongoDB // Library: MongoDB
// Package: MongoDB // Package: MongoDB
// Module: Message // Module: Message

View File

@ -1,8 +1,6 @@
// //
// MessageHeader.cpp // MessageHeader.cpp
// //
// $Id$
//
// Library: MongoDB // Library: MongoDB
// Package: MongoDB // Package: MongoDB
// Module: MessageHeader // Module: MessageHeader

View File

@ -1,8 +1,6 @@
// //
// ObjectId.cpp // ObjectId.cpp
// //
// $Id$
//
// Library: MongoDB // Library: MongoDB
// Package: MongoDB // Package: MongoDB
// Module: ObjectId // Module: ObjectId

View File

@ -1,8 +1,6 @@
// //
// QueryRequest.cpp // QueryRequest.cpp
// //
// $Id$
//
// Library: MongoDB // Library: MongoDB
// Package: MongoDB // Package: MongoDB
// Module: QueryRequest // Module: QueryRequest

View File

@ -1,8 +1,6 @@
// //
// RegularExpression.cpp // RegularExpression.cpp
// //
// $Id$
//
// Library: MongoDB // Library: MongoDB
// Package: MongoDB // Package: MongoDB
// Module: RegularExpression // Module: RegularExpression

View File

@ -1,8 +1,6 @@
// //
// ReplicaSet.cpp // ReplicaSet.cpp
// //
// $Id$
//
// Library: MongoDB // Library: MongoDB
// Package: MongoDB // Package: MongoDB
// Module: ReplicaSet // Module: ReplicaSet

View File

@ -1,8 +1,6 @@
// //
// RequestMessage.cpp // RequestMessage.cpp
// //
// $Id$
//
// Library: MongoDB // Library: MongoDB
// Package: MongoDB // Package: MongoDB
// Module: RequestMessage // Module: RequestMessage

View File

@ -1,8 +1,6 @@
// //
// ResponseMessage.cpp // ResponseMessage.cpp
// //
// $Id$
//
// Library: MongoDB // Library: MongoDB
// Package: MongoDB // Package: MongoDB
// Module: ResponseMessage // Module: ResponseMessage

View File

@ -1,8 +1,6 @@
// //
// UpdateRequest.cpp // UpdateRequest.cpp
// //
// $Id$
//
// Library: MongoDB // Library: MongoDB
// Package: MongoDB // Package: MongoDB
// Module: UpdateRequest // Module: UpdateRequest

View File

@ -1,8 +1,6 @@
// //
// Driver.cpp // Driver.cpp
// //
// $Id$
//
// Console-based test driver for Poco MongoDB. // Console-based test driver for Poco MongoDB.
// //
// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH. // Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH.

View File

@ -1,8 +1,6 @@
// //
// MongoDBTest.cpp // MongoDBTest.cpp
// //
// $Id$
//
// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH. // Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH.
// and Contributors. // and Contributors.
// //

View File

@ -1,8 +1,6 @@
// //
// MongoDBTest.h // MongoDBTest.h
// //
// $Id$
//
// Definition of the MongoDBTest class. // Definition of the MongoDBTest class.
// //
// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH. // Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH.

View File

@ -1,8 +1,6 @@
// //
// MongoDBTestSuite.cpp // MongoDBTestSuite.cpp
// //
// $Id$
//
// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH. // Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH.
// and Contributors. // and Contributors.
// //

View File

@ -1,8 +1,6 @@
// //
// MongoDBTestSuite.h // MongoDBTestSuite.h
// //
// $Id$
//
// Definition of the MongoDBTestSuite class. // Definition of the MongoDBTestSuite class.
// //
// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH. // Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH.

View File

@ -1,8 +1,6 @@
// //
// WinCEDriver.cpp // WinCEDriver.cpp
// //
// $Id$
//
// Console-based test driver for Windows CE. // Console-based test driver for Windows CE.
// //
// Copyright (c) 2004-2010, Applied Informatics Software Engineering GmbH. // Copyright (c) 2004-2010, Applied Informatics Software Engineering GmbH.

View File

@ -1,8 +1,6 @@
// //
// WinDriver.cpp // WinDriver.cpp
// //
// $Id$
//
// Windows test driver for Poco MongoDB. // Windows test driver for Poco MongoDB.
// //
// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH. // Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH.

View File

@ -32,9 +32,16 @@ class Net_API DatagramSocket: public Socket
{ {
public: public:
DatagramSocket(); DatagramSocket();
/// Creates an unconnected IPv4 datagram socket. /// Creates an unconnected, unbound datagram socket.
///
/// Before the datagram socket can be used, bind(),
/// bind6() or connect() must be called.
///
/// Notice: The behavior of this constructor has changed
/// in release 2.0. Previously, the constructor created
/// an unbound IPv4 datagram socket.
explicit DatagramSocket(IPAddress::Family family); explicit DatagramSocket(SocketAddress::Family family);
/// Creates an unconnected datagram socket. /// Creates an unconnected datagram socket.
/// ///
/// The socket will be created for the /// The socket will be created for the
@ -80,6 +87,20 @@ public:
/// ///
/// Calls to connect cannot() come before calls to bind(). /// Calls to connect cannot() come before calls to bind().
void bind(const SocketAddress& address, bool reuseAddress, bool reusePort);
/// Bind a local address to the socket.
///
/// This is usually only done when establishing a server
/// socket.
///
/// If reuseAddress is true, sets the SO_REUSEADDR
/// socket option.
///
/// If reusePort is true, sets the SO_REUSEPORT
/// socket option.
///
/// Calls to connect cannot() come before calls to bind().
int sendBytes(const void* buffer, int length, int flags = 0); int sendBytes(const void* buffer, int length, int flags = 0);
/// Sends the contents of the given buffer through /// Sends the contents of the given buffer through
/// the socket. /// the socket.

View File

@ -33,7 +33,7 @@ public:
DatagramSocketImpl(); DatagramSocketImpl();
/// Creates an unconnected, unbound datagram socket. /// Creates an unconnected, unbound datagram socket.
explicit DatagramSocketImpl(IPAddress::Family family); explicit DatagramSocketImpl(SocketAddress::Family family);
/// Creates an unconnected datagram socket. /// Creates an unconnected datagram socket.
/// ///
/// The socket will be created for the /// The socket will be created for the

View File

@ -225,6 +225,24 @@ public:
/// to ensure a new connection will be set up /// to ensure a new connection will be set up
/// for the next request. /// for the next request.
virtual bool peekResponse(HTTPResponse& response);
/// If the request contains a "Expect: 100-continue" header,
/// (see HTTPRequest::setExpectContinue()) this method can be
/// used to check whether the server has sent a 100 Continue response
/// before continuing with the request, i.e. sending the request body,
/// after calling sendRequest().
///
/// Returns true if the server has responded with 100 Continue,
/// otherwise false. The HTTPResponse object contains the
/// response sent by the server.
///
/// In any case, receiveResponse() must be called afterwards as well in
/// order to complete the request. The same HTTPResponse object
/// passed to peekResponse() must also be passed to receiveResponse().
///
/// This method should only be called if the request contains
/// a "Expect: 100-continue" header.
void reset(); void reset();
/// Resets the session and closes the socket. /// Resets the session and closes the socket.
/// ///
@ -289,6 +307,7 @@ private:
bool _reconnect; bool _reconnect;
bool _mustReconnect; bool _mustReconnect;
bool _expectResponseBody; bool _expectResponseBody;
bool _responseReceived;
Poco::SharedPtr<std::ostream> _pRequestStream; Poco::SharedPtr<std::ostream> _pRequestStream;
Poco::SharedPtr<std::istream> _pResponseStream; Poco::SharedPtr<std::istream> _pResponseStream;

Some files were not shown because too many files have changed in this diff Show More