src/contrib/flow-monitor/flow-classifier.h
author Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
Thu Nov 12 13:01:01 2009 +0100 (2009-11-12)
changeset 5505 c0ac392289c3
parent 5210 2acc35ea1e80
child 5877 24dd3b1a0bb6
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) 2009 INESC Porto
     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: Gustavo J. A. M. Carneiro  <gjc@inescporto.pt> <gjcarneiro@gmail.com>
    19 //
    20 
    21 #ifndef __FLOW_CLASSIFIER_H__
    22 #define __FLOW_CLASSIFIER_H__
    23 
    24 #include "ns3/simple-ref-count.h"
    25 #include <ostream>
    26 
    27 namespace ns3 {
    28 
    29 typedef uint32_t FlowId;
    30 typedef uint32_t FlowPacketId;
    31 
    32 /// provides a method to translate raw packet data into abstract
    33 /// ``flow identifier'' and ``packet identifier'' parameters.  These
    34 /// identifiers are unsigned 32-bit integers that uniquely identify a
    35 /// flow and a packet within that flow, respectively, for the whole
    36 /// simulation, regardless of the point in which the packet was
    37 /// captured.  These abstract identifiers are used in the
    38 /// communication between FlowProbe and FlowMonitor, and all collected
    39 /// statistics reference only those abstract identifiers in order to
    40 /// keep the core architecture generic and not tied down to any
    41 /// particular flow capture method or classification system.
    42 class FlowClassifier : public SimpleRefCount<FlowClassifier>
    43 {
    44   FlowId m_lastNewFlowId;
    45 
    46 public:
    47 
    48   FlowClassifier ();
    49   virtual ~FlowClassifier ();
    50 
    51   virtual void SerializeToXmlStream (std::ostream &os, int indent) const = 0;
    52 
    53 protected:
    54   FlowId GetNewFlowId ();
    55 
    56 };
    57 
    58 
    59 } // namespace ns3
    60 
    61 #endif
    62