summaryrefslogtreecommitdiffstats
path: root/bindings/_common/Msrp.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'bindings/_common/Msrp.cxx')
-rwxr-xr-xbindings/_common/Msrp.cxx360
1 files changed, 196 insertions, 164 deletions
diff --git a/bindings/_common/Msrp.cxx b/bindings/_common/Msrp.cxx
index a1d0992..edb25d3 100755
--- a/bindings/_common/Msrp.cxx
+++ b/bindings/_common/Msrp.cxx
@@ -2,19 +2,19 @@
* Copyright (C) 2010-2011 Mamadou Diop.
*
* Contact: Mamadou Diop <diopmamadou(at)doubango.org>
-*
+*
* This file is part of Open Source Doubango Framework.
*
* DOUBANGO is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
-*
+*
* DOUBANGO is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
-*
+*
* You should have received a copy of the GNU General Public License
* along with DOUBANGO.
*
@@ -26,192 +26,224 @@
/* ======================== MsrpMessage ========================*/
MsrpMessage::MsrpMessage()
-:m_pMessage(tsk_null)
+ :m_pMessage(tsk_null)
{
}
MsrpMessage::MsrpMessage(tmsrp_message_t *_message)
{
- m_pMessage = (tmsrp_message_t *)tsk_object_ref(_message);
+ m_pMessage = (tmsrp_message_t *)tsk_object_ref(_message);
}
MsrpMessage::~MsrpMessage()
{
- TSK_OBJECT_SAFE_FREE(m_pMessage);
+ TSK_OBJECT_SAFE_FREE(m_pMessage);
}
bool MsrpMessage::isRequest()
{
- return (m_pMessage->type == tmsrp_request);
+ return (m_pMessage->type == tmsrp_request);
}
short MsrpMessage::getCode()
{
- return TMSRP_RESPONSE_CODE(m_pMessage);
+ return TMSRP_RESPONSE_CODE(m_pMessage);
}
const char* MsrpMessage::getPhrase()
{
- return TMSRP_RESPONSE_PHRASE(m_pMessage);
+ return TMSRP_RESPONSE_PHRASE(m_pMessage);
}
tmsrp_request_type_t MsrpMessage::getRequestType()
{
- if(TMSRP_MESSAGE_IS_REQUEST(m_pMessage)){
- return m_pMessage->line.request.type;
- }
- return tmsrp_NONE;
+ if(TMSRP_MESSAGE_IS_REQUEST(m_pMessage)) {
+ return m_pMessage->line.request.type;
+ }
+ return tmsrp_NONE;
}
void MsrpMessage::getByteRange(int64_t* start, int64_t* end, int64_t* total)
{
- if(m_pMessage->ByteRange){
- *start = m_pMessage->ByteRange->start;
- *end = m_pMessage->ByteRange->end;
- *total = m_pMessage->ByteRange->total;
- }
- else{
- *start = *end = *total = -1;
- }
+ if(m_pMessage->ByteRange) {
+ *start = m_pMessage->ByteRange->start;
+ *end = m_pMessage->ByteRange->end;
+ *total = m_pMessage->ByteRange->total;
+ }
+ else {
+ *start = *end = *total = -1;
+ }
}
bool MsrpMessage::isLastChunck()
{
- if(TMSRP_MESSAGE_IS_REQUEST(m_pMessage)){
- return (m_pMessage->end_line.cflag == '$');
- }
- else{
- if(m_pMessage->ByteRange){
- return (m_pMessage->ByteRange->end >= m_pMessage->ByteRange->total);
- }
- }
- return false;
+ if(TMSRP_MESSAGE_IS_REQUEST(m_pMessage)) {
+ return (m_pMessage->end_line.cflag == '$');
+ }
+ else {
+ if(m_pMessage->ByteRange) {
+ return (m_pMessage->ByteRange->end >= m_pMessage->ByteRange->total);
+ }
+ }
+ return false;
}
bool MsrpMessage::isSuccessReport()
{
- if(TMSRP_REQUEST_IS_REPORT(m_pMessage)){
- if(m_pMessage->Status){
- return m_pMessage->Status->code >= 200 && m_pMessage->Status->code <= 299;
- }
- }
- return false;
+ if(TMSRP_REQUEST_IS_REPORT(m_pMessage)) {
+ if(m_pMessage->Status) {
+ return m_pMessage->Status->code >= 200 && m_pMessage->Status->code <= 299;
+ }
+ }
+ return false;
}
bool MsrpMessage::isFirstChunck()
{
- return (m_pMessage && m_pMessage->ByteRange->start == 1);
+ return (m_pMessage && m_pMessage->ByteRange->start == 1);
}
char* MsrpMessage::getMsrpHeaderValue(const char* name)
{
- const tmsrp_header_t* header = this->getMsrpHeader(name, 0);
- if(header){
- return tmsrp_header_tostring(header);
- }
- return tsk_null;
+ const tmsrp_header_t* header = this->getMsrpHeader(name, 0);
+ if(header) {
+ return tmsrp_header_tostring(header);
+ }
+ return tsk_null;
}
char* MsrpMessage::getMsrpHeaderParamValue(const char* name, const char* param)
{
- return tsk_null;
+ return tsk_null;
}
unsigned MsrpMessage::getMsrpContentLength()
{
- if(m_pMessage &&
- m_pMessage->Content &&
- m_pMessage->Content->data &&
- m_pMessage->Content->size){
- return m_pMessage->Content->size;
- }
- return 0;
+ if(m_pMessage &&
+ m_pMessage->Content &&
+ m_pMessage->Content->data &&
+ m_pMessage->Content->size) {
+ return m_pMessage->Content->size;
+ }
+ return 0;
}
unsigned MsrpMessage::getMsrpContent(void* output, unsigned maxsize)
{
- unsigned retsize = 0;
- if(!output ||
- !m_pMessage ||
- !m_pMessage->Content ||
- !m_pMessage->Content->data ||
- !m_pMessage->Content->size){
- return 0;
- }
-
-
- retsize = (m_pMessage->Content->size > maxsize) ? maxsize : m_pMessage->Content->size;
- memcpy(output, m_pMessage->Content->data, retsize);
- return retsize;
+ unsigned retsize = 0;
+ if(!output ||
+ !m_pMessage ||
+ !m_pMessage->Content ||
+ !m_pMessage->Content->data ||
+ !m_pMessage->Content->size) {
+ return 0;
+ }
+
+
+ retsize = (m_pMessage->Content->size > maxsize) ? maxsize : m_pMessage->Content->size;
+ memcpy(output, m_pMessage->Content->data, retsize);
+ return retsize;
}
const tmsrp_header_t* MsrpMessage::getMsrpHeader(const char* name, unsigned index /*= 0*/)
{
- tsk_size_t pos = 0;
- const tmsrp_header_t* hdr = tsk_null;
- const tsk_list_item_t *item;
-
- /* From tmsrp_message_get_headerAt() */
- if(!m_pMessage || !name){
- return tsk_null;
- }
-
- if(tsk_striequals(name, "To-Path")){
- if(index == 0){
- hdr = (const tmsrp_header_t*)m_pMessage->To;
- goto bail;
- }else pos++; }
- if(tsk_striequals(name, "From-Path")){
- if(index == 0){
- hdr = (const tmsrp_header_t*)m_pMessage->From;
- goto bail;
- }else pos++; }
- if(tsk_striequals(name, "Message-ID")){
- if(index == 0){
- hdr = (const tmsrp_header_t*)m_pMessage->MessageID;
- goto bail;
- }else pos++; }
- if(tsk_striequals(name, "Byte-Range")){
- if(index == 0){
- hdr = (const tmsrp_header_t*)m_pMessage->ByteRange;
- goto bail;
- }else pos++; }
- if(tsk_striequals(name, "Failure-Report")){
- if(index == 0){
- hdr = (const tmsrp_header_t*)m_pMessage->FailureReport;
- goto bail;
- }else pos++; }
- if(tsk_striequals(name, "Success-Report")){
- if(index == 0){
- hdr = (const tmsrp_header_t*)m_pMessage->SuccessReport;
- goto bail;
- }else pos++; }
- if(tsk_striequals(name, "Status")){
- if(index == 0){
- hdr = (const tmsrp_header_t*)m_pMessage->Status;
- goto bail;
- }else pos++; }
- if(tsk_striequals(name, "Content-Type")){
- if(index == 0){
- hdr = (const tmsrp_header_t*)m_pMessage->ContentType;
- goto bail;
- }else pos++; }
-
-
- /* All other headers */
- tsk_list_foreach(item, m_pMessage->headers){
- if(tsk_striequals(tmsrp_header_get_nameex(TMSRP_HEADER(item->data)), name)){
- if(pos++ >= index){
- hdr = (const tmsrp_header_t*)item->data;
- break;
- }
- }
- }
-
+ tsk_size_t pos = 0;
+ const tmsrp_header_t* hdr = tsk_null;
+ const tsk_list_item_t *item;
+
+ /* From tmsrp_message_get_headerAt() */
+ if(!m_pMessage || !name) {
+ return tsk_null;
+ }
+
+ if(tsk_striequals(name, "To-Path")) {
+ if(index == 0) {
+ hdr = (const tmsrp_header_t*)m_pMessage->To;
+ goto bail;
+ }
+ else {
+ pos++;
+ }
+ }
+ if(tsk_striequals(name, "From-Path")) {
+ if(index == 0) {
+ hdr = (const tmsrp_header_t*)m_pMessage->From;
+ goto bail;
+ }
+ else {
+ pos++;
+ }
+ }
+ if(tsk_striequals(name, "Message-ID")) {
+ if(index == 0) {
+ hdr = (const tmsrp_header_t*)m_pMessage->MessageID;
+ goto bail;
+ }
+ else {
+ pos++;
+ }
+ }
+ if(tsk_striequals(name, "Byte-Range")) {
+ if(index == 0) {
+ hdr = (const tmsrp_header_t*)m_pMessage->ByteRange;
+ goto bail;
+ }
+ else {
+ pos++;
+ }
+ }
+ if(tsk_striequals(name, "Failure-Report")) {
+ if(index == 0) {
+ hdr = (const tmsrp_header_t*)m_pMessage->FailureReport;
+ goto bail;
+ }
+ else {
+ pos++;
+ }
+ }
+ if(tsk_striequals(name, "Success-Report")) {
+ if(index == 0) {
+ hdr = (const tmsrp_header_t*)m_pMessage->SuccessReport;
+ goto bail;
+ }
+ else {
+ pos++;
+ }
+ }
+ if(tsk_striequals(name, "Status")) {
+ if(index == 0) {
+ hdr = (const tmsrp_header_t*)m_pMessage->Status;
+ goto bail;
+ }
+ else {
+ pos++;
+ }
+ }
+ if(tsk_striequals(name, "Content-Type")) {
+ if(index == 0) {
+ hdr = (const tmsrp_header_t*)m_pMessage->ContentType;
+ goto bail;
+ }
+ else {
+ pos++;
+ }
+ }
+
+
+ /* All other headers */
+ tsk_list_foreach(item, m_pMessage->headers) {
+ if(tsk_striequals(tmsrp_header_get_nameex(TMSRP_HEADER(item->data)), name)) {
+ if(pos++ >= index) {
+ hdr = (const tmsrp_header_t*)item->data;
+ break;
+ }
+ }
+ }
+
bail:
- return hdr;
-
+ return hdr;
+
}
@@ -219,41 +251,41 @@ bail:
/* ======================== MsrpEvent ========================*/
MsrpEvent::MsrpEvent(const tmsrp_event_t *_msrpevent)
{
- this->_event = _msrpevent;
- if(this->_event && this->_event->message){
- m_pMessage = new MsrpMessage((tmsrp_message_t *)this->_event->message);
- }
- else{
- m_pMessage = tsk_null;
- }
+ this->_event = _msrpevent;
+ if(this->_event && this->_event->message) {
+ m_pMessage = new MsrpMessage((tmsrp_message_t *)this->_event->message);
+ }
+ else {
+ m_pMessage = tsk_null;
+ }
}
MsrpEvent::~MsrpEvent()
{
- if(m_pMessage){
- delete m_pMessage;
- }
+ if(m_pMessage) {
+ delete m_pMessage;
+ }
}
tmsrp_event_type_t MsrpEvent::getType()
{
- if(this->_event){
- return this->_event->type;
- }
- return tmsrp_event_type_none;
+ if(this->_event) {
+ return this->_event->type;
+ }
+ return tmsrp_event_type_none;
}
const MsrpSession* MsrpEvent::getSipSession()
{
- if(this->_event && this->_event->callback_data){
- return dyn_cast<const MsrpSession*>((const MsrpSession*)this->_event->callback_data);
- }
- return tsk_null;
+ if(this->_event && this->_event->callback_data) {
+ return dyn_cast<const MsrpSession*>((const MsrpSession*)this->_event->callback_data);
+ }
+ return tsk_null;
}
const MsrpMessage* MsrpEvent::getMessage() const
{
- return m_pMessage;
+ return m_pMessage;
}
@@ -261,23 +293,23 @@ const MsrpMessage* MsrpEvent::getMessage() const
int twrap_msrp_cb(const tmsrp_event_t* _event)
{
- const MsrpSession* session = (const MsrpSession*)_event->callback_data;
- MsrpCallback* callback;
- int ret = -1;
-
- if(session){
- if((callback = session->getCallback())){
- MsrpEvent* e = new MsrpEvent(_event);
- ret = callback->OnEvent(e);
- delete e;
- }
- else{
- return 0;
- }
- }
- else{
- TSK_DEBUG_ERROR("Invalid parameter");
- }
-
- return ret;
+ const MsrpSession* session = (const MsrpSession*)_event->callback_data;
+ MsrpCallback* callback;
+ int ret = -1;
+
+ if(session) {
+ if((callback = session->getCallback())) {
+ MsrpEvent* e = new MsrpEvent(_event);
+ ret = callback->OnEvent(e);
+ delete e;
+ }
+ else {
+ return 0;
+ }
+ }
+ else {
+ TSK_DEBUG_ERROR("Invalid parameter");
+ }
+
+ return ret;
} \ No newline at end of file
OpenPOWER on IntegriCloud