doubango/bindings/_common/SipEvent.h
c732d49e
 /*
 * Copyright (C) 2017, University of the Basque Country (UPV/EHU)
 * Contact for licensing options: <licensing-mcpttclient(at)mcopenplatform(dot)com>
 *
 * The original file was part of Open Source Doubango Framework
 * Copyright (C) 2010-2011 Mamadou Diop.
 * Copyright (C) 2012 Doubango Telecom <http://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.
 *
 */
 #ifndef TINYWRAP_SIPEVENT_H
 #define TINYWRAP_SIPEVENT_H
 
 #include "tinyWRAP_config.h"
 
 #include "tinysip.h"
 #include "Common.h"
175b478c
 #include "SipSession.h"
c732d49e
 
 class SipStack;
 
 class SipSession;
 class InviteSession;
 class CallSession;
 class MsrpSession;
 class MessagingSession;
 class MessagingLocationSession;
 //MCPTT Affiliation
 class MessagingAffiliationSession;
 //MCPTT MBMS
 class MessagingMbmsSession;
 class InfoSession;
 class OptionsSession;
 class PublicationSession;
 //MCPTT Affiliation
 class PublicationAffiliationSession;
175b478c
 //MCPTT Authentication
 class PublicationAuthenticationSession;
c732d49e
 
 class RegistrationSession;
 class SubscriptionSession;
 //MCPTT Affiliation
 class SubscriptionAffiliationSession;
175b478c
 class SubscriptionCMSession;
 
 class SubscriptionGMSession;
 
c732d49e
 class SipMessage;
 
 
 /* ======================== SipEvent ========================*/
 class TINYWRAP_API SipEvent
 {
 public:
 #if !defined(SWIG)
 	SipEvent(const tsip_event_t *sipevent);
 #endif
 	virtual ~SipEvent();
 
 public:
 	short getCode() const;
 	const char* getPhrase() const;
 	const SipSession* getBaseSession() const;
 	const SipMessage* getSipMessage() const;
 #if !defined(SWIG)
 	const tsip_event_t * getWrappedEvent(){ return sipevent; }
 #endif
 #if !defined(SWIG)
 	SipStack* getStack()const;
 #endif
 
 protected:
 	const tsip_event_t *sipevent;
 	SipMessage* sipmessage;
 };
 
 
 /* ======================== DialogEvent ========================*/
 class TINYWRAP_API DialogEvent: public SipEvent
 {
 public:
 #if !defined(SWIG)
 	DialogEvent(const tsip_event_t *sipevent);
 #endif
 	virtual ~DialogEvent();
 
 public: /* Public API functions */
 };
 
 /* ======================== StackEvent ========================*/
 class TINYWRAP_API StackEvent: public SipEvent
 {
 public:
 #if !defined(SWIG)
 	StackEvent(const tsip_event_t *sipevent);
 #endif
 	virtual ~StackEvent();
 
 public: /* Public API functions */
 };
 
 
 
 /* ======================== InviteEvent ========================*/
 class TINYWRAP_API InviteEvent: public SipEvent
 {
 public:
 #if !defined(SWIG)
 	InviteEvent(const tsip_event_t *sipevent);
 #endif
 	virtual ~InviteEvent();
 
 public: /* Public API functions */
 	tsip_invite_event_type_t getType() const;
 	twrap_media_type_t getMediaType() const;
 	const InviteSession* getSession() const;
 	CallSession* takeCallSessionOwnership() const;
 	MsrpSession* takeMsrpSessionOwnership() const;
 };
 
 
 
 /* ======================== MessagingEvent ========================*/
 class TINYWRAP_API MessagingEvent: public SipEvent
 {
 public:
 #if !defined(SWIG)
 	MessagingEvent(const tsip_event_t *sipevent);
 #endif
 	virtual ~MessagingEvent();
 
 public: /* Public API functions */
 	tsip_message_event_type_t getType() const;
 	const MessagingSession* getSession() const;
 	MessagingSession* takeSessionOwnership() const;
 };
175b478c
 /* ======================== MessagingLocationEvent ========================*/
c732d49e
 class TINYWRAP_API MessagingLocationEvent: public SipEvent
 {
 public:
 #if !defined(SWIG)
 	MessagingLocationEvent(const tsip_event_t *sipevent);
 #endif
 	virtual ~MessagingLocationEvent();
 
 public: /* Public API functions */
 	tsip_message_event_type_t getType() const;
 	const MessagingLocationSession* getSession() const;
 	MessagingLocationSession* takeSessionOwnership() const;
 };
 
175b478c
 
 
 /* ======================== MessagingAffiliationEvent ========================*/
c732d49e
 class TINYWRAP_API MessagingAffiliationEvent: public SipEvent
 {
 public:
 #if !defined(SWIG)
 	MessagingAffiliationEvent(const tsip_event_t *sipevent);
 #endif
 	virtual ~MessagingAffiliationEvent();
 
 public: /* Public API functions */
 	tsip_message_event_type_t getType() const;
 	const MessagingAffiliationSession* getSession() const;
 	MessagingAffiliationSession* takeSessionOwnership() const;
 };
 
175b478c
 /* ======================== MessagingMbmsEvent ========================*/
c732d49e
 class TINYWRAP_API MessagingMbmsEvent: public SipEvent
 {
 public:
 #if !defined(SWIG)
 	MessagingMbmsEvent(const tsip_event_t *sipevent);
 #endif
 	virtual ~MessagingMbmsEvent();
 
 public: /* Public API functions */
 	tsip_message_event_type_t getType() const;
 	const MessagingMbmsSession* getSession() const;
 	MessagingMbmsSession* takeSessionOwnership() const;
 };
 
 /* ======================== InfoEvent ========================*/
 class TINYWRAP_API InfoEvent: public SipEvent
 {
 public:
 #if !defined(SWIG)
 	InfoEvent(const tsip_event_t *sipevent);
 #endif
 	virtual ~InfoEvent();
 
 public: /* Public API functions */
 	tsip_info_event_type_t getType() const;
 	const InfoSession* getSession() const;
 	InfoSession* takeSessionOwnership() const;
 };
 
 
 
 /* ======================== OptionsEvent ========================*/
 class TINYWRAP_API OptionsEvent: public SipEvent
 {
 public:
 #if !defined(SWIG)
 	OptionsEvent(const tsip_event_t *sipevent);
 #endif
 	virtual ~OptionsEvent();
 
 public: /* Public API functions */
 	tsip_options_event_type_t getType() const;
 	const OptionsSession* getSession() const;
 	OptionsSession* takeSessionOwnership() const;
 };
 
 
 
 /* ======================== PublicationEvent ========================*/
 class TINYWRAP_API PublicationEvent: public SipEvent
 {
 public:
 #if !defined(SWIG)
 	PublicationEvent(const tsip_event_t *sipevent);
 #endif
 	virtual ~PublicationEvent();
 
 public: /* Public API functions */
 	tsip_publish_event_type_t getType() const;
 	const PublicationSession* getSession() const;
 	PublicationSession* takeSessionOwnership() const;
 };
 
 /* ======================== PublicationAffiliationEvent ========================*/
 class TINYWRAP_API PublicationAffiliationEvent: public SipEvent
 {
 public:
 #if !defined(SWIG)
 	PublicationAffiliationEvent(const tsip_event_t *sipevent);
 #endif
 	virtual ~PublicationAffiliationEvent();
 
 public: /* Public API functions */
 	tsip_publish_event_type_t getType() const;
 	const PublicationAffiliationSession* getSession() const;
 	PublicationAffiliationSession* takeSessionOwnership() const;
 };
175b478c
 /* ======================== PublicationAuthenticationEvent ========================*/
 class TINYWRAP_API PublicationAuthenticationEvent: public SipEvent
 {
 public:
 #if !defined(SWIG)
 	PublicationAuthenticationEvent(const tsip_event_t *sipevent);
 #endif
 	virtual ~PublicationAuthenticationEvent();
 
 public: /* Public API functions */
 	tsip_publish_event_type_t getType() const;
 	const PublicationAuthenticationSession* getSession() const;
 	PublicationAuthenticationSession* takeSessionOwnership() const;
 };
c732d49e
 
 /* ======================== RegistrationAuthenticationEvent ========================*/
 class TINYWRAP_API RegistrationAuthenticationEvent: public SipEvent
 {
 public:
 #if !defined(SWIG)
 	RegistrationAuthenticationEvent(const tsip_event_t *sipevent);
 #endif
 	virtual ~RegistrationAuthenticationEvent();
 
 public: /* Public API functions */
 	tsip_register_authentication_event_type_t getType() const;
 	//RegistrationSession* takeSessionOwnership() const;
 	
 };
 
 /* ======================== RegistrationEvent ========================*/
 class TINYWRAP_API RegistrationEvent: public SipEvent
 {
 public:
 #if !defined(SWIG)
 	RegistrationEvent(const tsip_event_t *sipevent);
 #endif
 	virtual ~RegistrationEvent();
 
 public: /* Public API functions */
 	tsip_register_event_type_t getType() const;
 	const RegistrationSession* getSession() const;
 	RegistrationSession* takeSessionOwnership() const;
 	
 };
 
 
 
 
 /* ======================== SubscriptionEvent ========================*/
 class TINYWRAP_API SubscriptionEvent: public SipEvent
 {
 public:
 #if !defined(SWIG)
 	SubscriptionEvent(const tsip_event_t *sipevent);
 #endif
 	virtual ~SubscriptionEvent();
 
 public: /* Public API functions */
 	tsip_subscribe_event_type_t getType() const;
 	const SubscriptionSession* getSession() const;
 	SubscriptionSession* takeSessionOwnership() const;
 };
 
 
 /* ======================== SubscriptionAffiliationEvent ========================*/
 class TINYWRAP_API SubscriptionAffiliationEvent: public SipEvent
 {
 public:
 #if !defined(SWIG)
 	SubscriptionAffiliationEvent(const tsip_event_t *sipevent);
 #endif
 	virtual ~SubscriptionAffiliationEvent();
 
 public: /* Public API functions */
 	tsip_subscribe_event_type_t getType() const;
 	const SubscriptionAffiliationSession* getSession() const;
 	SubscriptionAffiliationSession* takeSessionOwnership() const;
 };
 
175b478c
 /* ======================== SubscriptionCMSEvent ========================*/
 class TINYWRAP_API SubscriptionCMSEvent: public SipEvent
 {
 public:
 #if !defined(SWIG)
 	SubscriptionCMSEvent(const tsip_event_t *sipevent);
 #endif
 	virtual ~SubscriptionCMSEvent();
 
 public: /* Public API functions */
 	tsip_subscribe_event_type_t getType() const;
 	const SubscriptionCMSSession* getSession() const;
 	SubscriptionCMSSession* takeSessionOwnership() const;
 };
 
 /* ======================== SubscriptionGMSEvent ========================*/
 class TINYWRAP_API SubscriptionGMSEvent: public SipEvent
 {
 public:
 #if !defined(SWIG)
 	SubscriptionGMSEvent(const tsip_event_t *sipevent);
 #endif
 	virtual ~SubscriptionGMSEvent();
 
 public: /* Public API functions */
 	tsip_subscribe_event_type_t getType() const;
 	const SubscriptionGMSSession* getSession() const;
 	SubscriptionGMSSession* takeSessionOwnership() const;
 };
 
c732d49e
 
 #endif /* TINYWRAP_SIPEVENT_H */