RTP Audio System  2.0.0
servicelevelagreement.h
Go to the documentation of this file.
00001 // ##########################################################################
00002 // ####                                                                  ####
00003 // ####                   Master Thesis Implementation                   ####
00004 // ####  Management of Layered Variable Bitrate Multimedia Streams over  ####
00005 // ####                 DiffServ with A Priori Knowledge                 ####
00006 // ####                                                                  ####
00007 // #### ================================================================ ####
00008 // ####                                                                  ####
00009 // ####                                                                  ####
00010 // #### Service Level Agreement                                          ####
00011 // ####                                                                  ####
00012 // ####           Copyright (C) 1999-2012 by Thomas Dreibholz            ####
00013 // ####                                                                  ####
00014 // #### Contact:                                                         ####
00015 // ####    EMail: dreibh@iem.uni-due.de                                  ####
00016 // ####    WWW:   https://www.nntb.no/~dreibh/rtpaudio                ####
00017 // ####                                                                  ####
00018 // #### ---------------------------------------------------------------- ####
00019 // ####                                                                  ####
00020 // #### This program is free software: you can redistribute it and/or    ####
00021 // #### modify it under the terms of the GNU General Public License as   ####
00022 // #### published by the Free Software Foundation, either version 3 of   ####
00023 // #### the License, or (at your option) any later version.              ####
00024 // ####                                                                  ####
00025 // #### This program is distributed in the hope that it will be useful,  ####
00026 // #### but WITHOUT ANY WARRANTY; without even the implied warranty of   ####
00027 // #### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the    ####
00028 // #### GNU General Public License for more details.                     ####
00029 // ####                                                                  ####
00030 // #### You should have received a copy of the GNU General Public        ####
00031 // #### License along with this program.  If not, see                    ####
00032 // #### <http://www.gnu.org/licenses/>.                                  ####
00033 // ####                                                                  ####
00034 // ##########################################################################
00035 // $Id: servicelevelagreement.h 1307 2011-12-22 07:36:29Z dreibh $
00036 
00037 
00038 #ifndef SERVICELEVELAGREEMENT_H
00039 #define SERVICELEVELAGREEMENT_H
00040 
00041 
00042 #include "tdsystem.h"
00043 #include "bandwidthinfo.h"
00044 #include "trafficclassvalues.h"
00045 #include "abstractlayerdescription.h"
00046 
00047 
00055 struct DiffServClass
00056 {
00060    card64 BytesPerSecond;
00061 
00065    double MaxTransferDelay;
00066 
00070    double MaxLossRate;
00071 
00075    double MaxJitter;
00076 
00080    double CostFactor;
00081 
00085    double DelayVariability;
00086 
00090    card8 TrafficClass;
00091 };
00092 
00093 
00094 
00102 class ServiceLevelAgreement
00103 {
00104    // ====== Constructor/Destructor =========================================
00105    public:
00109    ServiceLevelAgreement();
00110 
00114    ~ServiceLevelAgreement();
00115 
00116 
00117    // ====== Load SLA =======================================================
00121    bool load(const char* fileName);
00122 
00123 
00124    // ====== SLA access =====================================================
00132    cardinal getPossibleClassesForBandwidthInfo(
00133                const AbstractLayerDescription* ald,
00134                cardinal*                       classList) const;
00135 
00136 
00137    // ====== Public data ====================================================
00138    public:
00139    card64        TotalBandwidth;
00140    cardinal      BestEffort;
00141    cardinal      Classes;
00142    DiffServClass Class[TrafficClassValues::MaxValues];
00143 };
00144 
00145 
00149 std::ostream& operator<<(std::ostream& os, const ServiceLevelAgreement config);
00150 
00151 
00152 #include "servicelevelagreement.icc"
00153 
00154 
00155 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines