aboutsummaryrefslogtreecommitdiffstats
path: root/src/libdash/source/mpd/MPD.h
blob: 9bcb38af656703c9e35dd23e7e02b7e8e3bf0863 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
/*
 * MPD.h
 *****************************************************************************
 * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved
 *
 * Email: libdash-dev@vicky.bitmovin.net
 *
 * This source code and its use and distribution, is subject to the terms
 * and conditions of the applicable license agreement.
 *****************************************************************************/

#ifndef MPD_H_
#define MPD_H_

#include "config.h"

#include "IMPD.h"
#include "ProgramInformation.h"
#include "BaseUrl.h"
#include "Period.h"
#include "Metrics.h"
#include "AbstractMPDElement.h"
#include "../metrics/HTTPTransaction.h"
#include "../metrics/TCPConnection.h"

namespace dash
{
    namespace mpd
    {
        class MPD : public IMPD, public AbstractMPDElement
        {
            public:
                MPD         ();
                virtual ~MPD();

                const std::vector<IProgramInformation *>&   GetProgramInformations          ()  const;
                const std::vector<IBaseUrl *>&              GetBaseUrls                     ()  const;
                const std::vector<std::string>&             GetLocations                    ()  const;
                const std::vector<IPeriod *>&               GetPeriods                      ()  const;
                const std::vector<IMetrics *>&              GetMetrics                      ()  const;
                const std::string&                          GetId                           ()  const;
                const std::vector<std::string>&             GetProfiles                     ()  const;
                const std::string&                          GetType                         ()  const;
                const std::string&                          GetAvailabilityStarttime        ()  const;
                const std::string&                          GetAvailabilityEndtime          ()  const;
                const std::string&                          GetMediaPresentationDuration    ()  const;
                const std::string&                          GetMinimumUpdatePeriod          ()  const;
                const std::string&                          GetMinBufferTime                ()  const;
                const std::string&                          GetTimeShiftBufferDepth         ()  const;
                const std::string&                          GetSuggestedPresentationDelay   ()  const;
                const std::string&                          GetMaxSegmentDuration           ()  const;
                const std::string&                          GetMaxSubsegmentDuration        ()  const;
                IBaseUrl*                                   GetMPDPathBaseUrl               ()  const;
                uint32_t                                    GetFetchTime                    ()  const;

                const std::vector<dash::metrics::ITCPConnection *>&     GetTCPConnectionList    () const;
                const std::vector<dash::metrics::IHTTPTransaction *>&   GetHTTPTransactionList  () const;
                void                                                    AddTCPConnection        (dash::metrics::TCPConnection *tcpConn);
                void                                                    AddHTTPTransaction      (dash::metrics::HTTPTransaction *httpTransAct);

                void    AddProgramInformation           (ProgramInformation *programInformation);
                void    AddBaseUrl                      (BaseUrl *url);
                void    AddLocation                     (const std::string& location);
                void    AddPeriod                       (Period *period);
                void    AddMetrics                      (Metrics *metrics);
                void    SetId                           (const std::string& id);
                void    SetProfiles                     (const std::string& profiles);
                void    SetType                         (const std::string& type);
                void    SetAvailabilityStarttime        (const std::string& availabilityStarttime);
                void    SetAvailabilityEndtime          (const std::string& availabilityEndtime);
                void    SetMediaPresentationDuration    (const std::string& mediaPresentationDuration);
                void    SetMinimumUpdatePeriod          (const std::string& minimumUpdatePeriod);
                void    SetMinBufferTime                (const std::string& minBufferTime);
                void    SetTimeShiftBufferDepth         (const std::string& timeShiftBufferDepth);
                void    SetSuggestedPresentationDelay   (const std::string& suggestedPresentationDelay);
                void    SetMaxSegmentDuration           (const std::string& maxSegmentDuration);
                void    SetMaxSubsegmentDuration        (const std::string& maxSubsegmentDuration);
                void    SetMPDPathBaseUrl               (BaseUrl *path);
                void    SetFetchTime                    (uint32_t fetchTimeInSec);

            private:
                std::vector<ProgramInformation *>   programInformations;
                std::vector<BaseUrl *>              baseUrls;
                std::vector<std::string>            locations;
                std::vector<Period *>               periods;
                std::vector<Metrics *>              metrics;
                std::string                         id;
                std::vector<std::string>            profiles;
                std::string                         type;
                std::string                         availabilityStarttime;
                std::string                         availabilityEndtime;
                std::string                         mediaPresentationDuration;
                std::string                         minimumUpdatePeriod;
                std::string                         minBufferTime;
                std::string                         timeShiftBufferDepth;
                std::string                         suggestedPresentationDelay;
                std::string                         maxSegmentDuration;
                std::string                         maxSubsegmentDuration;
                BaseUrl                             *mpdPathBaseUrl;
                uint32_t                            fetchTime;

                std::vector<dash::metrics::TCPConnection *>     tcpConnections;
                std::vector<dash::metrics::HTTPTransaction *>   httpTransactions;
        };
    }
}
#endif /* MPD_H_ */