c732d49e |
* Copyright (C) 2017, University of the Basque Country (UPV/EHU)
*
* 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;
} |