class JGSession

A basic Jingle session. More...

Contains pure virtuals
Full nameTelEngine::JGSession
Definition#include <libs/yjabber/yatejingle.h>
InheritsTelEngine::Mutex [public ], TelEngine::RefObject [public ]
Inherited byJGSession0, JGSession1
List of all Methods
Annotated List
Files
Globals
Hierarchy
Index

Public Types

Public Methods

Public Static Methods

Public Members

Protected Methods

Protected Members


Detailed Description

This class is a base class for all specific jingle sessions

enum Version { Version0 = 0, Version1 = 1, VersionUnknown }

Version

Jingle session version

enum Reason { ReasonUnknown = 0, ReasonOk, ReasonBusy, ReasonDecline, ReasonCancel, ReasonExpired, ReasonConn, ReasonFailApp, ReasonFailTransport, ReasonGone, ReasonParams, ReasonMedia, ReasonTransport, ReasonApp, ReasonSecurity, ReasonTimeout, ReasonGeneral, ReasonAltSess, Transferred, CryptoRequired, InvalidCrypto, }

Reason

Jingle defined reasons and errors

enum RtpInfo { RtpActive, RtpHold, RtpMute, RtpRinging, }

RtpInfo

RTP session info (XEP 0167)

enum State { Idle = 0, Pending = 1, Active = 2, Ending = 3, Destroy = 4, }

State

Session state enumeration

enum Action { ActAccept, ActInitiate, ActTerminate, ActReject, ActInfo, ActTransportInfo, ActTransportAccept, ActTransportReject, ActTransportReplace, ActCandidates, ActContentAccept, ActContentAdd, ActContentModify, ActContentReject, ActContentRemove, ActContentInfo, ActDescriptionInfo, ActTransfer, ActRinging, ActTrying, ActReceived, ActHold, ActActive, ActMute, ActDtmf, ActStreamHost, ActCount, }

Action

Jingle action enumeration

enum SessionFlag { FlagNoPing = 0x0001, FlagRingNsRtp = 0x0002, FlagNoOkInitiate = 0x0004, }

SessionFlag

Session flags

 ~JGSession ()

~JGSession

[virtual]

Destructor

inline Version  version ()

version

[const]

Get the session version

Returns: The session version

inline JGEngine*  engine ()

engine

[const]

Retrieve the engine owning this session

Returns: The engine owning this session

inline bool  outgoing ()

outgoing

[const]

Get the session direction

Returns: True if it is an outgoing session

inline const String&  sid ()

sid

[const]

Get the session id

Returns: The session id

inline const JabberID&  local ()

local

[const]

Get the local peer's JID

Returns: The local peer's JID

inline const JabberID&  remote ()

remote

[const]

Get the remote peer's JID

Returns: The remote peer's JID

inline State  state ()

state

[const]

Get the session state.

Returns: The session state as enumeration.

inline int  flag (int mask)

flag

[const]

Retrieve session flags

Parameters:
maskMask to retrieve

Returns: Session flags

inline void  setFlags (int value)

setFlags

Replace session flags

Parameters:
valueThe new session flags

inline void*  userData ()

userData

Get the arbitrary user data of this session

Returns: The arbitrary user data of this session

inline void  userData (void* userdata)

userData

Set the arbitrary user data of this session

Parameters:
userdataThe new arbitrary user data's value

inline const String&  line ()

line

[const]

Retrieve the client account used by this session

Returns: The client account used by this session

inline void  line (const String& acc)

line

Set the client account used by this session

Parameters:
accThe client account used by this session

Action  getAction (XmlElement* xml)

getAction

Get an action (jingle element type) from a jingle element

Parameters:
xmlElement to check

Returns: The found action, ActCount if not found or unknown

bool  acceptIq (XMPPUtils::IqType type, const JabberID& from, const JabberID& to, const String& id, XmlElement* xml)

acceptIq

Ask this session to accept an incoming xml 'iq' element

Parameters:
typeIq type as enumeration
fromThe sender
toThe recipient
idThe session id of this is a request (set/get) or the stanza id
xmlThe received element

Returns: True if accepted (the element was enqueued), false if not

bool  confirmResult (XmlElement* xml)

confirmResult

Confirm (send result) a received element

Parameters:
xmlThe element to confirm

Returns: False if send failed or element is 0

bool  confirmError (XmlElement*& xml, XMPPError::Type error, const char* text = 0, XMPPError::ErrorType type = XMPPError::TypeModify)

confirmError

Confirm (send error) a received element

Parameters:
xmlThe element to confirm (will be consumed and zeroed)
errorThe error condition
textOptional text to add to the error element
typeError type

Returns: False if send failed or element is 0

bool  accept (const ObjList& contents, String* stanzaId = 0)

accept

[virtual]

Accept a Pending incoming session. This method is thread safe

Parameters:
contentsThe list of accepted contents
stanzaIdOptional string to be filled with sent stanza id (used to track the response)

Returns: False if send failed

bool  hangup (XmlElement* reason = 0)

hangup

[virtual]

Close a Pending or Active session This method is thread safe

Parameters:
reasonOptional termination reason

Returns: False if send failed

XmlElement*  createRtpInfoXml (RtpInfo info)

createRtpInfoXml

[virtual]

Create a RTP info child to be added to a session-info element

Parameters:
infoThe informational tag as enumeration

Returns: Valid XmlElement pointer or 0 if not supported

XmlElement*  createReason (int reason, const char* text = 0, XmlElement* child = 0)

createReason

[virtual]

Create a termination reason element

Parameters:
reasonThe reason code
textOptional reason text child
childOptional additional reason child

Returns: Valid XmlElement pointer or 0 if not supported

XmlElement*  createTransferReason (int reason)

createTransferReason

[virtual]

Create a transfer reason element

Parameters:
reasonThe reason code

Returns: Valid XmlElement pointer or 0 if not supported

XmlElement*  createRtpSessionReason (int reason)

createRtpSessionReason

[virtual]

Create a RTP session reason element

Parameters:
reasonThe reason code

Returns: Valid XmlElement pointer or 0 if not supported

bool  sendContent (Action action, const ObjList& contents, String* stanzaId = 0)

sendContent

[virtual]

Send a stanza with session content(s) This method is thread safe

Parameters:
actionMust be a transport- or content- action
contentsNon empty list with content(s) to send
stanzaIdOptional string to be filled with sent stanza id (used to track the response)

Returns: False if send failed

inline bool  sendContent (Action action, const JGSessionContent* content, String* stanzaId = 0)

sendContent

Send a stanza with a session content This method is thread safe

Parameters:
actionMust be a transport- or content- action
contentThe content to send
stanzaIdOptional string to be filled with sent stanza id (used to track the response)

Returns: False if send failed

bool  sendStreamHosts (const ObjList& hosts, String* stanzaId = 0)

sendStreamHosts

[virtual]

Send a stanza with stream hosts This method is thread safe

Parameters:
hostsThe list of hosts to send
stanzaIdOptional string to be filled with sent stanza id (used to track the response)

Returns: False if send failed

bool  sendStreamHostUsed (const char* jid, const char* stanzaId)

sendStreamHostUsed

[virtual]

Send a stanza with a stream host used. If the jid is empty, send an item-not-found error response This method is thread safe

Parameters:
jidThe stream host to send
stanzaIdThe id of the stanza to confirm

Returns: False if send failed

void  buildSocksDstAddr (String& buf)

buildSocksDstAddr

Build SOCKS SHA1 dst.addr used by file transfer

Parameters:
bufDestination string

bool  sendInfo (XmlElement* xml, String* stanzaId = 0, XmlElement* extra = 0)

sendInfo

Send a session info element to the remote peer. This method is thread safe

Parameters:
xmlThe XmlElement carried by the session info element
stanzaIdOptional string to be filled with sent stanza id (used to track the response)
extraOptional extra child for jingle element

Returns: False on failure

bool  sendDtmf (const char* dtmf, unsigned int msDuration = 0, String* stanzaId = 0)

sendDtmf

Send a dtmf string to remote peer. If the string's length is greater then 1, each character is added as a 'dtmf' child of the jingle element

Parameters:
dtmfThe dtmf string
msDurationThe tone duration in miliseconds. Ignored if 0
stanzaIdOptional string to be filled with sent stanza id (used to track the response)

Returns: False if send failed

bool  hasFeature (XMPPNamespace::Type feature)

hasFeature

Check if the remote party supports a given feature

Parameters:
featureThe requested feature

Returns: True if the remote party supports the given feature

XmlElement*  buildTransfer (const String& transferTo, const String& transferFrom, const String& sid = String::empty())

buildTransfer

[static]

Build a transfer element

Parameters:
transferToThe JID to transfer to
transferFromThe transferror's JID
sidOptional session id used for attended transfer (empty for unattended transfer)

Returns: Valid XmlElement pointer

inline Version  lookupVersion (const char* value, Version def = VersionUnknown)

lookupVersion

[static]

Get the session version associated with a text

Parameters:
valueThe version text
defDefault value to return if not found

Returns: Session Version value

inline const char*  lookupVersion (int value, const char* def = "unknown")

lookupVersion

[static]

Get the session version name

Parameters:
valueThe version value
defDefault value to return if not found

Returns: Session version name or the default value if not found

inline int  lookupReason (const char* value, int def = ReasonOk)

lookupReason

[static]

Get the termination code associated with a text

Parameters:
valueThe termination text
defDefault value to return if not found

Returns: Termination code

inline const char*  lookupReason (int value, const char* def = 0)

lookupReason

[static]

Get the termination code associated with a text

Parameters:
valueThe termination code
defDefault value to return if not found

Returns: Termination text

const char*  lookupState (int state)

lookupState

[static]

Get the name of a session state

Parameters:
stateThe state to find

Returns: The name of a session state

const char*  lookupAction (int act, Version ver)

lookupAction

[static]

Get the name of an action

Parameters:
actThe action to find
verSession version to use

Returns: The name of an action

Action  lookupAction (const char* str, Version ver)

lookupAction

[static]

Get the action associated with a given string

Parameters:
strThe action name
verSession version to use

Returns: The name of an action

static const TokenDict s_versions[]

s_versions[]

static const TokenDict s_reasons[]

s_reasons[]

static const TokenDict s_rtpInfo[]

s_rtpInfo[]

static const TokenDict s_states[]

s_states[]

static const TokenDict s_actions0[]

s_actions0[]

static const TokenDict s_actions1[]

s_actions1[]

static const TokenDict s_flagName[]

s_flagName[]

 JGSession (Version ver, JGEngine* engine, const JabberID& caller, const JabberID& called)

JGSession

[protected]

Constructor. Create an outgoing session

Parameters:
verThe session version
engineThe engine owning this session
callerThe caller's full JID
calledThe called party's full JID

 JGSession (Version ver, JGEngine* engine, const JabberID& caller, const JabberID& called, XmlElement* xml, const String& id)

JGSession

[protected]

Constructor. Create an incoming session.

Parameters:
verThe session version
engineThe engine owning this session
callerThe caller's full JID
calledThe called party's full JID
xmlA valid Jabber Jingle xml with action session initiate
idSession id

bool  initiate (const ObjList& contents, XmlElement* extra, const char* subject = 0)

initiate

[protected pure virtual]

Build and send the initial message on an outgoing session

Parameters:
contentsThe session contents to be sent with session initiate element
extraOptional extra child to be added to the session initiate element
subjectOptional session subject

Returns: True on success

JGEvent*  getEvent (u_int64_t time)

getEvent

[protected virtual]

Get a Jingle event from the queue. This method is thread safe

Parameters:
timeCurrent time in miliseconds

Returns: JGEvent pointer or 0

void  destroyed ()

destroyed

[protected virtual]

Release this session and its memory

Reimplemented from RefObject.

bool  sendStanza (XmlElement* stanza, String* stanzaId = 0, bool confirmation = true, bool ping = false, unsigned int toutMs = 0)

sendStanza

[protected]

Send a stanza to the remote peer

Parameters:
stanzaThe stanza to send
stanzaIdOptional string to be filled with sent stanza id (used to track the response)
confirmationTrue if the stanza needs confirmation (add 'id' attribute)
pingTrue if the stanza is a ping one
toutMsOptional stanza timeout interval in milliseconds

Returns: True on success

bool  sendPing (u_int64_t msecNow)

sendPing

[protected]

Send a ping (empty session info) stanza to the remote peer if it's time to do it

Parameters:
msecNowThe current time

Returns: True if a ping was succesfully sent

JGEvent*  decodeJingle (XmlElement*& xml, XmlElement* child)

decodeJingle

[protected pure virtual]

Decode a jingle element

Parameters:
xmlThe element to decode
childThe element's first child

Returns: JGEvent pointer or 0

XmlElement*  createJingle (Action action, XmlElement* element1 = 0, XmlElement* element2 = 0, XmlElement* element3 = 0)

createJingle

[protected pure virtual]

Create an 'iq' of type 'set' with a 'jingle' child

Parameters:
actionThe action of the Jingle stanza
element1Optional child element
element2Optional child element
element3Optional child element

Returns: Valid XmlElement pointer

XmlElement*  createDtmf (const char* dtmf, unsigned int msDuration = 0)

createDtmf

[protected pure virtual]

Create a dtmf XML element

Parameters:
dtmfThe dtmf string
msDurationThe tone duration in miliseconds. Ignored if 0

Returns: Valid XmlElement pointer or 0

JGEvent*  processJingleSetEvent (JGEvent*& ev)

processJingleSetEvent

[protected virtual]

Method called in getEvent() to process a last event decoded from a received jingle element

Parameters:
evThe event to process (will be consumed and zeroed)

Returns: JGEvent pointer or 0

JGEvent*  processJabberIqResponse (bool result, XmlElement*& xml)

processJabberIqResponse

[protected virtual]

Method called in getEvent() to process a jabber event carrying a response

Parameters:
resultTrue if the element is a result, false if it's an error response
xmlXml element to process

Returns: JGEvent pointer or 0

JGEvent*  processFileTransfer (bool set, XmlElement*& xml, XmlElement* child)

processFileTransfer

[protected virtual]

Decode a file transfer element

Parameters:
setTrue if the xml is an iq 'set', false if type is 'get'
xmlThe element to decode
childThe element's first child

Returns: JGEvent pointer or 0

void  eventTerminated (JGEvent* event)

eventTerminated

[protected]

Terminate notification from an event. Reset the last generated event

Parameters:
eventTerminated (processed) event

void  changeState (State newState)

changeState

[protected]

Changed session state

Parameters:
newStateSession new state

Version m_version

m_version

[protected]

State m_state

m_state

[protected]

int m_flags

m_flags

[protected]

u_int64_t m_timeToPing

m_timeToPing

[protected]

JGEngine* m_engine

m_engine

[protected]

bool m_outgoing

m_outgoing

[protected]

String m_sid

m_sid

[protected]

JabberID m_local

m_local

[protected]

JabberID m_remote

m_remote

[protected]

XmlFragment m_queue

m_queue

[protected]

JGEvent* m_lastEvent

m_lastEvent

[protected]

bool m_recvTerminate

m_recvTerminate

[protected]

void* m_private

m_private

[protected]

String m_localSid

m_localSid

[protected]

u_int32_t m_stanzaId

m_stanzaId

[protected]

ObjList m_sentStanza

m_sentStanza

[protected]

String m_line

m_line

[protected]


Generated by: paulc on bussard on Sun Oct 20 21:06:06 2013, using kdoc 2.0a54.