version 1.19, 2008/12/16 18:55:59
|
version 1.20, 2011/01/20 13:08:18
|
|
|
// | // |
//%//////////////////////////////////////////////////////////////////////////// | //%//////////////////////////////////////////////////////////////////////////// |
| |
#if defined(PEGASUS_ENABLE_PROTOCOL_INTERNAL_BINARY) |
|
# include <Pegasus/Common/CIMBinMsgSerializer.h> | # include <Pegasus/Common/CIMBinMsgSerializer.h> |
# include <Pegasus/Common/CIMBinMsgDeserializer.h> | # include <Pegasus/Common/CIMBinMsgDeserializer.h> |
#else |
|
# include <Pegasus/Common/CIMMessageSerializer.h> |
|
# include <Pegasus/Common/CIMMessageDeserializer.h> |
|
#endif |
|
|
|
#include <Pegasus/Common/MessageLoader.h> | #include <Pegasus/Common/MessageLoader.h> |
#include <Pegasus/Common/Exception.h> | #include <Pegasus/Common/Exception.h> |
#include <Pegasus/Common/Tracer.h> | #include <Pegasus/Common/Tracer.h> |
|
|
// | // |
// Serialize the request | // Serialize the request |
// | // |
#if defined(PEGASUS_ENABLE_PROTOCOL_INTERNAL_BINARY) |
|
CIMBuffer messageBuffer(4096); | CIMBuffer messageBuffer(4096); |
#else |
|
Buffer messageBuffer; |
|
messageBuffer.reserveCapacity (4096); |
|
#endif |
|
| |
try | try |
{ | { |
#if defined(PEGASUS_ENABLE_PROTOCOL_INTERNAL_BINARY) |
|
CIMBinMsgSerializer::serialize(messageBuffer, message); | CIMBinMsgSerializer::serialize(messageBuffer, message); |
#else |
|
CIMMessageSerializer::serialize (messageBuffer, message); |
|
#endif |
|
} | } |
catch (Exception & e) | catch (Exception & e) |
{ | { |
|
|
// | // |
// Read the message data | // Read the message data |
// | // |
#if defined(PEGASUS_ENABLE_PROTOCOL_INTERNAL_BINARY) |
|
// CIMBuffer uses realloc() and free() so the buffer must be allocated | // CIMBuffer uses realloc() and free() so the buffer must be allocated |
// with malloc(). | // with malloc(). |
AutoPtr<char, FreeCharPtr> messageBuffer((char*)malloc(messageLength + 1)); | AutoPtr<char, FreeCharPtr> messageBuffer((char*)malloc(messageLength + 1)); |
#else |
|
AutoArrayPtr <char> messageBuffer (new char [messageLength + 1]); |
|
#endif |
|
| |
// | // |
// We know a message is coming | // We know a message is coming |
|
|
// | // |
// De-serialize the message | // De-serialize the message |
// | // |
#if defined(PEGASUS_ENABLE_PROTOCOL_INTERNAL_BINARY) |
|
// CIMBuffer frees messageBuffer upon destruction. | // CIMBuffer frees messageBuffer upon destruction. |
CIMBuffer buf(messageBuffer.release(), messageLength); | CIMBuffer buf(messageBuffer.release(), messageLength); |
message = CIMBinMsgDeserializer::deserialize(buf, messageLength); | message = CIMBinMsgDeserializer::deserialize(buf, messageLength); |
|
|
{ | { |
throw CIMException(CIM_ERR_FAILED, "deserialize() failed"); | throw CIMException(CIM_ERR_FAILED, "deserialize() failed"); |
} | } |
#else |
|
message = CIMMessageDeserializer::deserialize (messageBuffer.get ()); |
|
#endif |
|
} | } |
catch (Exception & e) | catch (Exception & e) |
{ | { |