poco/MongoDB/include/Poco/MongoDB/MessageHeader.h
Roger Meier b0581433a7 LICENSE: add info about SPDX-License-Identifier usage and use it
fix: remove executable flag and change back to 100644 (was 100755)

Signed-off-by: Roger Meier <r.meier@siemens.com>
2014-05-14 08:38:09 +02:00

130 lines
2.2 KiB
C++

//
// MessageHeader.h
//
// $Id$
//
// Library: MongoDB
// Package: MongoDB
// Module: MessageHeader
//
// Definition of the MessageHeader class.
//
// Copyright (c) 2012, Applied Informatics Software Engineering GmbH.
// and Contributors.
//
// SPDX-License-Identifier: BSL-1.0
//
#ifndef MongoDB_MessageHeader_INCLUDED
#define MongoDB_MessageHeader_INCLUDED
#include "Poco/MongoDB/MongoDB.h"
#include "Poco/MongoDB/MessageHeader.h"
namespace Poco {
namespace MongoDB {
class MongoDB_API MessageHeader
/// Represents the header which is always prepended to a request
/// or response of MongoDB
{
public:
static const unsigned int MSG_HEADER_SIZE = 16;
typedef enum
{
Reply = 1
, Msg = 1000
, Update = 2001
, Insert = 2002
, Query = 2004
, GetMore = 2005
, Delete = 2006
, KillCursors = 2007
} OpCode;
virtual ~MessageHeader();
/// Destructor
void read(BinaryReader& reader);
/// Reads the header
void write(BinaryWriter& writer);
/// Writes the header
Int32 getMessageLength() const;
/// Returns the message length
OpCode opCode() const;
/// Returns the OpCode
Int32 getRequestID() const;
/// Returns the request id of the current message
void setRequestID(Int32 id);
/// Sets the request id of the current message
Int32 responseTo() const;
/// Returns the request id from the original request.
private:
MessageHeader(OpCode opcode);
/// Constructor.
void setMessageLength(Int32 length);
/// Sets the message length
Int32 _messageLength;
Int32 _requestID;
Int32 _responseTo;
OpCode _opCode;
friend class Message;
};
inline MessageHeader::OpCode MessageHeader::opCode() const
{
return _opCode;
}
inline Int32 MessageHeader::getMessageLength() const
{
return _messageLength;
}
inline void MessageHeader::setMessageLength(Int32 length)
{
poco_assert (_messageLength >= 0);
_messageLength = MSG_HEADER_SIZE + length;
}
inline void MessageHeader::setRequestID(Int32 id)
{
_requestID = id;
}
inline Int32 MessageHeader::getRequestID() const
{
return _requestID;
}
inline Int32 MessageHeader::responseTo() const
{
return _responseTo;
}
} } // namespace Poco::MongoDB
#endif //MongoDB_MessageHeader_INCLUDED