version 1.14, 2008/08/28 17:24:36
|
version 1.15, 2008/11/12 17:22:32
|
|
|
// | // |
//%//////////////////////////////////////////////////////////////////////////// | //%//////////////////////////////////////////////////////////////////////////// |
| |
|
#if defined(PEGASUS_ENABLE_INTERNAL_BINARY_PROTOCOL) |
|
# include <Pegasus/Common/CIMBinMsgSerializer.h> |
|
# include <Pegasus/Common/CIMBinMsgDeserializer.h> |
|
#else |
#include <Pegasus/Common/CIMMessageSerializer.h> | #include <Pegasus/Common/CIMMessageSerializer.h> |
#include <Pegasus/Common/CIMMessageDeserializer.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> |
|
|
# error "Unsupported platform" | # error "Unsupported platform" |
#endif | #endif |
| |
|
|
PEGASUS_NAMESPACE_BEGIN | PEGASUS_NAMESPACE_BEGIN |
| |
AnonymousPipe::Status AnonymousPipe::writeMessage (CIMMessage * message) | AnonymousPipe::Status AnonymousPipe::writeMessage (CIMMessage * message) |
|
|
// | // |
// Serialize the request | // Serialize the request |
// | // |
|
#if defined(PEGASUS_ENABLE_INTERNAL_BINARY_PROTOCOL) |
|
CIMBuffer messageBuffer(4096); |
|
#else |
Buffer messageBuffer; | Buffer messageBuffer; |
messageBuffer.reserveCapacity (4096); | messageBuffer.reserveCapacity (4096); |
|
#endif |
|
|
try | try |
{ | { |
|
#if defined(PEGASUS_ENABLE_INTERNAL_BINARY_PROTOCOL) |
|
CIMBinMsgSerializer::serialize(messageBuffer, message); |
|
#else |
CIMMessageSerializer::serialize (messageBuffer, message); | CIMMessageSerializer::serialize (messageBuffer, message); |
|
#endif |
} | } |
catch (Exception & e) | catch (Exception & e) |
{ | { |
|
|
// | // |
// Read the message data | // Read the message data |
// | // |
|
#if defined(PEGASUS_ENABLE_INTERNAL_BINARY_PROTOCOL) |
|
// CIMBuffer uses realloc() and free() so the buffer must be allocated |
|
// with malloc(). |
|
AutoPtr<char, FreeCharPtr> messageBuffer((char*)malloc(messageLength + 1)); |
|
#else |
AutoArrayPtr <char> messageBuffer (new char [messageLength + 1]); | 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_INTERNAL_BINARY_PROTOCOL) |
|
// CIMBuffer frees messageBuffer upon destruction. |
|
CIMBuffer buf(messageBuffer.release(), messageLength); |
|
message = CIMBinMsgDeserializer::deserialize(buf, messageLength); |
|
|
|
if (!message) |
|
{ |
|
throw CIMException(CIM_ERR_FAILED, "deserialize() failed"); |
|
} |
|
#else |
message = CIMMessageDeserializer::deserialize (messageBuffer.get ()); | message = CIMMessageDeserializer::deserialize (messageBuffer.get ()); |
|
#endif |
} | } |
catch (Exception & e) | catch (Exception & e) |
{ | { |