src/simulator/event-impl.h
author Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
Thu Nov 12 13:01:01 2009 +0100 (2009-11-12)
changeset 5505 c0ac392289c3
parent 3812 6cca59a0fca6
permissions -rw-r--r--
replace RefCountBase with SimpleRefCount<> to avoid duplicate refcounting implementations.
     1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
     2 /*
     3  * Copyright (c) 2005,2006 INRIA
     4  *
     5  * This program is free software; you can redistribute it and/or modify
     6  * it under the terms of the GNU General Public License version 2 as
     7  * published by the Free Software Foundation;
     8  *
     9  * This program is distributed in the hope that it will be useful,
    10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
    11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    12  * GNU General Public License for more details.
    13  *
    14  * You should have received a copy of the GNU General Public License
    15  * along with this program; if not, write to the Free Software
    16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
    17  *
    18  * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
    19  */
    20 #ifndef EVENT_IMPL_H
    21 #define EVENT_IMPL_H
    22 
    23 #include <stdint.h>
    24 #include "ns3/simple-ref-count.h"
    25 
    26 namespace ns3 {
    27 
    28 /**
    29  * \ingroup simulator
    30  * \brief a simulation event
    31  *
    32  * Each subclass of this base class represents a simulation event. The
    33  * EventImpl::Invoke method will be invoked by the simulation engine
    34  * when the time associated to this event expires. This class is
    35  * obviously (there are Ref and Unref methods) reference-counted and
    36  * most subclasses are usually created by one of the many Simulator::Schedule
    37  * methods.
    38  */
    39 class EventImpl : public SimpleRefCount<EventImpl>
    40 {
    41 public:
    42   EventImpl ();
    43   virtual ~EventImpl () = 0;
    44   /**
    45    * Called by the simulation engine to notify the event that it has expired.
    46    */
    47   void Invoke (void);
    48   /**
    49    * Marks the event as 'canceled'. The event will not be removed from
    50    * the event list but the simulation engine will check its canceled status
    51    * before calling Invoke.
    52    */
    53   void Cancel (void);
    54   /**
    55    * \returns true if the event has been canceled.
    56    *
    57    * Invoked by the simulation engine before calling Invoke.
    58    */
    59   bool IsCancelled (void);
    60 
    61 protected:
    62   virtual void Notify (void) = 0;
    63 
    64 private:
    65   bool m_cancel;
    66 };
    67 
    68 } // namespace ns3
    69 
    70 #endif /* EVENT_IMPL_H */