OverSimMessage.cc
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #include <omnetpp.h>
00020 #include <cnetcommbuffer.h>
00021 #include "OverSimMessage_m.h"
00022 #include "OverSimMessage.h"
00023
00024 Register_Class(OverSimMessage);
00025
00026 void OverSimMessage::parsimPack(cCommBuffer *b)
00027 {
00028 cObject::parsimPack(b);
00029
00030 if (getContextPointer() || getControlInfo())
00031 throw cRuntimeError(this, "netPack(): cannot pack object with "
00032 "contextPointer or controlInfo set");
00033 if (getParList().size() > 0) {
00034 b->packFlag(true);
00035 b->packObject(&getParList());
00036 } else {
00037 b->packFlag(false);
00038 }
00039
00040 if (b->packFlag(getEncapsulatedPacket() != NULL))
00041 b->packObject(getEncapsulatedPacket());
00042 }
00043
00044 void OverSimMessage::parsimUnpack(cCommBuffer *b)
00045 {
00046 int len = 0;
00047 cNetCommBuffer *netBuffer = dynamic_cast<cNetCommBuffer*>(b);
00048 if (netBuffer != NULL) {
00049 len = netBuffer->getRemainingMessageSize();
00050 }
00051 cObject::parsimUnpack(b);
00052
00053 ASSERT(getShareCount() == 0);
00054
00055 if (b->checkFlag()) {
00056 cArray *parlistptr = static_cast<cArray*>(b->unpackObject());
00057 std::cout << "still there: " << *parlistptr << std::endl;
00058 for (int i=0; i<parlistptr->size(); i++) {
00059 std::cout << "i: " << i << " " << parlistptr->get(i) << std::endl;
00060 addObject(static_cast<cObject*>(parlistptr->get(i)->dup()));
00061 }
00062 delete parlistptr;
00063 }
00064
00065 if (b->checkFlag()) {
00066 encapsulate((cPacket *) b->unpackObject());
00067 }
00068
00069
00070
00071 setByteLength(len);
00072 }