00001 //========================================================================= 00002 // CIDEALSIMULATIONPROT.H - part of 00003 // 00004 // OMNeT++/OMNEST 00005 // Discrete System Simulation in C++ 00006 // 00007 // Written by: Andras Varga, 2003 00008 // 00009 //========================================================================= 00010 00011 /*--------------------------------------------------------------* 00012 Copyright (C) 2003-2005 Andras Varga 00013 Monash University, Dept. of Electrical and Computer Systems Eng. 00014 Melbourne, Australia 00015 00016 This file is distributed WITHOUT ANY WARRANTY. See the file 00017 `license' for details on this and other legal matters. 00018 *--------------------------------------------------------------*/ 00019 00020 #ifndef __CIDEALSIMULATIONPROT_H__ 00021 #define __CIDEALSIMULATIONPROT_H__ 00022 00023 #include "cparsimprotocolbase.h" 00024 00025 // forward declarations 00026 class cCommBuffer; 00027 00039 class cIdealSimulationProtocol : public cParsimProtocolBase 00040 { 00041 public: 00042 // stores one external event, as needed for the ISP algorithm 00043 struct ExternalEvent { 00044 simtime_t t; // time of event 00045 int srcProcId; // origin of event 00046 }; 00047 00048 protected: 00049 bool debug; 00050 FILE *fin; // the event log file 00051 ExternalEvent nextExternalEvent; // holds the next event 00052 00053 // preloaded table of event times 00054 ExternalEvent *table; // array to hold values 00055 int tableSize; // allocated size of table 00056 int numItems; // num in items in table (numItems<tableSize possible) 00057 int nextPos; // position of 1st unused item in table 00058 00059 protected: 00060 // process cMessages received from other partitions; see same method in2 00061 // cISPEventLogger for more explanation 00062 virtual void processReceivedMessage(cMessage *msg, int destModuleId, int destGateId, int sourceProcId); 00063 00064 // read an event from event log file 00065 virtual void readNextRecordedEvent(); 00066 00067 public: 00071 cIdealSimulationProtocol(); 00072 00076 virtual ~cIdealSimulationProtocol(); 00077 00081 virtual void startRun(); 00082 00086 virtual void endRun(); 00087 00091 virtual cMessage *getNextEvent(); 00092 }; 00093 00094 #endif 00095