backport #2553: Fixed Poco::MongoDB not working on big-endian architecture system

This commit is contained in:
Günter Obiltschnig 2018-11-23 08:34:21 +01:00
parent 8d95644bad
commit 584482677f
2 changed files with 5 additions and 5 deletions

View File

@ -84,7 +84,7 @@ void Document::read(BinaryReader& reader)
while (type != '\0') while (type != '\0')
{ {
Element::Ptr element; Element::Ptr element;
std::string name = BSONReader(reader).readCString(); std::string name = BSONReader(reader).readCString();
switch (type) switch (type)
@ -198,7 +198,7 @@ void Document::write(BinaryWriter& writer)
else else
{ {
std::stringstream sstream; std::stringstream sstream;
Poco::BinaryWriter tempWriter(sstream); Poco::BinaryWriter tempWriter(sstream, BinaryWriter::LITTLE_ENDIAN_BYTE_ORDER);
for (ElementSet::iterator it = _elements.begin(); it != _elements.end(); ++it) for (ElementSet::iterator it = _elements.begin(); it != _elements.end(); ++it)
{ {
tempWriter << static_cast<unsigned char>((*it)->type()); tempWriter << static_cast<unsigned char>((*it)->type());
@ -207,7 +207,7 @@ void Document::write(BinaryWriter& writer)
element->write(tempWriter); element->write(tempWriter);
} }
tempWriter.flush(); tempWriter.flush();
Poco::Int32 len = static_cast<Poco::Int32>(5 + sstream.tellp()); /* 5 = sizeof(len) + 0-byte */ Poco::Int32 len = static_cast<Poco::Int32>(5 + sstream.tellp()); /* 5 = sizeof(len) + 0-byte */
writer << len; writer << len;
writer.writeRaw(sstream.str()); writer.writeRaw(sstream.str());

View File

@ -21,7 +21,7 @@ namespace Poco {
namespace MongoDB { namespace MongoDB {
RequestMessage::RequestMessage(MessageHeader::OpCode opcode): RequestMessage::RequestMessage(MessageHeader::OpCode opcode):
Message(opcode) Message(opcode)
{ {
} }
@ -35,7 +35,7 @@ RequestMessage::~RequestMessage()
void RequestMessage::send(std::ostream& ostr) void RequestMessage::send(std::ostream& ostr)
{ {
std::stringstream ss; std::stringstream ss;
BinaryWriter requestWriter(ss); BinaryWriter requestWriter(ss, BinaryWriter::LITTLE_ENDIAN_BYTE_ORDER);
buildRequest(requestWriter); buildRequest(requestWriter);
requestWriter.flush(); requestWriter.flush();