Roc Toolkit internal modules
Roc Toolkit: real-time audio streaming
Loading...
Searching...
No Matches
session_description.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2019 Roc Streaming authors
3 *
4 * This Source Code Form is subject to the terms of the Mozilla Public
5 * License, v. 2.0. If a copy of the MPL was not distributed with this
6 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
7 */
8
9//! @file roc_sdp/session_description.h
10//! @brief Session Description Protocol.
11
12#ifndef ROC_SDP_SESSION_DESCRIPTION_H_
13#define ROC_SDP_SESSION_DESCRIPTION_H_
14
16#include "roc_core/array.h"
17#include "roc_core/iallocator.h"
18#include "roc_core/list.h"
19#include "roc_core/log.h"
20#include "roc_core/shared_ptr.h"
25
26namespace roc {
27namespace sdp {
28
29//! SDP session description.
31public:
32 //! Initialize empty session description
34
35 //! Clear all fields.
36 void clear();
37
38 //! Globally Unique Identifier for the session.
39 //! Built from a tuple of username, sess-id, nettype, addrtype, and unicast-address.
40 const char* guid() const;
41
42 //! Set GUID
43 bool set_guid(const char* start_p_origin_username,
44 const char* end_p_origin_username,
45 const char* start_p_origin_sess_id,
46 const char* end_p_origin_sess_id,
47 const char* start_p_origin_nettype,
48 const char* end_p_origin_nettype,
49 const char* start_p_origin_addr,
50 const char* end_p_origin_addr);
51
52 //! Origin unicast address.
54
55 //! Check and set origin unicast address from a string.
57 const char* str,
58 size_t str_len);
59
60 //! Check and set session connection address from a string.
62 const char* str,
63 size_t str_len);
64
65 //! Get reference to the connection data of the session.
67
68 //! Create and add a new empty media description.
70
71 //! Get a shared pointer to the last added media description.
73
74 //! Get a shared pointer to the first added media description.
76
77 //! Get a const reference to the list of media descriptions.
79
80 //! Get list media description next to given one.
81 //!
82 //! @returns
83 //! list media description following @p element if @p element is not
84 //! last, or NULL otherwise.
85 //!
86 //! @pre
87 //! @p element should be member of the list of media descriptions.
90
91private:
93
94 address::SocketAddr origin_unicast_address_;
95
96 ConnectionData session_connection_data_;
97
98 core::List<MediaDescription> media_descriptions_;
99
100 core::IAllocator& allocator_;
101};
102
103//! Parse SDP session description from string.
104bool parse_sdp(const char* str, SessionDescription& result);
105
106} // namespace sdp
107} // namespace roc
108
109#endif // ROC_SDP_SESSION_DESCRIPTION_H_
Dynamic array.
Socket address.
Definition: socket_addr.h:25
Memory allocator interface.
Definition: iallocator.h:23
Intrusive doubly-linked list.
Definition: list.h:35
Base class for non-copyable objects.
Definition: noncopyable.h:23
Shared ownership intrusive pointer.
Definition: shared_ptr.h:32
SDP connection data field.
SDP session description.
SessionDescription(core::IAllocator &allocator)
Initialize empty session description.
const core::SharedPtr< MediaDescription > last_media_description() const
Get a shared pointer to the last added media description.
const ConnectionData & session_connection_data()
Get reference to the connection data of the session.
bool add_media_description()
Create and add a new empty media description.
bool set_session_connection_data(address::AddrFamily addrtype, const char *str, size_t str_len)
Check and set session connection address from a string.
const address::SocketAddr & origin_unicast_address() const
Origin unicast address.
const core::List< MediaDescription > get_media_descriptions() const
Get a const reference to the list of media descriptions.
bool set_guid(const char *start_p_origin_username, const char *end_p_origin_username, const char *start_p_origin_sess_id, const char *end_p_origin_sess_id, const char *start_p_origin_nettype, const char *end_p_origin_nettype, const char *start_p_origin_addr, const char *end_p_origin_addr)
Set GUID.
void clear()
Clear all fields.
const core::SharedPtr< MediaDescription > first_media_description() const
Get a shared pointer to the first added media description.
const char * guid() const
Globally Unique Identifier for the session. Built from a tuple of username, sess-id,...
bool set_origin_unicast_address(address::AddrFamily addrtype, const char *str, size_t str_len)
Check and set origin unicast address from a string.
const core::SharedPtr< MediaDescription > nextof_media_description(core::SharedPtr< MediaDescription > element) const
Get list media description next to given one.
Connection field in a SDP.
Memory allocator interface.
Intrusive doubly-linked list.
Logging.
SDP Media Description.
AddrFamily
Address family.
Definition: addr_family.h:19
bool parse_sdp(const char *str, SessionDescription &result)
Parse SDP session description from string.
Root namespace.
Shared ownership intrusive pointer.
Socket address.
String buffer.
String builder.