Files
XPlaneConnectCSP/xpcPlugin/Message.h
Jason Watkins ceba580450 Addressed issues found by Google code lint.
Fixed:
 - Removed trailing whitespace.
 - Removed out of date TODO's.
 - Added #include<algorithm> to DataManager.cpp
 - Reordered includes to include C system headers before C++ system headers.
 - Added username to TODO's
 - Renamed include guards to use full project name as prefix.
 - Made methods and parameters const where possible.
 - Made UDPSocket constructor explicit.

Won't Fix:
 - snprintf is introduced in C++11.
 - Trailing comments at the end of namespace & header guards
 - Did not re-inlude headers already included by the matching XPC header.
 - localtime is fine since X-Plane is not multithreaded at all on the plugin side.
 - Linter confuses #elif with parens as a function call.
 - namespace indentation
2015-05-08 15:18:24 -07:00

57 lines
1.5 KiB
C++

//Copyright (c) 2013-2015 United States Government as represented by the Administrator of the
//National Aeronautics and Space Administration. All Rights Reserved.
#ifndef XPCPLUGIN_MESSAGE_H_
#define XPCPLUGIN_MESSAGE_H_
#include "UDPSocket.h"
namespace XPC
{
/// Represents a message received from an XPC client.
///
/// \author Jason Watkins
/// \version 1.0
/// \since 1.0
/// \date Intial Version: 2015-04-11
/// \date Last Updated: 2015-04-11
class Message
{
public:
/// Reads a datagram from the specified socket and interprets it as a
/// message.
///
/// \param sock The socket to read from.
/// \returns A message parsed from the data read from sock. If no
/// data was read or an error occurs, returns a message
/// with the size set to 0.
static Message ReadFrom(const UDPSocket& sock);
/// Gets the message header in binary form.
unsigned long GetMagicNumber() const;
/// Gets the message header.
std::string GetHead() const;
/// Gets the buffer underlying the message.
const unsigned char* GetBuffer() const;
/// Gets the size of the message in bytes.
std::size_t GetSize() const;
/// Gets the address this message was read from.
struct sockaddr GetSource() const;
/// Prints the contents of the message to the XPC log.
void PrintToLog() const;
private:
Message();
static const std::size_t bufferSize = 4096;
unsigned char buffer[bufferSize];
std::size_t size;
struct sockaddr source;
};
}
#endif