GenericPacketParser Class Reference

#include <GenericPacketParser.h>

Inheritance diagram for GenericPacketParser:

PacketParser List of all members.

Detailed Description

A message parser using the cMemCommBuffer to serialize cmessages.

Author:
Bernhard Heep


Public Member Functions

char * encapsulatePayload (cMessage *msg, unsigned int *length)
 serializes messages in a buffer
cMessage * decapsulatePayload (char *buf, unsigned int length)
 deserializes messages from a char[] of size length

Private Attributes

cNetCommBuffer commBuffer
 the buffer used to encapsulate and decapsulate messages


Member Function Documentation

char * GenericPacketParser::encapsulatePayload ( cMessage *  msg,
unsigned int *  length 
) [virtual]

serializes messages in a buffer

Parameters:
msg the message to serialize
length the length of the message
Returns:
the encapsulated messages as a char[] of size length

Implements PacketParser.

00031 {
00032     commBuffer.reset();
00033     commBuffer.packObject(msg);
00034 
00035     *length = commBuffer.getMessageSize();    
00036     char* byte_buf = new char[*length];
00037     memcpy(byte_buf, commBuffer.getBuffer(), *length);
00038 
00039     return byte_buf;
00040 }

cMessage * GenericPacketParser::decapsulatePayload ( char *  buf,
unsigned int  length 
) [virtual]

deserializes messages from a char[] of size length

Parameters:
buf the buffer to extract the message from
length the length of the buffer
Returns:
the decapsulated cMessage

Implements PacketParser.

00043 {
00044     commBuffer.reset();
00045     commBuffer.pack(buf, length);
00046     cMessage* msg;
00047 
00048     try {
00049         msg = check_and_cast<cMessage*>(commBuffer.unpackObject());
00050 //    } catch (cRuntimeError err) {
00051 //    FIXME:
00052 //    the above does, for some reason, not work. So we catch everyting, 
00053 //    which may prevent the simulation from terminating corectly while
00054 //    parsing a message.
00055     } catch (...) {
00056         ev << "GenericPacketParser: parsing of payload failed.\n";
00057         return NULL;
00058     }
00059     
00060     return msg;
00061 }


Member Data Documentation

cNetCommBuffer GenericPacketParser::commBuffer [private]

the buffer used to encapsulate and decapsulate messages


The documentation for this class was generated from the following files:
Generated on Tue Jul 24 16:51:18 2007 for ITM OverSim by  doxygen 1.5.1