Gnutella::Packets::VendorMessages::VendorMessage Class Reference

#include <VendorMessage.h> [code]

Inherits Gnutella::Packets::Packet.

Inherited by Gnutella::Packets::VendorMessages::QueryStatusRequest, Gnutella::Packets::VendorMessages::QueryStatusResponse, and Gnutella::Packets::VendorMessages::SupportedMessages.

Inheritance diagram for Gnutella::Packets::VendorMessages::VendorMessage:

Inheritance graph
[legend]
Collaboration diagram for Gnutella::Packets::VendorMessages::VendorMessage:

Collaboration graph
[legend]
List of all members.

Detailed Description

Base class for Gnutella Vendor Messages.

This class is used for both vendor messages (payloadDescriptior = 0x31) and for standardized vendor messages (payloadDesctiptor = 0x32).

The table below presents the data fields required for all kinds of vendor messages. The concrete derived classes can define additional fileds.

Byte Offset Field Name getFunction setFunction
0..3 Vendor Code vendorCode N/A
4..5 Message Type messageType N/A
6..7 Version Number messageType N/A

Definition at line 48 of file VendorMessage.h.

Public Member Functions

 VendorMessage (PayloadDescriptor, VendorCode, quint16 messageType, quint16 verionNumber)
 VendorMessage (const QByteArray &rawHeader, const QByteArray &rawPayload)
 ~VendorMessage ()
VendorCode vendorCode () const
quint16 messageType () const
quint16 versionNumber () const

Static Public Member Functions

static VendorMessagecastFrom (Packet &packet)
static const VendorMessagecastFrom (const Packet &packet)
static PacketfromRawData (const QByteArray &rawHeader, const QByteArray &rawPayload)

Protected Member Functions

virtual bool prepareReadPayload (const QByteArray &rawPayload)=0
 Checks the lenght of the payload.
virtual void readPayload (QDataStream &stream)=0
 Reads the 8 bytes of VendorMessage header.
virtual int prepareWritePayload () const =0
 Returns the number of bytes in the VendorMessage header.
virtual void writePayload (QDataStream &stream) const =0
 Writes the VendorMessage header.

Protected Attributes

Gnutella::Packets::VendorMessages::VendorMessage::Data p

Classes

struct  Data


Constructor & Destructor Documentation

VendorMessage::VendorMessage PayloadDescriptor  payloadDescriptor,
VendorCode  vendorCode,
quint16  messageType,
quint16  versionNumber
 

Creates a default VectorMessage object without extensions.

Definition at line 30 of file VendorMessage.cpp.

VendorMessage::VendorMessage const QByteArray &  rawHeader,
const QByteArray &  rawPayload
 

Creates a VectorMessage object from the raw bytes in rawHeader and rawPayload.

Definition at line 46 of file VendorMessage.cpp.

VendorMessage::~VendorMessage  ) 
 

Destroys a VendorMessage object.

Definition at line 55 of file VendorMessage.cpp.


Member Function Documentation

static const VendorMessage& Gnutella::Packets::VendorMessages::VendorMessage::castFrom const Packet packet  )  [inline, static]
 

Reimplemented in Gnutella::Packets::VendorMessages::QueryStatusRequest, Gnutella::Packets::VendorMessages::QueryStatusResponse, and Gnutella::Packets::VendorMessages::SupportedMessages.

Definition at line 52 of file VendorMessage.h.

static VendorMessage& Gnutella::Packets::VendorMessages::VendorMessage::castFrom Packet packet  )  [inline, static]
 

Reimplemented in Gnutella::Packets::VendorMessages::QueryStatusRequest, Gnutella::Packets::VendorMessages::QueryStatusResponse, and Gnutella::Packets::VendorMessages::SupportedMessages.

Definition at line 51 of file VendorMessage.h.

Packet * VendorMessage::fromRawData const QByteArray &  rawHeader,
const QByteArray &  rawPayload
[static]
 

This function plays the role of a virtual constructor. Once you have read the complete raw data for a packet (yes, you should be aware of the format in order to do this, see PacketReader), call this function, which will create an object calling new and return it. Make sure you delete the object when done with it.

Todo:
That would become part of the PacketFactory for Gnutella.
See also:
PacketReader

Reimplemented from Gnutella::Packets::Packet.

Definition at line 106 of file VendorMessage.cpp.

quint16 Gnutella::Packets::VendorMessages::VendorMessage::messageType  )  const [inline]
 

Definition at line 85 of file VendorMessage.h.

bool VendorMessage::prepareReadPayload const QByteArray &  rawPayload  )  [protected, pure virtual]
 

Checks the lenght of the payload.

Overrides might call this function before doing their own check afterwards.

Implements Gnutella::Packets::Packet.

Implemented in Gnutella::Packets::VendorMessages::QueryStatusRequest, Gnutella::Packets::VendorMessages::QueryStatusResponse, and Gnutella::Packets::VendorMessages::SupportedMessages.

Definition at line 63 of file VendorMessage.cpp.

int VendorMessage::prepareWritePayload  )  const [protected, pure virtual]
 

Returns the number of bytes in the VendorMessage header.

Call this function to get the size of the VendorMessage header.

Implements Gnutella::Packets::Packet.

Implemented in Gnutella::Packets::VendorMessages::QueryStatusRequest, Gnutella::Packets::VendorMessages::QueryStatusResponse, and Gnutella::Packets::VendorMessages::SupportedMessages.

Definition at line 83 of file VendorMessage.cpp.

void VendorMessage::readPayload QDataStream &  stream  )  [protected, pure virtual]
 

Reads the 8 bytes of VendorMessage header.

Overrides should call this function before reading any data th.

Implements Gnutella::Packets::Packet.

Implemented in Gnutella::Packets::VendorMessages::QueryStatusRequest, Gnutella::Packets::VendorMessages::QueryStatusResponse, and Gnutella::Packets::VendorMessages::SupportedMessages.

Definition at line 72 of file VendorMessage.cpp.

VendorCode Gnutella::Packets::VendorMessages::VendorMessage::vendorCode  )  const [inline]
 

Definition at line 82 of file VendorMessage.h.

quint16 Gnutella::Packets::VendorMessages::VendorMessage::versionNumber  )  const [inline]
 

Definition at line 88 of file VendorMessage.h.

void VendorMessage::writePayload QDataStream &  stream  )  const [protected, pure virtual]
 

Writes the VendorMessage header.

Overrides should call this function before writing any data themselves.

Implements Gnutella::Packets::Packet.

Implemented in Gnutella::Packets::VendorMessages::QueryStatusRequest, Gnutella::Packets::VendorMessages::QueryStatusResponse, and Gnutella::Packets::VendorMessages::SupportedMessages.

Definition at line 92 of file VendorMessage.cpp.


Member Data Documentation

struct Gnutella::Packets::VendorMessages::VendorMessage::Data Gnutella::Packets::VendorMessages::VendorMessage::p [protected]
 

Reimplemented in Gnutella::Packets::VendorMessages::QueryStatusResponse, and Gnutella::Packets::VendorMessages::SupportedMessages.


The documentation for this class was generated from the following files: