doubango/bindings/_common/Mcptt.cxx
c732d49e
 /*
175b478c
 
74ca6d11
 *  Copyright (C) 2020, University of the Basque Country (UPV/EHU)
c732d49e
 *
 * Contact for licensing options: <licensing-mcpttclient(at)mcopenplatform(dot)com>
 *
 * This file is part of MCOP MCPTT Client
 *
 * This 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.
 *
 * This 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 this program; if not, write to the Free Software Foundation, Inc.,
 * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 */
 #include "Mcptt.h"
 
 #include "SipSession.h"
 //#include "Common.h"
 
 /* ======================== McpttMessage ========================*/
 McpttMessage::McpttMessage()
 :m_pMessage(tsk_null)
 {
 }
 
 McpttMessage::McpttMessage(tmcptt_message_t *_message)
 {
 	m_pMessage = (tmcptt_message_t *)tsk_object_ref(_message);
 }
 
 McpttMessage::~McpttMessage()
 {
 	TSK_OBJECT_SAFE_FREE(m_pMessage);
 }
 
 
 short McpttMessage::getRCode()
 {
 	return m_pMessage->reason_code;
 }
 
 const char* McpttMessage::getPhrase()
 {
 	return m_pMessage->reason_phrase;
 }
 
 const char* McpttMessage::getUser()
 {
 	return m_pMessage->user;
 }
 
 short McpttMessage::getParticipants()
 {
 	return m_pMessage->participants;
 }
 
 short McpttMessage::getTime()
 {
 	return m_pMessage->time;
 }
 
 /* ======================== McpttEvent ========================*/
 McpttEvent::McpttEvent(const tmcptt_event_t *_mcpttevent)
 {
 	this->_event = _mcpttevent;
 	if(this->_event && this->_event->message){	
 		m_pMessage = new McpttMessage((tmcptt_message_t *)this->_event->message);
 	}
 	else{
 		m_pMessage = tsk_null;
 	}
 }
 
 McpttEvent::~McpttEvent()
 {
 	if(m_pMessage){
 		delete m_pMessage;
 	}
 }
 
 tmcptt_event_type_t McpttEvent::getType()
 {
 	if(this->_event){
 		return this->_event->type;
 	}
 	return tmcptt_event_type_none;
 }
 
 const CallSession* McpttEvent::getSipSession()
 {
 	if(this->_event && this->_event->callback_data){
 		return dyn_cast<const CallSession*>((const CallSession*)this->_event->callback_data);
 	}
 	return tsk_null;
 }
 
 const McpttMessage* McpttEvent::getMessage() const
 {
 	return m_pMessage;
 }
 /* ======================== McpttMbmsMessage ========================*/
 McpttMbmsMessage::McpttMbmsMessage()
 :m_pMessage(tsk_null)
 {
 }
 
 McpttMbmsMessage::McpttMbmsMessage(tmcptt_mbms_message_t *_message)
 {
 	m_pMessage = (tmcptt_mbms_message_t *)tsk_object_ref(_message);
 }
 
 McpttMbmsMessage::~McpttMbmsMessage()
 {
 	TSK_OBJECT_SAFE_FREE(m_pMessage);
 }
 
 const char* McpttMbmsMessage::getGroupId()
 {
 	return m_pMessage->group_id;
 }
 
 const char* McpttMbmsMessage::getTMGI()
 {
 	return m_pMessage->tmgi;
 }
 
 const char* McpttMbmsMessage::getMediaIP()
 {
 	return m_pMessage->media_ip;
 }
 
 short McpttMbmsMessage::getMediaPort()
 {
 	return m_pMessage->media_port;
 }
 //getMediaControlPort test1
 short McpttMbmsMessage::getMediaControlPort()
 {
 	return m_pMessage->media_control_port;
 }
 
 /* ======================== McpttMbmsEvent ========================*/
 McpttMbmsEvent::McpttMbmsEvent(const tmcptt_mbms_event_t *_mcpttmbmsevent)
 {
 	this->_event = _mcpttmbmsevent;
 	if(this->_event && this->_event->message){	
 		m_pMessage = new McpttMbmsMessage((tmcptt_mbms_message_t *)this->_event->message);
 	}
 	else{
 		m_pMessage = tsk_null;
 	}
 }
 
 McpttMbmsEvent::~McpttMbmsEvent()
 {
 	if(m_pMessage){
 		delete m_pMessage;
 	}
 }
 
 tmcptt_mbms_event_type_t McpttMbmsEvent::getType()
 {
 	if(this->_event){
 		return this->_event->type;
 	}
 	return tmcptt_mbms_event_type_none;
 }
 
 const CallSession* McpttMbmsEvent::getSipSession()
 {
 	if(this->_event && this->_event->callback_data){
 		return dyn_cast<const CallSession*>((const CallSession*)this->_event->callback_data);
 	}
 	return tsk_null;
 }
 
 const McpttMbmsMessage* McpttMbmsEvent::getMessage() const
 {
 	return m_pMessage;
 }
 /**
 CALLBACK
 */
 int twrap_mcptt_cb(const tmcptt_event_t* _event) 
 {
 	const CallSession* session = dyn_cast<const CallSession*>((const CallSession*)_event->callback_data);
 	if(session && session->getMcpttCallback()){
 		const McpttEvent* e = new McpttEvent(_event);
 		int ret = const_cast<McpttCallback*>(session->getMcpttCallback())->OnEvent(e);
 		return ret;
 	}
 	return 0;
 }
 int twrap_mcptt_mbms_cb(const tmcptt_mbms_event_t* _event) 
 {
 	const CallSession* session = dyn_cast<const CallSession*>((const CallSession*)_event->callback_data);
 	if(session && session->getMcpttMbmsCallback()){
 		const McpttMbmsEvent* e = new McpttMbmsEvent(_event);
 		int ret = const_cast<McpttMbmsCallback*>(session->getMcpttMbmsCallback())->OnEvent(e);
 		return ret;
 	}
 	return 0;
 }