123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374 |
- /*
- * 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.
- *
- */
- #ifndef TINYWRAP_SIPSESSION_H
- #define TINYWRAP_SIPSESSION_H
- #include "tinyWRAP_config.h"
- #include "tinysip.h"
- #include "tinymedia/tmedia_qos.h"
- #include "ActionConfig.h"
- class SipUri;
- class SipStack;
- class MsrpCallback;
- class MediaSessionMgr;
- /* ======================== T140Callback ========================*/
- class TINYWRAP_API T140CallbackData
- {
- public:
- #if !defined(SWIG)
- T140CallbackData(enum tmedia_t140_data_type_e data_type, const void* data_ptr, unsigned data_size) {
- m_eType = data_type;
- m_pPtr = data_ptr;
- m_nSize = data_size;
- }
- #endif
- virtual ~T140CallbackData() {}
- inline enum tmedia_t140_data_type_e getType()const {
- return m_eType;
- }
- inline unsigned getSize()const {
- return m_nSize;
- }
- inline unsigned getData(void* pOutput, unsigned nMaxsize)const {
- unsigned nRetsize = 0;
- if(pOutput && nMaxsize && m_pPtr) {
- nRetsize = (m_nSize > nMaxsize) ? nMaxsize : m_nSize;
- memcpy(pOutput, m_pPtr, nRetsize);
- }
- return nRetsize;
- }
- private:
- enum tmedia_t140_data_type_e m_eType;
- const void* m_pPtr;
- unsigned m_nSize;
- };
- class TINYWRAP_API T140Callback
- {
- public:
- T140Callback() {}
- virtual ~T140Callback() {}
- virtual int ondata(const T140CallbackData* pData) {
- return 0;
- }
- };
- #if !defined(SWIG)
- class RtcpCallbackData
- {
- public:
- RtcpCallbackData(enum tmedia_rtcp_event_type_e event_type, uint32_t ssrc_media) {
- m_eType = event_type;
- m_nSSRC = ssrc_media;
- }
- virtual ~RtcpCallbackData() {}
- inline enum tmedia_rtcp_event_type_e getType()const {
- return m_eType;
- }
- inline uint32_t getSSRC()const {
- return m_nSSRC;
- }
- private:
- enum tmedia_rtcp_event_type_e m_eType;
- uint32_t m_nSSRC;
- };
- class TINYWRAP_API RtcpCallback
- {
- public:
- RtcpCallback() {}
- virtual ~RtcpCallback() {}
- virtual int onevent(const RtcpCallbackData* e) {
- return 0;
- }
- };
- #endif /* #if !defined(SWIG) */
- /* ======================== SipSession ========================*/
- class TINYWRAP_API SipSession
- {
- public:
- SipSession(SipStack* stack);
- #if !defined(SWIG)
- SipSession(SipStack* stack, tsip_ssession_handle_t* pHandle);
- #endif
- virtual ~SipSession();
- public:
- bool haveOwnership();
- bool addHeader(const char* name, const char* value);
- bool removeHeader(const char* name);
- bool addCaps(const char* name, const char* value);
- bool addCaps(const char* name);
- bool removeCaps(const char* name);
- bool setExpires(unsigned expires);
- bool setFromUri(const char* fromUriString);
- bool setFromUri(const SipUri* fromUri);
- bool setToUri(const char* toUriString);
- bool setToUri(const SipUri* toUri);
- bool setSilentHangup(bool silent);
- bool addSigCompCompartment(const char* compId);
- bool removeSigCompCompartment();
- #if !defined(SWIG)
- bool setAuth(const char* authHa1, const char* authIMPI);
- #endif
- unsigned getId()const;
- #if !defined(SWIG)
- bool setWebSocketSrc(const char* host, int32_t port, const char* proto);
- const SipStack* getStack() const;
- const tsip_ssession_handle_t* getWrappedSession() {
- return m_pHandle;
- }
- #endif
- private:
- void init(SipStack* stack, tsip_ssession_handle_t* pHandle=tsk_null);
- protected:
- tsip_ssession_handle_t* m_pHandle;
- const SipStack* m_pStack;
- };
- /* ======================== InviteSession ========================*/
- class TINYWRAP_API InviteSession : public SipSession
- {
- public: /* ctor() and dtor() */
- InviteSession(SipStack* Stack);
- #if !defined(SWIG)
- InviteSession(SipStack* pStack, tsip_ssession_handle_t* pHandle);
- #endif
- virtual ~InviteSession();
- public: /* Public functions */
- bool accept(ActionConfig* config=tsk_null);
- bool hangup(ActionConfig* config=tsk_null);
- bool reject(ActionConfig* config=tsk_null);
- bool sendInfo(const void* payload, unsigned len, ActionConfig* config=tsk_null);
- const MediaSessionMgr* getMediaMgr();
- private:
- MediaSessionMgr* m_pMediaMgr;
- };
- /* ======================== CallSession ========================*/
- class TINYWRAP_API CallSession : public InviteSession
- {
- public: /* ctor() and dtor() */
- CallSession(SipStack* pStack);
- #if !defined(SWIG)
- CallSession(SipStack* pStack, tsip_ssession_handle_t* pHandle);
- #endif
- virtual ~CallSession();
- public: /* Public functions */
- bool callAudio(const char* remoteUriString, ActionConfig* config=tsk_null); /* @deprecated */
- bool callAudio(const SipUri* remoteUri, ActionConfig* config=tsk_null); /* @deprecated */
- bool callAudioVideo(const char* remoteUriString, ActionConfig* config=tsk_null); /* @deprecated */
- bool callAudioVideo(const SipUri* remoteUri, ActionConfig* config=tsk_null); /* @deprecated */
- bool callVideo(const char* remoteUriString, ActionConfig* config=tsk_null); /* @deprecated */
- bool callVideo(const SipUri* remoteUri, ActionConfig* config=tsk_null); /* @deprecated */
- bool call(const char* remoteUriString, twrap_media_type_t media, ActionConfig* config=tsk_null);
- bool call(const SipUri* remoteUri, twrap_media_type_t media, ActionConfig* config=tsk_null);
- #if !defined(SWIG)
- bool setSupportedCodecs(int32_t codecs);
- int32_t getNegotiatedCodecs();
- bool setMediaSSRC(twrap_media_type_t media, uint32_t ssrc);
- #endif
- bool setSessionTimer(unsigned timeout, const char* refresher);
- bool set100rel(bool enabled);
- bool setRtcp(bool enabled);
- bool setRtcpMux(bool enabled);
- bool setSRtpMode(enum tmedia_srtp_mode_e mode);
- bool setAvpfMode(enum tmedia_mode_e mode);
- bool setICE(bool enabled);
- bool setICEStun(bool enabled);
- bool setICETurn(bool enabled);
- bool setSTUNServer(const char* hostname, uint16_t port);
- bool setSTUNCred(const char* username, const char* password);
- bool setVideoFps(int32_t fps);
- bool setVideoBandwidthUploadMax(int32_t max);
- bool setVideoBandwidthDownloadMax(int32_t max);
- bool setVideoPrefSize(tmedia_pref_video_size_t pref_video_size);
- bool setQoS(tmedia_qos_stype_t type, tmedia_qos_strength_t strength);
- bool hold(ActionConfig* config=tsk_null);
- bool resume(ActionConfig* config=tsk_null);
- bool transfer(const char* referToUriString, ActionConfig* config=tsk_null);
- bool acceptTransfer(ActionConfig* config=tsk_null);
- bool rejectTransfer(ActionConfig* config=tsk_null);
- bool sendDTMF(int number);
- unsigned getSessionTransferId();
- bool sendT140Data(enum tmedia_t140_data_type_e data_type, const void* data_ptr = NULL, unsigned data_size = 0);
- bool setT140Callback(const T140Callback* pT140Callback);
- #if !defined(SWIG)
- bool sendRtcpEvent(enum tmedia_rtcp_event_type_e event_type, twrap_media_type_t media_type, uint32_t ssrc_media = 0);
- bool setRtcpCallback(const RtcpCallback* pRtcpCallback, twrap_media_type_t media_type);
- const T140Callback* getT140Callback() const;
- static int t140OnDataCallback(const void* context, enum tmedia_t140_data_type_e data_type, const void* data_ptr, unsigned data_size);
- const RtcpCallback* getRtcpCallback() const;
- static int rtcpOnCallback(const void* context, enum tmedia_rtcp_event_type_e event_type, uint32_t ssrc_media);
- #endif /* #if !defined(SWIG) */
- private:
- const T140Callback* m_pT140Callback;
- const RtcpCallback* m_pRtcpCallback;
- };
- /* ======================== MsrpSession ========================*/
- class TINYWRAP_API MsrpSession : public InviteSession
- {
- public: /* ctor() and dtor() */
- MsrpSession(SipStack* pStack, MsrpCallback* pCallback);
- #if !defined(SWIG)
- MsrpSession(SipStack* pStack, tsip_ssession_handle_t* pHandle);
- #endif
- virtual ~MsrpSession();
- public: /* Public functions */
- bool setCallback(MsrpCallback* pCallback);
- bool callMsrp(const char* remoteUriString, ActionConfig* config=tsk_null);
- bool callMsrp(const SipUri* remoteUri, ActionConfig* config=tsk_null);
- bool sendMessage(const void* payload, unsigned len, ActionConfig* config=tsk_null);
- bool sendFile(ActionConfig* config=tsk_null);
- public: /* Public helper function */
- #if !defined(SWIG)
- inline MsrpCallback* getCallback()const {
- return m_pCallback;
- }
- #endif
- private:
- MsrpCallback* m_pCallback;
- };
- /* ======================== MessagingSession ========================*/
- class TINYWRAP_API MessagingSession : public SipSession
- {
- public: /* ctor() and dtor() */
- MessagingSession(SipStack* pStack);
- #if !defined(SWIG)
- MessagingSession(SipStack* pStack, tsip_ssession_handle_t* pHandle);
- #endif
- virtual ~MessagingSession();
- public: /* Public functions */
- bool send(const void* payload, unsigned len, ActionConfig* config=tsk_null);
- bool accept(ActionConfig* config=tsk_null);
- bool reject(ActionConfig* config=tsk_null);
- };
- /* ======================== InfoSession ========================*/
- class TINYWRAP_API InfoSession : public SipSession
- {
- public: /* ctor() and dtor() */
- InfoSession(SipStack* pStack);
- #if !defined(SWIG)
- InfoSession(SipStack* pStack, tsip_ssession_handle_t* pHandle);
- #endif
- virtual ~InfoSession();
- public: /* Public functions */
- bool send(const void* payload, unsigned len, ActionConfig* config=tsk_null);
- bool accept(ActionConfig* config=tsk_null);
- bool reject(ActionConfig* config=tsk_null);
- };
- /* ======================== OptionsSession ========================*/
- class TINYWRAP_API OptionsSession : public SipSession
- {
- public: /* ctor() and dtor() */
- OptionsSession(SipStack* pStack);
- #if !defined(SWIG)
- OptionsSession(SipStack* pStack, tsip_ssession_handle_t* pHandle);
- #endif
- virtual ~OptionsSession();
- public: /* Public functions */
- bool send(ActionConfig* config=tsk_null);
- bool accept(ActionConfig* config=tsk_null);
- bool reject(ActionConfig* config=tsk_null);
- };
- /* ======================== PublicationSession ========================*/
- class TINYWRAP_API PublicationSession : public SipSession
- {
- public: /* ctor() and dtor() */
- PublicationSession(SipStack* pStack);
- #if !defined(SWIG)
- PublicationSession(SipStack* pStack, tsip_ssession_handle_t* pHandle);
- #endif
- virtual ~PublicationSession();
- public: /* Public functions */
- bool publish(const void* payload, unsigned len, ActionConfig* config=tsk_null);
- bool unPublish(ActionConfig* config=tsk_null);
- };
- /* ======================== RegistrationSession ========================*/
- class TINYWRAP_API RegistrationSession : public SipSession
- {
- public: /* ctor() and dtor() */
- RegistrationSession(SipStack* pStack);
- #if !defined(SWIG)
- RegistrationSession(SipStack* pStack, tsip_ssession_handle_t* pHandle);
- #endif
- virtual ~RegistrationSession();
- public: /* Public functions */
- bool register_(ActionConfig* config=tsk_null);
- bool unRegister(ActionConfig* config=tsk_null);
- bool accept(ActionConfig* config=tsk_null);
- bool reject(ActionConfig* config=tsk_null);
- };
- /* ======================== SubscriptionSession ========================*/
- class TINYWRAP_API SubscriptionSession : public SipSession
- {
- public: /* ctor() and dtor() */
- SubscriptionSession(SipStack* pStack);
- #if !defined(SWIG)
- SubscriptionSession(SipStack* pStack, tsip_ssession_handle_t* pHandle);
- #endif
- virtual ~SubscriptionSession();
- public: /* Public functions */
- bool subscribe();
- bool unSubscribe();
- };
- #endif /* TINYWRAP_SIPSESSION_H */
|