Alex Bikfalvi
SimStream Documentation
LayerPimSm.h
00001 #pragma once 00002 00003 #include "Layer.h" 00004 #include "LayerPimSmMembership.h" 00005 #include "LayerIpMcastGroup.h" 00006 #include "Route.h" 00007 #include "PacketIp.h" 00008 #include "PacketPimSm.h" 00009 #include "PacketPimSmJoinPrune.h" 00010 00011 class CLayerPimSm : public CLayer 00012 { 00013 private: 00014 __uint32 numGroups; 00015 CAddress address; 00016 CAddress* rp; 00017 CRoute* route; 00018 00019 CLayerPimSmMembership* memberships; 00020 CLayerIpMcastGroup* groups; 00021 00022 Delegate2<CLayerPimSm, void, __uint32, CPacketIp*>* delegateRecv; 00023 00024 Delegate3<CLayerPimSm, void, __uint32, CAddress, CLayerIpMcastGroup*>* delegateJoin; 00025 Delegate3<CLayerPimSm, void, __uint32, CAddress, CLayerIpMcastGroup*>* delegateLeave; 00026 00027 Event3<void, __uint32, CAddress, CLayerIpMcastGroup*>* eventJoin; 00028 Event3<void, __uint32, CAddress, CLayerIpMcastGroup*>* eventLeave; 00029 00030 Event2<void, __uint32, CPacketIp*>* eventSend; 00031 00032 double statEntries; 00033 __uint32 statEntriesNum; 00034 __time statEntriesLast; 00035 00036 public: 00037 CLayerPimSm( 00038 CSimHandler* sim, 00039 __uint32 numGroups, 00040 CAddress address, 00041 CAddress* rp, 00042 CRoute* route 00043 ); 00044 virtual ~CLayerPimSm(); 00045 00046 inline Delegate2<CLayerPimSm, void, __uint32, CPacketIp*>* 00047 DelegateRecv() { return this->delegateRecv;} 00048 00049 inline Delegate3<CLayerPimSm, void, __uint32, CAddress, CLayerIpMcastGroup*>* 00050 DelegateJoin() { return this->delegateJoin; } 00051 inline Delegate3<CLayerPimSm, void, __uint32, CAddress, CLayerIpMcastGroup*>* 00052 DelegateLeave() { return this->delegateLeave; } 00053 00054 inline Event3<void, __uint32, CAddress, CLayerIpMcastGroup*>* 00055 EventJoin() { return this->eventJoin; } 00056 inline Event3<void, __uint32, CAddress, CLayerIpMcastGroup*>* 00057 EventLeave() { return this->eventLeave; } 00058 00059 inline Event2<void, __uint32, CPacketIp*>* 00060 EventSend() { return this->eventSend; } 00061 00062 inline double StatEntries() { return this->statEntries; } 00063 00064 virtual void Finalize(); 00065 00066 private: 00067 void Recv(__uint32 entry, CPacketIp* packet); 00068 void RecvPimSm(__uint32 entry, CAddress src, CAddress dst, CPacketPimSm* packet); 00069 void RecvPimSmJoinPrune(__uint32 entry, CAddress src, CAddress dst, CPacketPimSmJoinPrune* packet); 00070 00071 void Send(__uint32 entry, CAddress dst, __byte ttl, CPacket* payload); 00072 00073 void Join(__uint32 entry, CAddress address, CLayerIpMcastGroup* igmp); 00074 void Leave(__uint32 entry, CAddress address, CLayerIpMcastGroup* igmp); 00075 00076 void JoinGroup(__uint32 group, CAddress address); 00077 void LeaveGroup(__uint32 group, CAddress address); 00078 };
Last updated: February 8, 2011