MediaEndpointSessionConfiguration.h [plain text]
#ifndef MediaEndpointSessionConfiguration_h
#define MediaEndpointSessionConfiguration_h
#if ENABLE(WEB_RTC)
#include "PeerMediaDescription.h"
#include <wtf/CryptographicallyRandomNumber.h>
namespace WebCore {
class MediaEndpointSessionConfiguration : public RefCounted<MediaEndpointSessionConfiguration> {
public:
static RefPtr<MediaEndpointSessionConfiguration> create()
{
return adoptRef(new MediaEndpointSessionConfiguration());
}
virtual ~MediaEndpointSessionConfiguration() { }
uint64_t sessionId() const { return m_sessionId; }
void setSessionId(uint64_t sessionId) { m_sessionId = sessionId; }
unsigned sessionVersion() const { return m_sessionVersion; }
void setSessionVersion(unsigned sessionVersion) { m_sessionVersion = sessionVersion; }
const Vector<RefPtr<PeerMediaDescription>>& mediaDescriptions() const { return m_mediaDescriptions; }
void addMediaDescription(RefPtr<PeerMediaDescription>&& description) { m_mediaDescriptions.append(WTFMove(description)); }
RefPtr<MediaEndpointSessionConfiguration> clone() const
{
RefPtr<MediaEndpointSessionConfiguration> copy = create();
copy->m_sessionId = m_sessionId;
copy->m_sessionVersion = m_sessionVersion;
for (auto& mdesc : m_mediaDescriptions)
copy->m_mediaDescriptions.append(mdesc->clone());
return copy;
}
private:
MediaEndpointSessionConfiguration()
{
m_sessionId = cryptographicallyRandomNumber();
m_sessionId = m_sessionId << 32 | cryptographicallyRandomNumber();
}
uint64_t m_sessionId;
unsigned m_sessionVersion { 0 };
Vector<RefPtr<PeerMediaDescription>> m_mediaDescriptions;
};
}
#endif // ENABLE(WEB_RTC)
#endif // MediaEndpointSessionConfiguration_h