/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License , v . 2 . 0 . If a copy of the MPL was not distributed with this file ,
* You can obtain one at http://mozilla.org/MPL/2.0/. */
/*
, - - - - - . , - - . , - - .
' . - - . / , - - , - - . , - - . , - - . , - ' ' - . ` - - ' , - - - . , - - , - - ,
| | ' , - . | | | | | ' - . . - ' , - - . | . - . | | `
' ' - - ' \ \ ' - ' | ' ' ' ' | | | | ' ' - ' ' | | | |
` - - - - - ' ` - - ` - - ' ` - - - - ' ` - - ' ` - - ' ` - - - ' ` - - ' ' - - '
: + o + -
- dNNNNNd .
yNNNNNNNs
: mNNNNNm -
` / sso / ` ` - : //-
. : + sydNNNNNNms : ` : //`
` - / + shmNNNNNNNNNNNNNNNms - : mNNNm /
` - / oydmNNNNNNNNNNNNNNNNNNNNNNNNdo - + NNNNNN +
. shmNNNNNNNNNNNmdyo / : dNNNNNNNNNNNNNNNNdo . ` sNNNNNm +
hNNNNNNNNmhs + : - ` . dNNNNNNNNNNNNNNNNNNNNh + - ` ` hNNNNNm :
- yddyo / : . - dNNNNm : : ymNNNNNNNNNNNNNNNmdy + / dNNNNNd .
: mNNNNd . ` / ymNNNNNNNNNNNNNNNNNNNNNNh `
+ NNNNNh ` ` + hNNNNNNNNNNNNNNNNNNNs
sNNNNNy ` . yNNNNNm ` - / oymNNNm +
` yNNNNNo oNNNNNm ` ` - .
. dNNNNm / oNNNNNm `
oNNNNm : + NNNNNm `
` + yho . + NNNNNm `
+ NNNNNNs .
` yNNNNNNmy -
- smNNNNNNh :
. smNNNNNNh /
` omNNNNNNd :
` + dNNNNNd
` ` ` ` . . . . . . ` ` ` ` / hmdy -
` . : / + osyhddmNNMMMMMMMMMMMMMMMMMMMMNNmddhyso + / : . `
` - + shmNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNmhs + - `
- smMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMds -
hMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMh
yMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMs
. ohNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNh + .
. / oydmMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMmhyo : .
` . : / + osyyhddmmNNMMMMMMMMMMMMMMNNmmddhyyso + / : . `
, - - - - - - - - . , - - . , - - . , - - .
' - - . . - - ' | , - - - . ` - - ' , - - - . | | , - - - .
| | | . - . | , - - . ( . - ' | | ( . - '
| | | | | | | | . - ' ` ) | | . - ' ` )
` - - ' ` - - ' ` - - ' ` - - ' ` - - - - ' ` - - ' ` - - - - '
, - - .
, - - - . , - - - - - - . , - - - - - - . , - - . | |
' . - ' | . - . \ | . - - . ' , - - , - - . , - - . - - . , - ' ' - . , - - , - - . | |
` . ` - . | | \ : | ' - - ' | ' , - . | | . - - ' ' - . . - ' ' , - . | | |
. - ' | | ' - - ' / | | - - ' \ ' - ' | | | | | \ ' - ' | ` - - '
` - - - - - ' ` - - - - - - - ' ` - - ' ` - - ` - - ' ` - - ' ` - - ' ` - - ` - - ' . - - .
' _ _ '
*/
#ifndef _SDP_H_
#define _SDP_H_
#include <ostream>
#include <vector>
#include <sstream>
#include "mozilla/UniquePtr.h"
#include "mozilla/Maybe.h"
#include "sdp/SdpMediaSection.h"
#include "sdp/SdpAttributeList.h"
#include "sdp/SdpEnum.h"
namespace mozilla {
class SdpOrigin;
class SdpEncryptionKey;
class SdpMediaSection;
/**
* Base class for an SDP
*/
class Sdp {
public :
Sdp() =
default ;
virtual ~Sdp() =
default ;
virtual Sdp* Clone()
const =
0 ;
virtual const SdpOrigin& GetOrigin()
const =
0 ;
// Note: connection information is always retrieved from media sections
virtual uint32_t GetBandwidth(
const std::string& type)
const =
0 ;
virtual const SdpAttributeList& GetAttributeList()
const =
0 ;
virtual SdpAttributeList& GetAttributeList() =
0 ;
virtual size_t GetMediaSectionCount()
const =
0 ;
virtual const SdpMediaSection& GetMediaSection(size_t level)
const =
0 ;
virtual SdpMediaSection& GetMediaSection(size_t level) =
0 ;
virtual SdpMediaSection& AddMediaSection(SdpMediaSection::MediaType media,
SdpDirectionAttribute::Direction dir,
uint16_t port,
SdpMediaSection::Protocol proto,
sdp::AddrType addrType,
const std::string& addr) =
0 ;
virtual void Serialize(std::ostream&)
const =
0 ;
std::string ToString()
const ;
};
inline std::ostream&
operator <<(std::ostream& os,
const Sdp& sdp) {
sdp.Serialize(os);
return os;
}
inline std::string Sdp::ToString()
const {
std::stringstream s;
s << *
this ;
return s.str();
}
class SdpOrigin {
public :
SdpOrigin(
const std::string& username, uint64_t sessId, uint64_t sessVer,
sdp::AddrType addrType,
const std::string& addr)
: mUsername(username),
mSessionId(sessId),
mSessionVersion(sessVer),
mAddrType(addrType),
mAddress(addr) {}
const std::string& GetUsername()
const {
return mUsername; }
uint64_t GetSessionId()
const {
return mSessionId; }
uint64_t GetSessionVersion()
const {
return mSessionVersion; }
sdp::AddrType GetAddrType()
const {
return mAddrType; }
const std::string& GetAddress()
const {
return mAddress; }
void Serialize(std::ostream& os)
const {
sdp::NetType netType = sdp::kInternet;
os <<
"o=" << mUsername <<
" " << mSessionId <<
" " << mSessionVersion
<<
" " << netType <<
" " << mAddrType <<
" " << mAddress <<
"\r\n" ;
}
private :
std::string mUsername;
uint64_t mSessionId;
uint64_t mSessionVersion;
sdp::AddrType mAddrType;
std::string mAddress;
};
inline std::ostream&
operator <<(std::ostream& os,
const SdpOrigin& origin) {
origin.Serialize(os);
return os;
}
}
// namespace mozilla
#endif
Messung V0.5 in Prozent C=97 H=97 G=96
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet am 2026-06-10)
¤
*© Formatika GbR, Deutschland