Update v2.x
This commit is contained in:
parent
873f61b8ce
commit
885bef94c8
|
@ -23,25 +23,25 @@
|
|||
|
||||
|
||||
SdpMessage::SdpMessage()
|
||||
:sdpmessage(tsk_null)
|
||||
:m_pSdpMessage(tsk_null)
|
||||
{
|
||||
}
|
||||
|
||||
SdpMessage::SdpMessage(tsdp_message_t *_sdpmessage)
|
||||
{
|
||||
this->sdpmessage = (tsdp_message_t *)tsk_object_ref(_sdpmessage);
|
||||
m_pSdpMessage = (tsdp_message_t *)tsk_object_ref(_sdpmessage);
|
||||
}
|
||||
|
||||
SdpMessage::~SdpMessage()
|
||||
{
|
||||
TSK_OBJECT_SAFE_FREE(this->sdpmessage);
|
||||
TSK_OBJECT_SAFE_FREE(m_pSdpMessage);
|
||||
}
|
||||
|
||||
char* SdpMessage::getSdpHeaderValue(const char* media, char name, unsigned index /*= 0*/)
|
||||
{
|
||||
const tsdp_header_M_t* M;
|
||||
|
||||
if((M = (const tsdp_header_M_t*)tsdp_message_get_header(this->sdpmessage, tsdp_htype_M))){
|
||||
if((M = (const tsdp_header_M_t*)tsdp_message_get_header(m_pSdpMessage, tsdp_htype_M))){
|
||||
tsdp_header_type_t type = tsdp_htype_Dummy;
|
||||
const tsdp_header_t* header;
|
||||
switch(name){
|
||||
|
@ -64,7 +64,7 @@ char* SdpMessage::getSdpHeaderValue(const char* media, char name, unsigned index
|
|||
case 'z': type = tsdp_htype_Z; break;
|
||||
}
|
||||
|
||||
if((header = tsdp_message_get_headerAt(this->sdpmessage, type, index))){
|
||||
if((header = tsdp_message_get_headerAt(m_pSdpMessage, type, index))){
|
||||
return tsdp_header_tostring(header);
|
||||
}
|
||||
}
|
||||
|
@ -77,7 +77,7 @@ char* SdpMessage::getSdpHeaderAValue(const char* media, const char* attributeNam
|
|||
const tsdp_header_M_t* M;
|
||||
tsk_size_t i;
|
||||
|
||||
for(i = 0; (M = (const tsdp_header_M_t*)tsdp_message_get_headerAt(this->sdpmessage, tsdp_htype_M, i)); i++){
|
||||
for(i = 0; (M = (const tsdp_header_M_t*)tsdp_message_get_headerAt(m_pSdpMessage, tsdp_htype_M, i)); i++){
|
||||
if(tsk_striequals(M->media, media)){
|
||||
const tsdp_header_A_t* A;
|
||||
if((A = tsdp_header_M_findA(M, attributeName))){
|
||||
|
@ -91,21 +91,21 @@ char* SdpMessage::getSdpHeaderAValue(const char* media, const char* attributeNam
|
|||
|
||||
|
||||
SipMessage::SipMessage()
|
||||
:sipmessage(tsk_null), sdpmessage(tsk_null)
|
||||
:m_pSipMessage(tsk_null), m_pSdpMessage(tsk_null)
|
||||
{
|
||||
}
|
||||
|
||||
SipMessage::SipMessage(tsip_message_t *_sipmessage)
|
||||
: sdpmessage(tsk_null)
|
||||
: m_pSdpMessage(tsk_null)
|
||||
{
|
||||
this->sipmessage = (tsip_message_t *)tsk_object_ref(_sipmessage);
|
||||
m_pSipMessage = (tsip_message_t *)tsk_object_ref(_sipmessage);
|
||||
}
|
||||
|
||||
SipMessage::~SipMessage()
|
||||
{
|
||||
TSK_OBJECT_SAFE_FREE(this->sipmessage);
|
||||
if(this->sdpmessage){
|
||||
delete this->sdpmessage;
|
||||
TSK_OBJECT_SAFE_FREE(m_pSipMessage);
|
||||
if(m_pSdpMessage){
|
||||
delete m_pSdpMessage;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -118,58 +118,58 @@ const tsip_header_t* SipMessage::getSipHeader(const char* name, unsigned index /
|
|||
tsk_size_t pos = 0;
|
||||
const tsk_list_item_t *item;
|
||||
const tsip_header_t* hdr = tsk_null;
|
||||
if(!this->sipmessage || !name){
|
||||
if(!m_pSipMessage || !name){
|
||||
return tsk_null;
|
||||
}
|
||||
|
||||
if(tsk_striequals(name, "v") || tsk_striequals(name, "via")){
|
||||
if(index == 0){
|
||||
hdr = (const tsip_header_t*)this->sipmessage->firstVia;
|
||||
hdr = (const tsip_header_t*)m_pSipMessage->firstVia;
|
||||
goto bail;
|
||||
}else pos++; }
|
||||
if(tsk_striequals(name, "f") || tsk_striequals(name, "from")){
|
||||
if(index == 0){
|
||||
hdr = (const tsip_header_t*)this->sipmessage->From;
|
||||
hdr = (const tsip_header_t*)m_pSipMessage->From;
|
||||
goto bail;
|
||||
}else pos++; }
|
||||
if(tsk_striequals(name, "t") || tsk_striequals(name, "to")){
|
||||
if(index == 0){
|
||||
hdr = (const tsip_header_t*)this->sipmessage->To;
|
||||
hdr = (const tsip_header_t*)m_pSipMessage->To;
|
||||
goto bail;
|
||||
}else pos++; }
|
||||
if(tsk_striequals(name, "m") || tsk_striequals(name, "contact")){
|
||||
if(index == 0){
|
||||
hdr = (const tsip_header_t*)this->sipmessage->Contact;
|
||||
hdr = (const tsip_header_t*)m_pSipMessage->Contact;
|
||||
goto bail;
|
||||
}else pos++; }
|
||||
if(tsk_striequals(name, "i") || tsk_striequals(name, "call-id")){
|
||||
if(index == 0){
|
||||
hdr = (const tsip_header_t*)this->sipmessage->Call_ID;
|
||||
hdr = (const tsip_header_t*)m_pSipMessage->Call_ID;
|
||||
goto bail;
|
||||
}else pos++; }
|
||||
if(tsk_striequals(name, "cseq")){
|
||||
if(index == 0){
|
||||
hdr = (const tsip_header_t*)this->sipmessage->CSeq;
|
||||
hdr = (const tsip_header_t*)m_pSipMessage->CSeq;
|
||||
goto bail;
|
||||
}else pos++; }
|
||||
if(tsk_striequals(name, "expires")){
|
||||
if(index == 0){
|
||||
hdr = (const tsip_header_t*)this->sipmessage->Expires;
|
||||
hdr = (const tsip_header_t*)m_pSipMessage->Expires;
|
||||
goto bail;
|
||||
}else pos++; }
|
||||
if(tsk_striequals(name, "c") || tsk_striequals(name, "content-type")){
|
||||
if(index == 0){
|
||||
hdr = (const tsip_header_t*)this->sipmessage->Content_Type;
|
||||
hdr = (const tsip_header_t*)m_pSipMessage->Content_Type;
|
||||
goto bail;
|
||||
}else pos++; }
|
||||
if(tsk_striequals(name, "l") || tsk_striequals(name, "content-length")){
|
||||
if(index == 0){
|
||||
hdr = (const tsip_header_t*)this->sipmessage->Content_Length;
|
||||
hdr = (const tsip_header_t*)m_pSipMessage->Content_Length;
|
||||
goto bail;
|
||||
}else pos++; }
|
||||
|
||||
|
||||
tsk_list_foreach(item, this->sipmessage->headers){
|
||||
tsk_list_foreach(item, m_pSipMessage->headers){
|
||||
if(tsk_striequals(tsip_header_get_name_2(TSIP_HEADER(item->data)), name)){
|
||||
if(pos++ >= index){
|
||||
hdr = (const tsip_header_t*)item->data;
|
||||
|
@ -224,7 +224,7 @@ char* SipMessage::getSipHeaderParamValue(const char* name, const char* param, un
|
|||
*/
|
||||
unsigned SipMessage::getSipContentLength()
|
||||
{
|
||||
return TSIP_MESSAGE_CONTENT_DATA_LENGTH(this->sipmessage);
|
||||
return TSIP_MESSAGE_CONTENT_DATA_LENGTH(m_pSipMessage);
|
||||
}
|
||||
|
||||
/** Gets the message content
|
||||
|
@ -237,22 +237,30 @@ unsigned SipMessage::getSipContentLength()
|
|||
unsigned SipMessage::getSipContent(void* output, unsigned maxsize)
|
||||
{
|
||||
unsigned retsize = 0;
|
||||
if(output && maxsize && TSIP_MESSAGE_HAS_CONTENT(this->sipmessage)){
|
||||
retsize = (this->sipmessage->Content->size > maxsize) ? maxsize : this->sipmessage->Content->size;
|
||||
memcpy(output, this->sipmessage->Content->data, retsize);
|
||||
if(output && maxsize && TSIP_MESSAGE_HAS_CONTENT(m_pSipMessage)){
|
||||
retsize = (m_pSipMessage->Content->size > maxsize) ? maxsize : m_pSipMessage->Content->size;
|
||||
memcpy(output, m_pSipMessage->Content->data, retsize);
|
||||
}
|
||||
return retsize;
|
||||
}
|
||||
|
||||
const void* SipMessage::getSipContentPtr()
|
||||
{
|
||||
if(m_pSipMessage && m_pSipMessage->Content){
|
||||
return m_pSipMessage->Content->data;
|
||||
}
|
||||
return tsk_null;
|
||||
}
|
||||
|
||||
const SdpMessage* SipMessage::getSdpMessage()
|
||||
{
|
||||
if(!this->sdpmessage && TSIP_MESSAGE_HAS_CONTENT(this->sipmessage)){
|
||||
tsdp_message_t* sdp = tsdp_message_parse(this->sipmessage->Content->data, this->sipmessage->Content->size);
|
||||
if(!m_pSdpMessage && TSIP_MESSAGE_HAS_CONTENT(m_pSipMessage)){
|
||||
tsdp_message_t* sdp = tsdp_message_parse(m_pSipMessage->Content->data, m_pSipMessage->Content->size);
|
||||
if(sdp){
|
||||
this->sdpmessage = new SdpMessage(sdp);
|
||||
m_pSdpMessage = new SdpMessage(sdp);
|
||||
TSK_OBJECT_SAFE_FREE(sdp);
|
||||
}
|
||||
}
|
||||
|
||||
return this->sdpmessage;
|
||||
return m_pSdpMessage;
|
||||
}
|
||||
|
|
|
@ -37,7 +37,7 @@ public:
|
|||
char* getSdpHeaderAValue(const char* media, const char* attributeName);
|
||||
|
||||
private:
|
||||
tsdp_message_t *sdpmessage;
|
||||
tsdp_message_t *m_pSdpMessage;
|
||||
};
|
||||
|
||||
class SipMessage
|
||||
|
@ -53,14 +53,17 @@ public:
|
|||
char* getSipHeaderParamValue(const char* name, const char* param, unsigned index = 0);
|
||||
unsigned getSipContentLength();
|
||||
unsigned getSipContent(void* output, unsigned maxsize);
|
||||
#if !defined(SWIG)
|
||||
const void* getSipContentPtr();
|
||||
#endif
|
||||
const SdpMessage* getSdpMessage();
|
||||
|
||||
private:
|
||||
const tsip_header_t* getSipHeader(const char* name, unsigned index = 0);
|
||||
|
||||
private:
|
||||
tsip_message_t *sipmessage;
|
||||
SdpMessage *sdpmessage;
|
||||
tsip_message_t *m_pSipMessage;
|
||||
SdpMessage *m_pSdpMessage;
|
||||
};
|
||||
|
||||
#endif /* TINYWRAP_SIPMESSAGE_H */
|
||||
|
|
|
@ -287,10 +287,19 @@ int tsip_dialog_message_Sending_2_Terminated_X_2xx(va_list *app)
|
|||
*/
|
||||
int tsip_dialog_message_Sending_2_Sending_X_401_407_421_494(va_list *app)
|
||||
{
|
||||
/*tsip_dialog_message_t *self = va_arg(*app, tsip_dialog_message_t *);*/
|
||||
/*const tsip_response_t *response = va_arg(*app, const tsip_response_t *);*/
|
||||
|
||||
return 0;
|
||||
tsip_dialog_message_t *self = va_arg(*app, tsip_dialog_message_t *);
|
||||
const tsip_response_t *response = va_arg(*app, const tsip_response_t *);
|
||||
int ret;
|
||||
|
||||
if((ret = tsip_dialog_update(TSIP_DIALOG(self), response))){
|
||||
/* Alert the user. */
|
||||
TSIP_DIALOG_MESSAGE_SIGNAL(self, tsip_ao_message,
|
||||
TSIP_RESPONSE_CODE(response), TSIP_RESPONSE_PHRASE(response), response);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
return send_MESSAGE(self);
|
||||
}
|
||||
|
||||
/* Sending -> (300 to 699) -> Terminated
|
||||
|
|
|
@ -287,10 +287,19 @@ int tsip_dialog_options_Sending_2_Terminated_X_2xx(va_list *app)
|
|||
*/
|
||||
int tsip_dialog_options_Sending_2_Sending_X_401_407_421_494(va_list *app)
|
||||
{
|
||||
/*tsip_dialog_options_t *self = va_arg(*app, tsip_dialog_options_t *);*/
|
||||
/*const tsip_response_t *response = va_arg(*app, const tsip_response_t *);*/
|
||||
|
||||
return 0;
|
||||
tsip_dialog_options_t *self = va_arg(*app, tsip_dialog_options_t *);
|
||||
const tsip_response_t *response = va_arg(*app, const tsip_response_t *);
|
||||
int ret;
|
||||
|
||||
if((ret = tsip_dialog_update(TSIP_DIALOG(self), response))){
|
||||
/* Alert the user. */
|
||||
TSIP_DIALOG_OPTIONS_SIGNAL(self, tsip_ao_options,
|
||||
TSIP_RESPONSE_CODE(response), TSIP_RESPONSE_PHRASE(response), response);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
return send_OPTIONS(self);
|
||||
}
|
||||
|
||||
/* Sending -> (300 to 699) -> Terminated
|
||||
|
|
Loading…
Reference in New Issue