1#include "../UserAgent.hxx"
14#define RESIPROCATE_SUBSYSTEM AppSubsystem::MOHPARKSERVER
15#define ALLOCATIONTIME 32
24 mMaxParkTime(maxParkTime)
32 InfoLog(<<
"ParkOrbit::ParkOrbit created orbit " << mOrbit);
38 InfoLog(<<
"ParkOrbit::~ParkOrbit destroyed orbit " << mOrbit);
44 if(mParticipants.size() < DEFAULT_BRIDGE_MAX_IN_OUTPUTS-3)
56 InfoLog(<<
"ParkOrbit::addParticipant added participant=" << participantHandle <<
" to orbit " << mOrbit <<
" (size=" << mParticipants.size() <<
"), parkedUri=" << parkedUri <<
", parkerUri=" << parkerUri);
62 WarningLog(<<
"ParkOrbit::addParticipant cannot add participant=" << participantHandle <<
" to full orbit " << mOrbit <<
" (size=" << mParticipants.size() <<
")");
70 ParticipantQueue::iterator it = mParticipants.begin();
71 for(;it!=mParticipants.end();it++)
73 if((*it)->mParticipantHandle == participantHandle)
76 mParticipants.erase(it);
77 InfoLog(<<
"ParkOrbit::removeParticipant removed participant=" << participantHandle <<
" from orbit " << mOrbit <<
" (size=" << mParticipants.size() <<
")");
88 if(!mParticipants.empty())
93 participantHandle = mParticipants.front()->mParticipantHandle;
94 mParticipants.front()->mAllocationTime = now;
96 mParticipants.push_back(mParticipants.front());
97 mParticipants.pop_front();
98 InfoLog(<<
"ParkOrbit::getNextQueuedParticipant removed participant=" << participantHandle <<
" from orbit " << mOrbit <<
" (size=" << mParticipants.size() <<
")");
101 return participantHandle;
107 ParticipantQueue::iterator it = mParticipants.begin();
108 for(;it!=mParticipants.end();it++)
110 if((*it)->mParticipantHandle == participantHandle)
112 InfoLog(<<
"ParkOrbit::onMaxParkTimeout sending parked call back to " << (*it)->mParkerUri <<
", participant=" << participantHandle <<
" from orbit " << mOrbit <<
" (size=" << mParticipants.size() <<
")");
#define WarningLog(args_)
bool onMaxParkTimeout(recon::ParticipantHandle participantHandle)
bool removeParticipant(recon::ParticipantHandle participantHandle)
bool addParticipant(recon::ParticipantHandle participantHandle, const resip::Uri &parkedUri, const resip::Uri &parkerUri)
recon::ParticipantHandle getNextQueuedParticipant()
ParkOrbit(Server &server, unsigned long orbit, unsigned long maxParkTime, const resip::Uri &musicFilename)
recon::UserAgent * getMyUserAgent()
virtual void redirectParticipant(ParticipantHandle partHandle, const resip::NameAddr &destination, unsigned int redirectCode=302, RedirectSuccessCondition successCondition=RedirectSuccessOnConnected)
Redirects the participant to another endpoint.
virtual ParticipantHandle createMediaResourceParticipant(ConversationHandle convHandle, const resip::Uri &mediaUrl, const std::shared_ptr< resip::Data > &playAudioBuffer=std::shared_ptr< resip::Data >(), void *recordingCircularBuffer=0)
Creates a new media resource participant in the specified conversation.
virtual void answerParticipant(ParticipantHandle partHandle)
Signal to the participant that the call is answered.
virtual void rejectParticipant(ParticipantHandle partHandle, unsigned int rejectCode)
Rejects an incoming remote participant with the specified code.
virtual void destroyParticipant(ParticipantHandle partHandle)
Ends connections to the participant and removes it from all active conversations.
virtual void addParticipant(ConversationHandle convHandle, ParticipantHandle partHandle)
Adds the specified participant to the specified conversation.
virtual void destroyConversation(ConversationHandle convHandle)
Destroys an existing Conversation, and ends all participants that solely belong to this conversation.
virtual ConversationHandle createConversation(AutoHoldMode autoHoldMode=AutoHoldEnabled)
Create a new empty Conversation to which participants can be added.
virtual void modifyParticipantContribution(ConversationHandle convHandle, ParticipantHandle partHandle, unsigned int inputGain, unsigned int outputGain)
Modifies how the participant contributes to the particular conversation.
virtual void startApplicationTimer(unsigned int timerId, std::chrono::duration< double > duration, unsigned int seqNumber)
Used by an application to start a timer that is managed by the useragent.
Represents the "name-addr" and the "addr-spec" elements in the RFC 3261 grammar.
static uint64_t getTimeSecs()
Returns the current clock time in seconds.
Represents the "SIP-URI" and "SIPS-URI" elements in the RFC 3261 grammar.
unsigned int ParticipantHandle
dcm! – add UnusedChecking(_enum) below;
unsigned __int64 uint64_t