Yate
|
A container and parser for SIP messages. More...
#include <yatesip.h>
Public Types | |
enum | Flags { Defaults = 0, NotReqRport = 0x0001, NotAddAllow = 0x0002, NotAddAgent = 0x0004, RportAfterBranch = 0x0008, NotSetRport = 0x0010, NotSetReceived = 0x0020, NoConnReuse = 0x0040 } |
Public Member Functions | |
SIPMessage (const SIPMessage &original) | |
SIPMessage (const char *_method, const char *_uri, const char *_version="SIP/2.0") | |
SIPMessage (SIPParty *ep, const char *buf, int len=-1, unsigned int *bodyLen=0) | |
SIPMessage (const SIPMessage *message, int _code, const char *_reason=0) | |
SIPMessage (const SIPMessage *original, const SIPMessage *answer) | |
virtual | ~SIPMessage () |
void | buildBody (const char *buf, int len=-1) |
void | complete (SIPEngine *engine, const char *user=0, const char *domain=0, const char *dlgTag=0, int flags=-1) |
bool | copyHeader (const SIPMessage *message, const char *name, const char *newName=0) |
int | copyAllHeaders (const SIPMessage *message, const char *name, const char *newName=0) |
SIPParty * | getParty () const |
void | setParty (SIPParty *ep=0) |
bool | isValid () const |
bool | isAnswer () const |
bool | isOutgoing () const |
bool | isACK () const |
bool | isReliable () const |
int | getCSeq () const |
int | getFlags () const |
const MimeHeaderLine * | getHeader (const char *name) const |
const MimeHeaderLine * | getLastHeader (const char *name) const |
int | countHeaders (const char *name) const |
const NamedString * | getParam (const char *name, const char *param, bool last=false) const |
const String & | getHeaderValue (const char *name, bool last=false) const |
const String & | getParamValue (const char *name, const char *param, bool last=false) const |
void | addHeader (const char *name, const char *value=0) |
void | addHeader (MimeHeaderLine *line) |
void | clearHeaders (const char *name) |
void | setHeader (const char *name, const char *value=0) |
MimeAuthLine * | buildAuth (const String &username, const String &password, const String &meth, const String &uri, bool proxy=false, SIPEngine *engine=0) const |
MimeAuthLine * | buildAuth (const SIPMessage &original, SIPEngine *engine=0) const |
void | setAutoAuth (const char *username=0, const char *password=0) |
const String & | getAuthUsername () const |
const String & | getAuthPassword () const |
ObjList * | getRoutes () const |
void | addRoutes (const ObjList *routes) |
const DataBlock & | getBuffer () const |
const String & | getHeaders () const |
void | setBody (MimeBody *newbody=0) |
Static Public Member Functions | |
static SIPMessage * | fromParsing (SIPParty *ep, const char *buf, int len=-1, unsigned int *bodyLen=0) |
Public Attributes | |
String | version |
String | method |
String | uri |
int | code |
String | reason |
ObjList | header |
MimeBody * | body |
Protected Member Functions | |
bool | parse (const char *buf, int len, unsigned int *bodyLen) |
bool | parseFirst (String &line) |
Protected Attributes | |
SIPParty * | m_ep |
bool | m_valid |
bool | m_answer |
bool | m_outgoing |
bool | m_ack |
int | m_cseq |
int | m_flags |
String | m_string |
DataBlock | m_data |
String | m_authUser |
String | m_authPass |
A container and parser for SIP messages.
An object that holds the sip message parsed into this library model. This class can be used to parse a sip message from a text buffer, or it can be used to create a text buffer from a sip message.
enum Flags |
Various message flags
SIPMessage | ( | const SIPMessage & | original | ) |
Copy constructor
SIPMessage | ( | const char * | _method, |
const char * | _uri, | ||
const char * | _version = "SIP/2.0" |
||
) |
Creates a new, empty, outgoing SIPMessage.
SIPMessage | ( | SIPParty * | ep, |
const char * | buf, | ||
int | len = -1 , |
||
unsigned int * | bodyLen = 0 |
||
) |
Creates a new SIPMessage from parsing a text buffer.
ep | Party to set in message |
buf | Buffer to parse |
len | Optional buffer length |
bodyLen | Pointer to body length to be set if the message was received on a stream transport. If not 0 the buffer must contain the message without its body |
SIPMessage | ( | const SIPMessage * | message, |
int | _code, | ||
const char * | _reason = 0 |
||
) |
Creates a new SIPMessage as answer to another message.
SIPMessage | ( | const SIPMessage * | original, |
const SIPMessage * | answer | ||
) |
Creates an ACK message from an original message and a response.
virtual ~SIPMessage | ( | ) | [virtual] |
Destroy the message and all
void addHeader | ( | const char * | name, |
const char * | value = 0 |
||
) | [inline] |
Append a new header line constructed from name and content
name | Name of the header to add |
value | Content of the new header line |
void addHeader | ( | MimeHeaderLine * | line | ) | [inline] |
Append an already constructed header line
line | Header line to add |
Add Route: headers to an outgoing message
routes | List of MimeHeaderLine representing SIP routes |
MimeAuthLine* buildAuth | ( | const String & | username, |
const String & | password, | ||
const String & | meth, | ||
const String & | uri, | ||
bool | proxy = false , |
||
SIPEngine * | engine = 0 |
||
) | const |
Construct a new authorization line based on credentials and challenge
username | User account name |
password | Clear text password for the account |
meth | Method to include in the authorization digest |
uri | URI to include in the authorization digest |
proxy | Set to true to authenticate to a proxy, false to a server |
engine | Optional engine processing this message |
MimeAuthLine* buildAuth | ( | const SIPMessage & | original, |
SIPEngine * | engine = 0 |
||
) | const |
Construct a new authorization line based on this answer and original message
original | Origianl outgoing message |
engine | Optional engine processing this message |
void buildBody | ( | const char * | buf, |
int | len = -1 |
||
) |
Build message's body. Reset it before. This method should be called after parsing a partial message (headers only)
buf | Buffer to parse |
len | Optional buffer length |
void clearHeaders | ( | const char * | name | ) |
Clear all header lines that match a name
name | Name of the header to clear |
void complete | ( | SIPEngine * | engine, |
const char * | user = 0 , |
||
const char * | domain = 0 , |
||
const char * | dlgTag = 0 , |
||
int | flags = -1 |
||
) |
Complete missing fields with defaults taken from a SIP engine
engine | Pointer to the SIP engine to use for extra parameters |
user | Username to set in the From header instead of that in rURI |
domain | Domain to use in From instead of the local IP address |
dlgTag | Value of dialog tag parameter to set in To header |
flags | Miscellaneous completion flags, -1 to take them from engine |
int copyAllHeaders | ( | const SIPMessage * | message, |
const char * | name, | ||
const char * | newName = 0 |
||
) |
Copy multiple header lines (including all parameters) from another message
message | Pointer to the message to copy the header from |
name | Name of the headers to copy |
newName | New name to force in headers, NULL to just copy |
bool copyHeader | ( | const SIPMessage * | message, |
const char * | name, | ||
const char * | newName = 0 |
||
) |
Copy an entire header line (including all parameters) from another message
message | Pointer to the message to copy the header from |
name | Name of the header to copy |
newName | New name to force in headers, NULL to just copy |
int countHeaders | ( | const char * | name | ) | const |
Count the header lines matching a specific name
name | Name of the header to locate |
static SIPMessage* fromParsing | ( | SIPParty * | ep, |
const char * | buf, | ||
int | len = -1 , |
||
unsigned int * | bodyLen = 0 |
||
) | [static] |
Construct a new SIP message by parsing a text buffer
ep | Party to set in message |
buf | Buffer to parse |
len | Optional buffer length |
bodyLen | Pointer to body length to be set if the message was received on a stream transport. If not 0 the buffer must contain the message without its body |
const String& getAuthPassword | ( | ) | const [inline] |
Retrieve the password to be used for auto authentication
const String& getAuthUsername | ( | ) | const [inline] |
Retrieve the username to be used for auto authentication
Creates a binary buffer from a SIPMessage.
int getCSeq | ( | ) | const [inline] |
Get the Command Sequence number from this message
int getFlags | ( | ) | const [inline] |
Get the last flags used by this message
const MimeHeaderLine* getHeader | ( | const char * | name | ) | const |
Find a header line by name
name | Name of the header to locate |
const String& getHeaders | ( | ) | const |
Creates a text buffer from the headers.
const String& getHeaderValue | ( | const char * | name, |
bool | last = false |
||
) | const |
Get a string value (without parameters) from a header line
name | Name of the header to locate |
last | Find the last header with that name instead of first |
const MimeHeaderLine* getLastHeader | ( | const char * | name | ) | const |
Find the last header line that matches a given name name
name | Name of the header to locate |
const NamedString* getParam | ( | const char * | name, |
const char * | param, | ||
bool | last = false |
||
) | const |
Find a header parameter by name
name | Name of the header to locate |
param | Name of the parameter to locate in the tag |
last | Find the last header with that name instead of first |
const String& getParamValue | ( | const char * | name, |
const char * | param, | ||
bool | last = false |
||
) | const |
Get a string value from a parameter in a header line
name | Name of the header to locate |
param | Name of the parameter to locate in the tag |
last | Find the last header with that name instead of first |
Get the endpoint this message uses
Extract routes from Record-Route: headers
bool isACK | ( | ) | const [inline] |
Check if this message is an ACK message
bool isAnswer | ( | ) | const [inline] |
Check if this message is an answer or a request
bool isOutgoing | ( | ) | const [inline] |
Check if this message is an outgoing message
bool isReliable | ( | ) | const [inline] |
Check if this message is handled by a reliable protocol
bool isValid | ( | ) | const [inline] |
Check if this message is valid as result of the parsing
void setAutoAuth | ( | const char * | username = 0 , |
const char * | password = 0 |
||
) | [inline] |
Prepare the message for automatic client transaction authentication.
username | Username for auto authentication |
password | Password for auto authentication |
void setHeader | ( | const char * | name, |
const char * | value = 0 |
||
) | [inline] |
Set a header line constructed from name and content
Set the endpoint this message uses
ep | Pointer to the endpoint of this message |
All the body related things should be here, including the entire body and the parsed body.
int code |
Status code