00001 //========================================================================= 00002 // CPARSIMPROTOCOLBASE.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 __CPARSIMPROTOCOLBASE_H__ 00021 #define __CPARSIMPROTOCOLBASE_H__ 00022 00023 #include "cparsimsynchr.h" 00024 00025 // forward declarations 00026 class cCommBuffer; 00027 00034 class cParsimProtocolBase : public cParsimSynchronizer 00035 { 00036 protected: 00037 // process whatever comes from other partitions -- nonblocking 00038 virtual void receiveNonblocking(); 00039 00040 // process whatever comes from other partitions -- blocking 00041 // (normally returns true; false is returned if blocking was interrupted by the user) 00042 virtual bool receiveBlocking(); 00043 00044 // process buffers coming from other partitions 00045 virtual void processReceivedBuffer(cCommBuffer *buffer, int tag, int sourceProcId); 00046 00047 // process cMessages received from other partitions 00048 virtual void processReceivedMessage(cMessage *msg, int destModuleId, int destGateId, int sourceProcId); 00049 00050 public: 00054 cParsimProtocolBase(); 00055 00059 virtual ~cParsimProtocolBase(); 00060 00064 virtual void processOutgoingMessage(cMessage *msg, int procId, int moduleId, int gateId, void *data); 00065 }; 00066 00067 #endif 00068