Merged paullouisageneau/libdatachannel with stazio/libdatachannel

This commit is contained in:
Staz M
2020-11-01 23:26:54 -05:00
54 changed files with 2871 additions and 618 deletions

View File

@ -34,8 +34,8 @@ namespace rtc {
class Description {
public:
enum class Type { Unspec = 0, Offer = 1, Answer = 2 };
enum class Role { ActPass = 0, Passive = 1, Active = 2 };
enum class Type { Unspec, Offer, Answer, Pranswer, Rollback };
enum class Role { ActPass, Passive, Active };
enum class Direction { SendOnly, RecvOnly, SendRecv, Inactive, Unknown };
Description(const string &sdp, const string &typeString = "");
@ -45,8 +45,9 @@ public:
Type type() const;
string typeString() const;
Role role() const;
string roleString() const;
string bundleMid() const;
std::optional<string> iceUfrag() const;
std::optional<string> icePwd() const;
std::optional<string> fingerprint() const;
bool ended() const;
@ -54,6 +55,7 @@ public:
void setFingerprint(string fingerprint);
void addCandidate(Candidate candidate);
void addCandidates(std::vector<Candidate> candidates);
void endCandidates();
std::vector<Candidate> extractCandidates();
@ -72,7 +74,7 @@ public:
void setDirection(Direction dir);
operator string() const;
string generateSdp(string_view eol) const;
string generateSdp(string_view eol, string_view addr, string_view port) const;
virtual void parseSdpLine(string_view line);
@ -196,6 +198,7 @@ public:
bool hasApplication() const;
bool hasAudioOrVideo() const;
bool hasMid(string_view mid) const;
int addMedia(Media media);
int addMedia(Application application);
@ -205,11 +208,15 @@ public:
std::variant<Media *, Application *> media(int index);
std::variant<const Media *, const Application *> media(int index) const;
unsigned int mediaCount() const;
size_t mediaCount() const;
Application *application();
static Type stringToType(const string &typeString);
static string typeToString(Type type);
private:
std::optional<Candidate> defaultCandidate() const;
std::shared_ptr<Entry> createEntry(string mline, string mid, Direction dir);
void removeApplication();
@ -217,8 +224,9 @@ private:
// Session-level attributes
Role mRole;
string mUsername;
string mSessionId;
string mIceUfrag, mIcePwd;
std::optional<string> mIceUfrag, mIcePwd;
std::optional<string> mFingerprint;
// Entries
@ -228,14 +236,12 @@ private:
// Candidates
std::vector<Candidate> mCandidates;
bool mEnded = false;
static Type stringToType(const string &typeString);
static string typeToString(Type type);
static string roleToString(Role role);
};
} // namespace rtc
std::ostream &operator<<(std::ostream &out, const rtc::Description &description);
std::ostream &operator<<(std::ostream &out, rtc::Description::Type type);
std::ostream &operator<<(std::ostream &out, rtc::Description::Role role);
#endif