Skip to content
Snippets Groups Projects
Commit 4a57b5b5 authored by Alexandre Bourget's avatar Alexandre Bourget
Browse files

Move stuff from SIPCall to Call, for future IAX support.

parent 0ddc602c
No related branches found
No related tags found
No related merge requests found
...@@ -19,10 +19,16 @@ ...@@ -19,10 +19,16 @@
*/ */
#include "call.h" #include "call.h"
Call::Call(const CallID& id, Call::CallType type) : _id(id), _type(type) Call::Call(const CallID& id, Call::CallType type) : _id(id), _type(type),
_localIPAddress(""),
_remoteIPAddress("")
{ {
_connectionState = Call::Disconnected; _connectionState = Call::Disconnected;
_callState = Call::Inactive; _callState = Call::Inactive;
_audioCodec = 0;
_localAudioPort = 0;
_localExternalAudioPort = 0;
_remoteAudioPort = 0;
} }
...@@ -59,3 +65,58 @@ Call::getState() ...@@ -59,3 +65,58 @@ Call::getState()
return _callState; return _callState;
} }
CodecDescriptorMap&
Call::getCodecMap()
{
return _codecMap;
}
const std::string&
Call::getLocalIp()
{
ost::MutexLock m(_callMutex);
return _localIPAddress;
}
unsigned int
Call::getLocalAudioPort()
{
ost::MutexLock m(_callMutex);
return _localAudioPort;
}
unsigned int
Call::getRemoteAudioPort()
{
ost::MutexLock m(_callMutex);
return _remoteAudioPort;
}
const std::string&
Call::getRemoteIp()
{
ost::MutexLock m(_callMutex);
return _remoteIPAddress;
}
AudioCodec*
Call::getAudioCodec()
{
ost::MutexLock m(_callMutex);
return _audioCodec;
}
void
Call::setAudioStart(bool start)
{
ost::MutexLock m(_callMutex);
_audioStarted = start;
}
bool
Call::isAudioStarted()
{
ost::MutexLock m(_callMutex);
return _audioStarted;
}
...@@ -22,11 +22,13 @@ ...@@ -22,11 +22,13 @@
#include <string> #include <string>
#include <cc++/thread.h> // for mutex #include <cc++/thread.h> // for mutex
#include "audio/codecDescriptor.h"
typedef std::string CallID; typedef std::string CallID;
/** /**
* A call is the base classes for protocol-based calls * A call is the base class for protocol-based calls
*
* @author Yan Morin <yan.morin@gmail.com> * @author Yan Morin <yan.morin@gmail.com>
*/ */
class Call{ class Call{
...@@ -88,10 +90,91 @@ public: ...@@ -88,10 +90,91 @@ public:
*/ */
CallState getState(); CallState getState();
/**
* Set the audio start boolean (protected by mutex)
* @param start true if we start the audio
*/
void setAudioStart(bool start);
/**
* Tell if the audio is started (protected by mutex)
* @return true if it's already started
*/
bool isAudioStarted();
// AUDIO
/** Set internal codec Map: initialization only, not protected */
void setCodecMap(const CodecDescriptorMap& map) { _codecMap = map; }
CodecDescriptorMap& getCodecMap();
/** Set my IP [not protected] */
void setLocalIp(const std::string& ip) { _localIPAddress = ip; }
/** Set local audio port, as seen by me [not protected] */
void setLocalAudioPort(unsigned int port) { _localAudioPort = port;}
/** Set the audio port that remote will see. */
void setLocalExternAudioPort(unsigned int port) { _localExternalAudioPort = port; }
/** Return the audio port seen by the remote side. */
unsigned int getLocalExternAudioPort() { return _localExternalAudioPort; }
/** Return my IP [mutex protected] */
const std::string& getLocalIp();
/** Return port used locally (for my machine) [mutex protected] */
unsigned int getLocalAudioPort();
/** Return audio port at destination [mutex protected] */
unsigned int getRemoteAudioPort();
/** Return IP of destination [mutex protected] */
const std::string& getRemoteIp();
/** Return audio codec [mutex protected] */
AudioCodec* getAudioCodec();
protected: protected:
/** Protect every attribute that can be changed by two threads */ /** Protect every attribute that can be changed by two threads */
ost::Mutex _callMutex; ost::Mutex _callMutex;
/** Set remote's IP addr. [not protected] */
void setRemoteIP(const std::string& ip) { _remoteIPAddress = ip; }
/** Set remote's audio port. [not protected] */
void setRemoteAudioPort(unsigned int port) { _remoteAudioPort = port; }
/** Set the audio codec used. [not protected] */
void setAudioCodec(AudioCodec* audioCodec) { _audioCodec = audioCodec; }
/** Codec Map */
CodecDescriptorMap _codecMap;
/** Codec pointer */
AudioCodec* _audioCodec;
bool _audioStarted;
// Informations about call socket / audio
/** My IP address */
std::string _localIPAddress;
/** Local audio port, as seen by me. */
unsigned int _localAudioPort;
/** Port assigned to my machine by the NAT, as seen by remote peer (he connects there) */
unsigned int _localExternalAudioPort;
/** Remote's IP address */
std::string _remoteIPAddress;
/** Remote's audio port */
unsigned int _remoteAudioPort;
private: private:
/** Unique ID of the call */ /** Unique ID of the call */
CallID _id; CallID _id;
...@@ -108,6 +191,7 @@ private: ...@@ -108,6 +191,7 @@ private:
/** Number of the peer */ /** Number of the peer */
std::string _peerNumber; std::string _peerNumber;
}; };
#endif #endif
...@@ -26,28 +26,17 @@ ...@@ -26,28 +26,17 @@
#define _SENDONLY 1 #define _SENDONLY 1
#define _RECVONLY 2 #define _RECVONLY 2
SIPCall::SIPCall(const CallID& id, Call::CallType type) : Call(id, type), SIPCall::SIPCall(const CallID& id, Call::CallType type) : Call(id, type)
_localIPAddress(""), _remoteIPAddress("")
{ {
_cid = 0; _cid = 0;
_did = 0; _did = 0;
_tid = 0; _tid = 0;
_audioCodec = 0;
_localAudioPort = 0;
_localExternalAudioPort = 0;
_remoteAudioPort = 0;
} }
SIPCall::~SIPCall() SIPCall::~SIPCall()
{ {
} }
CodecDescriptorMap&
SIPCall::getCodecMap()
{
return _codecMap;
}
/** /**
* Answer incoming call correclty before telling the user * Answer incoming call correclty before telling the user
* @param event eXosip Event * @param event eXosip Event
...@@ -335,55 +324,6 @@ SIPCall::SIPCallAnsweredWithoutHold(eXosip_event_t* event) ...@@ -335,55 +324,6 @@ SIPCall::SIPCallAnsweredWithoutHold(eXosip_event_t* event)
return true; return true;
} }
const std::string&
SIPCall::getLocalIp()
{
ost::MutexLock m(_callMutex);
return _localIPAddress;
}
unsigned int
SIPCall::getLocalAudioPort()
{
ost::MutexLock m(_callMutex);
return _localAudioPort;
}
unsigned int
SIPCall::getRemoteAudioPort()
{
ost::MutexLock m(_callMutex);
return _remoteAudioPort;
}
const std::string&
SIPCall::getRemoteIp()
{
ost::MutexLock m(_callMutex);
return _remoteIPAddress;
}
AudioCodec*
SIPCall::getAudioCodec()
{
ost::MutexLock m(_callMutex);
return _audioCodec;
}
void
SIPCall::setAudioStart(bool start)
{
ost::MutexLock m(_callMutex);
_audioStarted = start;
}
bool
SIPCall::isAudioStarted()
{
ost::MutexLock m(_callMutex);
return _audioStarted;
}
//TODO: humm? //TODO: humm?
int int
SIPCall::sdp_complete_message(sdp_message_t * remote_sdp, osip_message_t * msg) SIPCall::sdp_complete_message(sdp_message_t * remote_sdp, osip_message_t * msg)
......
...@@ -50,17 +50,6 @@ public: ...@@ -50,17 +50,6 @@ public:
/** @param did SIP transaction id : protected by eXosip lock */ /** @param did SIP transaction id : protected by eXosip lock */
void setTid(int tid) { _tid = tid; } void setTid(int tid) { _tid = tid; }
// AUDIO
/** Set internal codec Map: initialization only, not protected */
void setCodecMap(const CodecDescriptorMap& map) { _codecMap = map; }
CodecDescriptorMap& getCodecMap();
/** set internal, not protected */
void setLocalIp(const std::string& ip) { _localIPAddress = ip; }
void setLocalAudioPort(unsigned int port) { _localAudioPort = port;}
void setLocalExternAudioPort(unsigned int port) { _localExternalAudioPort = port; }
unsigned int getLocalExternAudioPort() { return _localExternalAudioPort; }
/** /**
* Answer incoming call correclty before telling the user * Answer incoming call correclty before telling the user
* @param event eXosip Event * @param event eXosip Event
...@@ -89,33 +78,11 @@ public: ...@@ -89,33 +78,11 @@ public:
*/ */
bool SIPCallAnsweredWithoutHold(eXosip_event_t *event); bool SIPCallAnsweredWithoutHold(eXosip_event_t *event);
/** protected */
const std::string& getLocalIp();
unsigned int getLocalAudioPort();
unsigned int getRemoteAudioPort();
const std::string& getRemoteIp();
AudioCodec* getAudioCodec();
/**
* Set the audio start boolean (protected by mutex)
* @param start true if we start the audio
*/
void setAudioStart(bool start);
/**
* Tell if the audio is started (protected by mutex)
* @return true if it's already started
*/
bool isAudioStarted();
//TODO: humm? //TODO: humm?
int sdp_complete_message(sdp_message_t * remote_sdp, osip_message_t * msg); int sdp_complete_message(sdp_message_t * remote_sdp, osip_message_t * msg);
private: private:
/** set internal, not protected */
void setRemoteIP(const std::string& ip) { _remoteIPAddress = ip; }
void setRemoteAudioPort(unsigned int port) { _remoteAudioPort = port; }
void setAudioCodec(AudioCodec* audioCodec) { _audioCodec = audioCodec; }
// TODO: hum??? // TODO: hum???
int sdp_analyse_attribute (sdp_message_t * sdp, sdp_media_t * med); int sdp_analyse_attribute (sdp_message_t * sdp, sdp_media_t * med);
...@@ -124,9 +91,11 @@ private: ...@@ -124,9 +91,11 @@ private:
* @param event eXosip event * @param event eXosip event
* @return false the event is invalid * @return false the event is invalid
*/ */
bool setPeerInfoFromRequest(eXosip_event_t *event); bool setPeerInfoFromRequest(eXosip_event_t *event);
/** /**
* Get a valid remote SDP or return a 400 bad request response if invalid * Get a valid remote SDP or return a 400 bad request response if invalid
*
* @param event eXosip event * @param event eXosip event
* @return valid remote_sdp or 0 * @return valid remote_sdp or 0
*/ */
...@@ -134,6 +103,7 @@ private: ...@@ -134,6 +103,7 @@ private:
/** /**
* Get a valid remote media or return a 415 unsupported media type * Get a valid remote media or return a 415 unsupported media type
*
* @param tid transaction id * @param tid transaction id
* @param remote_sdp Remote SDP pointer * @param remote_sdp Remote SDP pointer
* @return valid sdp_media_t or 0 * @return valid sdp_media_t or 0
...@@ -163,19 +133,6 @@ private: ...@@ -163,19 +133,6 @@ private:
/** SIP transaction id */ /** SIP transaction id */
int _tid; int _tid;
/** Codec Map */
CodecDescriptorMap _codecMap;
/** codec pointer */
AudioCodec* _audioCodec;
bool _audioStarted;
// Informations about call socket / audio
std::string _localIPAddress;
unsigned int _localAudioPort;
unsigned int _localExternalAudioPort; // what peer (NAT) should connect to
std::string _remoteIPAddress;
unsigned int _remoteAudioPort;
}; };
#endif #endif
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment