Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
jami-daemon
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Wiki
Requirements
Code
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Locked files
Deploy
Releases
Model registry
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
savoirfairelinux
jami-daemon
Commits
4a57b5b5
Commit
4a57b5b5
authored
17 years ago
by
Alexandre Bourget
Browse files
Options
Downloads
Patches
Plain Diff
Move stuff from SIPCall to Call, for future IAX support.
parent
0ddc602c
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
src/call.cpp
+62
-1
62 additions, 1 deletion
src/call.cpp
src/call.h
+85
-1
85 additions, 1 deletion
src/call.h
src/sipcall.cpp
+1
-61
1 addition, 61 deletions
src/sipcall.cpp
src/sipcall.h
+3
-46
3 additions, 46 deletions
src/sipcall.h
with
151 additions
and
109 deletions
src/call.cpp
+
62
−
1
View file @
4a57b5b5
...
@@ -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
;
}
This diff is collapsed.
Click to expand it.
src/call.h
+
85
−
1
View file @
4a57b5b5
...
@@ -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
This diff is collapsed.
Click to expand it.
src/sipcall.cpp
+
1
−
61
View file @
4a57b5b5
...
@@ -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
)
...
...
This diff is collapsed.
Click to expand it.
src/sipcall.h
+
3
−
46
View file @
4a57b5b5
...
@@ -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
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment