25#include <yatejabber.h>
65 inline JGRtpMedia(
const char*
id,
const char* name,
const char* clockrate,
66 const char* synonym,
const char* channels = 0,
67 const char* pTime = 0,
const char* maxPTime = 0,
const char* bitRate = 0)
69 {
set(
id,name,clockrate,synonym,channels,pTime,maxPTime,bitRate); }
100 inline void set(
const char*
id,
const char* name,
const char* clockrate,
101 const char* synonym = 0,
const char* channels = 0,
102 const char* pTime = 0,
const char* maxPTime = 0,
const char* bitRate = 0) {
194 inline JGCrypto(
const char* tag =
"1",
const char* suite = 0,
195 const char* key = 0,
const char* session = 0)
197 m_suite(suite), m_keyParams(key), m_sessionParams(session)
290 inline void add(
const char*
id,
const char* name,
const char* clockrate,
291 const char* synonym = 0,
const char* channels = 0,
292 const char* pTime = 0,
const char* maxPTime = 0,
const char* bitRate = 0)
293 {
append(
new JGRtpMedia(
id,name,clockrate,synonym,channels,pTime,maxPTime,bitRate)); }
418 unsigned int generation = 0,
unsigned int net = 0,
int prio = 0)
420 m_port(0), m_component(component), m_generation(generation),
421 m_network(net), m_priority(prio), m_protocol(
"udp"), m_type(
"host")
591 static inline const char*
typeName(
int t,
const char* defVal =
"unknown")
592 {
return TelEngine::lookup(t,
s_type,defVal); }
619 UnknownFileTransfer = -2,
643 CreatorInitiator = 1,
670 {
return m_senders; }
677 {
return m_creator; }
699 {
return !m_disposition || m_disposition ==
"session"; }
706 {
return m_disposition ==
"early-session"; }
712 { m_disposition =
"early-session"; }
724 bool addTrans,
bool addCandidates,
bool addAuth)
const;
790 JGStreamHost(
bool local,
const char* jid,
const char* addr,
int port,
const char* zeroConf = 0)
792 m_local(local), m_address(addr), m_port(port), m_zeroConf(zeroConf)
801 m_local(src.m_local), m_address(src.m_address), m_port(src.m_port),
802 m_zeroConf(src.m_zeroConf)
826 const char* mode =
"tcp");
848 friend class JGEvent;
849 friend class JGEngine;
949 FlagRingNsRtp = 0x0002,
950 FlagNoOkInitiate = 0x0004,
963 {
return m_version; }
977 {
return m_outgoing; }
1013 {
return m_flags & mask; }
1020 { m_flags = value; }
1027 {
return m_private; }
1034 { m_private = userdata; }
1361 const char* subject = 0) = 0;
1386 bool ping =
false,
unsigned int toutMs = 0);
1462 u_int64_t m_timeToPing;
1469 JGEvent* m_lastEvent;
1470 bool m_recvTerminate;
1473 u_int32_t m_stanzaId;
1488 friend class JGEvent;
1489 friend class JGEngine;
1533 const char* subject = 0);
1574 String m_sessContentName;
1575 Action m_candidatesAction;
1584 friend class JGEvent;
1585 friend class JGEngine;
1691 const char* subject = 0);
1737 friend class JGSession;
1738 friend class JGSession0;
1739 friend class JGSession1;
1779 {
return m_session; }
1786 {
return m_element; }
1794 {
return m_jingle; }
1801 {
return m_action; }
1822 {
return m_reason; }
1837 m_jingle = m_element = 0;
1845 inline bool final()
const
1846 {
return m_type == Terminated || m_type == Destroy; }
1857 if (m_session &&
element() && !m_confirmed) {
1859 if (error == XMPPError::NoError)
1860 return m_session->confirmResult(
element());
1862 return m_session->confirmError(err,error,
text,
type);
1871 { m_confirmed =
true; }
1912 const char*
reason = 0,
const char*
text = 0)
1913 : m_type(
type), m_confirmed(true), m_session(0), m_element(
element),
1914 m_jingle(0), m_action(JGSession::ActCount), m_reason(
reason), m_text(
text)
1926 const char*
reason = 0,
const char*
text = 0)
1927 : m_type(Jingle), m_confirmed(false), m_session(0), m_element(
element), m_jingle(0),
1928 m_action(act), m_reason(
reason), m_text(
text) {
1935 void init(JGSession* session);
1939 JGSession* m_session;
1940 XmlElement* m_element;
1941 XmlElement* m_jingle;
1943 JGSession::Action m_action;
1956 friend class JGSession;
1974 {
return m_sessionFlags; }
1981 {
return m_stanzaTimeout; }
1988 {
return m_streamHostTimeout; }
1995 {
return m_pingInterval; }
2044 const char* subject = 0,
const char* line = 0,
int* flags = 0);
2094 void createSessionId(
String&
id);
2097 u_int32_t m_sessionId;
2098 u_int64_t m_stanzaTimeout;
2099 u_int64_t m_streamHostTimeout;
2100 u_int64_t m_pingInterval;
2122 :
String(id), m_time(time), m_notify(notif), m_ping(
ping), m_action(
action)
2137 {
return time > m_time; }
2144 {
return m_notify; }
2158 {
return m_action; }
DebugEnabler(int level=TelEngine::debugLevel(), bool enabled=true)
Definition yateclass.h:319
A Jabber ID.
Definition xmpputils.h:429
Mutex(bool recursive=false, const char *name=0)
A named string container class.
Definition yateclass.h:5016
A named string class.
Definition yateclass.h:3481
An object list class.
Definition yateclass.h:1454
ObjList * append(const GenObject *obj, bool compact=true)
void setDelete(bool autodelete)
Definition yateclass.h:1659
A C-style string handling class.
Definition yateclass.h:2131
static const String & empty()
Content crypto data.
Definition yatejingle.h:185
XmlElement * toXml() const
static void decodeEncryption(const XmlElement *xml, ObjList &list, bool &required)
void fromXml(const XmlElement *xml)
static XmlElement * buildEncryption(const ObjList &list, bool required)
JGCrypto(const XmlElement *xml)
Definition yatejingle.h:204
JGCrypto(const char *tag="1", const char *suite=0, const char *key=0, const char *session=0)
Definition yatejingle.h:194
A Jingle engine.
Definition yatejingle.h:1955
static int decodeFlags(const String &list, const TokenDict *dict)
JGSession * call(JGSession::Version ver, const JabberID &caller, const JabberID &called, const ObjList &contents, XmlElement *extra=0, const char *msg=0, const char *subject=0, const char *line=0, int *flags=0)
JGEngine(const char *name="jgengine")
bool acceptIq(XMPPUtils::IqType type, const JabberID &from, const JabberID &to, const String &id, XmlElement *xml, const char *line, XMPPError::Type &error, String &text)
u_int64_t stanzaTimeout() const
Definition yatejingle.h:1980
virtual void processEvent(JGEvent *event)
virtual bool sendStanza(JGSession *session, XmlElement *&stanza)
JGEvent * getEvent(u_int64_t time)
static void encodeFlags(String &buf, int flags, const TokenDict *dict)
virtual bool sendMessage(JGSession *session, const char *body)
u_int64_t streamHostTimeout() const
Definition yatejingle.h:1987
int sessionFlags() const
Definition yatejingle.h:1973
virtual void initialize(const NamedList ¶ms)
u_int64_t pingInterval() const
Definition yatejingle.h:1994
void defProcessEvent(JGEvent *event)
A Jingle event.
Definition yatejingle.h:1736
ObjList m_streamHosts
Definition yatejingle.h:1900
static const TokenDict s_typeName[]
Definition yatejingle.h:1890
Type
Definition yatejingle.h:1744
JGSession::Action action() const
Definition yatejingle.h:1800
ObjList m_contents
Definition yatejingle.h:1895
JGEvent(JGSession::Action act, JGSession *session, XmlElement *element, const char *reason=0, const char *text=0)
Definition yatejingle.h:1925
bool confirmElement(XMPPError::Type error=XMPPError::NoError, const char *text=0, XMPPError::ErrorType type=XMPPError::TypeModify)
Definition yatejingle.h:1855
const char * actionName() const
Definition yatejingle.h:1807
const String & id() const
Definition yatejingle.h:1814
JGSession * session() const
Definition yatejingle.h:1778
XmlElement * element() const
Definition yatejingle.h:1785
void setAction(JGSession::Action act)
const char * name()
Definition yatejingle.h:1771
XmlElement * releaseXml()
Definition yatejingle.h:1835
static const char * lookupType(int type)
Definition yatejingle.h:1884
const String & text() const
Definition yatejingle.h:1828
const String & reason() const
Definition yatejingle.h:1821
Type type() const
Definition yatejingle.h:1764
XmlElement * jingle() const
Definition yatejingle.h:1793
void setConfirmed()
Definition yatejingle.h:1870
JGEvent(Type type, JGSession *session, XmlElement *element=0, const char *reason=0, const char *text=0)
Definition yatejingle.h:1911
void fromXml(XmlElement *xml, const JGRtpCandidates &container)
JGRtpCandidateP2P(XmlElement *xml, const JGRtpCandidates &container)
Definition yatejingle.h:477
JGRtpCandidateP2P()
Definition yatejingle.h:468
virtual XmlElement * toXml(const JGRtpCandidates &container) const
A RTP transport candidate.
Definition yatejingle.h:412
void fromXml(XmlElement *xml, const JGRtpCandidates &container)
JGRtpCandidate(const char *id, const char *component="1", unsigned int generation=0, unsigned int net=0, int prio=0)
Definition yatejingle.h:417
JGRtpCandidate(XmlElement *xml, const JGRtpCandidates &container)
Definition yatejingle.h:429
virtual XmlElement * toXml(const JGRtpCandidates &container) const
A list of RTP transport candidates.
Definition yatejingle.h:505
static void generateOldIceToken(String &dest)
static const TokenDict s_type[]
Definition yatejingle.h:597
Type
Definition yatejingle.h:510
JGRtpCandidates(Type t=Unknown)
Definition yatejingle.h:522
static void generateIceToken(String &dest, bool pwd, unsigned int max=0)
const char * typeName() const
Definition yatejingle.h:530
void generateIceAuth()
Definition yatejingle.h:536
void fromXml(XmlElement *element)
void generateOldIceAuth()
Definition yatejingle.h:544
XmlElement * toXml(bool addCandidates, bool addAuth) const
static const char * typeName(int t, const char *defVal="unknown")
Definition yatejingle.h:591
JGRtpCandidate * findByComponent(unsigned int component)
Send stanza timeout info.
Definition yatejingle.h:2110
bool ping() const
Definition yatejingle.h:2150
u_int64_t timeout() const
Definition yatejingle.h:2129
JGSession::Action action() const
Definition yatejingle.h:2157
bool notify() const
Definition yatejingle.h:2143
bool timeout(u_int64_t time) const
Definition yatejingle.h:2136
JGSentStanza(const char *id, u_int64_t time, bool notif=false, bool ping=false, JGSession::Action action=JGSession::ActCount)
Definition yatejingle.h:2120
The version 0 of a jingle session.
Definition yatejingle.h:1487
JGSession0(JGEngine *engine, const JabberID &caller, const JabberID &called, XmlElement *xml, const String &id)
virtual JGEvent * decodeJingle(XmlElement *&xml, XmlElement *child)
virtual bool accept(const ObjList &contents, String *stanzaId=0)
virtual XmlElement * createDtmf(const char *dtmf, unsigned int msDuration=0)
virtual XmlElement * createJingle(Action action, XmlElement *element1=0, XmlElement *element2=0, XmlElement *element3=0)
virtual bool sendContent(Action action, const ObjList &contents, String *stanzaId=0)
virtual bool initiate(const ObjList &contents, XmlElement *extra, const char *subject=0)
JGSession0(JGEngine *engine, const JabberID &caller, const JabberID &called)
The version 1 of a jingle session.
Definition yatejingle.h:1583
virtual XmlElement * createReason(int reason, const char *text=0, XmlElement *child=0)
virtual JGEvent * processFileTransfer(bool set, XmlElement *&xml, XmlElement *child)
virtual XmlElement * createTransferReason(int reason)
virtual JGEvent * decodeJingle(XmlElement *&xml, XmlElement *child)
virtual bool accept(const ObjList &contents, String *stanzaId=0)
virtual XmlElement * createDtmf(const char *dtmf, unsigned int msDuration=0)
virtual XmlElement * createJingle(Action action, XmlElement *element1=0, XmlElement *element2=0, XmlElement *element3=0)
virtual bool sendContent(Action action, const ObjList &contents, String *stanzaId=0)
virtual XmlElement * createRtpSessionReason(int reason)
virtual bool sendStreamHostUsed(const char *jid, const char *stanzaId)
virtual bool initiate(const ObjList &contents, XmlElement *extra, const char *subject=0)
JGSession1(JGEngine *engine, const JabberID &caller, const JabberID &called, XmlElement *xml, const String &id)
virtual bool sendStreamHosts(const ObjList &hosts, String *stanzaId=0)
JGSession1(JGEngine *engine, const JabberID &caller, const JabberID &called)
virtual XmlElement * createRtpInfoXml(RtpInfo info)
A Jingle session content.
Definition yatejingle.h:612
JGRtpMediaList m_rtpMedia
Definition yatejingle.h:749
bool isValidAudio() const
Definition yatejingle.h:684
Creator
Definition yatejingle.h:641
Type
Definition yatejingle.h:617
JGRtpCandidates m_rtpRemoteCandidates
Definition yatejingle.h:759
Creator creator() const
Definition yatejingle.h:676
JGSessionContent(Type t, const char *name, Senders senders, Creator creator, const char *disposition=0)
XmlElement * toXml(bool minimum, bool addDesc, bool addTrans, bool addCandidates, bool addAuth) const
virtual const String & toString() const
Definition yatejingle.h:690
static JGSessionContent * fromXml(XmlElement *xml, XMPPError::Type &err, String &error)
void setEarlyMedia()
Definition yatejingle.h:711
Senders senders() const
Definition yatejingle.h:669
bool isSession() const
Definition yatejingle.h:698
Senders
Definition yatejingle.h:631
NamedList m_fileTransfer
Definition yatejingle.h:764
static const TokenDict s_creator[]
Definition yatejingle.h:744
Type type() const
Definition yatejingle.h:662
JGRtpCandidates m_rtpLocalCandidates
Definition yatejingle.h:754
bool isEarlyMedia() const
Definition yatejingle.h:705
static const TokenDict s_senders[]
Definition yatejingle.h:739
A basic Jingle session.
Definition yatejingle.h:847
static const TokenDict s_versions[]
Definition yatejingle.h:1298
void changeState(State newState)
bool confirmError(XmlElement *&xml, XMPPError::Type error, const char *text=0, XMPPError::ErrorType type=XMPPError::TypeModify)
static Version lookupVersion(const char *value, Version def=VersionUnknown)
Definition yatejingle.h:1241
Version
Definition yatejingle.h:854
virtual XmlElement * createJingle(Action action, XmlElement *element1=0, XmlElement *element2=0, XmlElement *element3=0)=0
bool sendContent(Action action, const JGSessionContent *content, String *stanzaId=0)
Definition yatejingle.h:1161
virtual JGEvent * processJingleSetEvent(JGEvent *&ev)
static XmlElement * buildTransfer(const String &transferTo, const String &transferFrom, const String &sid=String::empty())
JGSession(Version ver, JGEngine *engine, const JabberID &caller, const JabberID &called)
void line(const String &acc)
Definition yatejingle.h:1047
JGEngine * engine() const
Definition yatejingle.h:969
virtual XmlElement * createReason(int reason, const char *text=0, XmlElement *child=0)
Definition yatejingle.h:1120
virtual bool hangup(XmlElement *reason=0)
const String & line() const
Definition yatejingle.h:1040
static const TokenDict s_rtpInfo[]
Definition yatejingle.h:1308
virtual JGEvent * processFileTransfer(bool set, XmlElement *&xml, XmlElement *child)
static const char * lookupReason(int value, const char *def=0)
Definition yatejingle.h:1268
virtual XmlElement * createTransferReason(int reason)
Definition yatejingle.h:1129
static const TokenDict s_actions0[]
Definition yatejingle.h:1318
const JabberID & remote() const
Definition yatejingle.h:997
virtual JGEvent * decodeJingle(XmlElement *&xml, XmlElement *child)=0
void userData(void *userdata)
Definition yatejingle.h:1033
const String & sid() const
Definition yatejingle.h:983
static const char * lookupVersion(int value, const char *def="unknown")
Definition yatejingle.h:1250
int flag(int mask) const
Definition yatejingle.h:1012
void buildSocksDstAddr(String &buf)
State
Definition yatejingle.h:903
static Action lookupAction(const char *str, Version ver)
virtual bool accept(const ObjList &contents, String *stanzaId=0)
Definition yatejingle.h:1094
bool sendInfo(XmlElement *xml, String *stanzaId=0, XmlElement *extra=0)
SessionFlag
Definition yatejingle.h:947
void setFlags(int value)
Definition yatejingle.h:1019
bool sendDtmf(const char *dtmf, unsigned int msDuration=0, String *stanzaId=0)
Action
Definition yatejingle.h:914
const JabberID & local() const
Definition yatejingle.h:990
virtual bool sendContent(Action action, const ObjList &contents, String *stanzaId=0)
Definition yatejingle.h:1149
static const char * lookupState(int state)
Definition yatejingle.h:1276
bool acceptIq(XMPPUtils::IqType type, const JabberID &from, const JabberID &to, const String &id, XmlElement *xml)
static const TokenDict s_states[]
Definition yatejingle.h:1313
static int lookupReason(const char *value, int def=ReasonOk)
Definition yatejingle.h:1259
virtual XmlElement * createDtmf(const char *dtmf, unsigned int msDuration=0)=0
JGSession(Version ver, JGEngine *engine, const JabberID &caller, const JabberID &called, XmlElement *xml, const String &id)
virtual XmlElement * createRtpSessionReason(int reason)
Definition yatejingle.h:1137
static const char * lookupAction(int act, Version ver)
virtual bool sendStreamHostUsed(const char *jid, const char *stanzaId)
Definition yatejingle.h:1189
bool confirmResult(XmlElement *xml)
static const TokenDict s_actions1[]
Definition yatejingle.h:1323
virtual JGEvent * processJabberIqResponse(bool result, XmlElement *&xml)
void * userData()
Definition yatejingle.h:1026
static const TokenDict s_flagName[]
Definition yatejingle.h:1328
static const TokenDict s_reasons[]
Definition yatejingle.h:1303
bool hasFeature(XMPPNamespace::Type feature)
virtual bool sendStreamHosts(const ObjList &hosts, String *stanzaId=0)
Definition yatejingle.h:1178
Version version() const
Definition yatejingle.h:962
State state() const
Definition yatejingle.h:1004
RtpInfo
Definition yatejingle.h:893
virtual JGEvent * getEvent(u_int64_t time)
void eventTerminated(JGEvent *event)
bool sendPing(u_int64_t msecNow)
virtual bool initiate(const ObjList &contents, XmlElement *extra, const char *subject=0)=0
bool sendStanza(XmlElement *stanza, String *stanzaId=0, bool confirmation=true, bool ping=false, unsigned int toutMs=0)
Reason
Definition yatejingle.h:863
Action getAction(XmlElement *xml)
bool outgoing() const
Definition yatejingle.h:976
virtual XmlElement * createRtpInfoXml(RtpInfo info)
Definition yatejingle.h:1110
A Jingle file transfer stream host.
Definition yatejingle.h:780
JGStreamHost(bool local, const char *jid, const char *addr, int port, const char *zeroConf=0)
Definition yatejingle.h:790
static XmlElement * buildHosts(const ObjList &hosts, const char *sid, const char *mode="tcp")
JGStreamHost(const JGStreamHost &src)
Definition yatejingle.h:799
static XmlElement * buildRsp(const char *jid)
static JGStreamHost * fromXml(XmlElement *xml)
Xml Element.
Definition yatexml.h:1137
Xml Fragment.
Definition yatexml.h:857
Type
Definition xmpputils.h:220
ErrorType
Definition xmpputils.h:286
Type
Definition xmpputils.h:130
IqType
Definition xmpputils.h:1090
Definition yateclass.h:848