1#if !defined(RESIP_INVITESESSION_HXX)
2#define RESIP_INVITESESSION_HXX
72 virtual void end(
const Data& userReason);
75 virtual void end()
override;
89 virtual void refer(
const NameAddr& referTo,
bool referSub =
true);
91 virtual void refer(
const NameAddr& referTo, std::unique_ptr<resip::Contents> contents,
bool referSub =
true);
92 virtual void refer(
const NameAddr& referTo,
const NameAddr& referredBy, std::unique_ptr<resip::Contents> contents,
bool referSub =
true);
98 virtual void refer(
const NameAddr& referTo,
const CallId& replaces, std::unique_ptr<resip::Contents> contents,
bool referSub =
true);
119 virtual void rejectNIT(
int statusCode = 488);
373 std::shared_ptr<SipMessage>
sendBye();
426 QueuedNIT(std::shared_ptr<SipMessage> NIT,
bool referSub=
false)
427 : mNIT(NIT), mReferSubscription(referSub) {}
428 std::shared_ptr<SipMessage>&
getNIT() {
return mNIT; }
431 std::shared_ptr<SipMessage> mNIT;
432 bool mReferSubscription;
449 typedef HashMap<Data, std::shared_ptr<SipMessage>>
AckMap;
458 void dispatchUnhandledInvite(
const SipMessage& msg);
Represents the "callid" element in the SIP grammar.
Base class for all SIP body types.
An alternative to std::string, encapsulates an arbitrary buffer of bytes.
dcm! – kill typedef std::list<DialogId> DialogIdSet;
std::shared_ptr< SipMessage > & getNIT()
QueuedNIT(std::shared_ptr< SipMessage > NIT, bool referSub=false)
Base class for class ClientInviteSession and class ServerInviteSession.
virtual void flowTerminated()
std::unique_ptr< Contents > getOfferAnswer(const SipMessage &msg)
virtual void message(const Contents &contents)
sends a message request
const SdpContents & getLocalSdp() const
bool hasLocalOfferAnswer() const
virtual void infoCommand(const Contents &contents)
Tokens & getPeerSupportedEncodings()
std::shared_ptr< SipMessage > mLastNitResponse
bool hasProposedRemoteOfferAnswer() const
void dispatchOptions(const SipMessage &msg)
void dispatchSentReinvite(const SipMessage &msg)
void dispatchSentOptions(const SipMessage &msg)
InviteSession & operator=(const InviteSession &)=delete
Tokens & getPeerRequiresOptionsTags()
virtual void referCommand(const NameAddr &referTo, bool referSub=true)
const SdpContents & getRemoteSdp() const
bool hasProposedRemoteSdp() const
void transition(State target)
bool isSessionModificationInFlight() const
void dispatchTerminated(const SipMessage &msg)
void setCurrentLocalOfferAnswer(const SipMessage &msg)
virtual void rejectReferNoSub(int responseCode)
std::shared_ptr< SipMessage > mLastSentNITRequest
Mimes mPeerSupportedMimeTypes
bool hasRemoteSdp() const
virtual void endCommand(EndReason reason=NotSpecified)
Asynchronously makes the specific dialog end.
Tokens & getPeerSupportedMethods()
Data & getPeerUserAgent()
bool expireSessionAfterFailedModification()
EncodeStream & dump(EncodeStream &strm) const override
std::shared_ptr< SipMessage > sendBye()
virtual void rejectNIT(int statusCode=488)
rejects an INFO or MESSAGE request with an error status code
virtual void reject(int statusCode, WarningCategory *warning=0)
Rejects an offer at the SIP level.
void dispatchSentUpdate(const SipMessage &msg)
virtual void provideAnswerCommand(const Contents &answer)
std::shared_ptr< SipMessage > getLastSentNITRequest() const
gets the last NIT request that was sent by the session
const Contents & getProposedRemoteOfferAnswer() const
Tokens & getPeerAllowedEvents()
NameAddrs mPeerPAssertedIdentities
void dispatchReceivedUpdateOrReinvite(const SipMessage &msg)
Tokens mPeerSupportedMethods
const Data & getEndReasonString(InviteSession::EndReason reason)
std::shared_ptr< SipMessage > mInvite200
void dispatchSentReinviteNoOffer(const SipMessage &msg)
Tokens mPeerSupportedEncodings
unsigned int mSessionExpirationTimerSeq
std::unique_ptr< Contents > mProposedRemoteOfferAnswer
std::unique_ptr< Contents > mProposedLocalOfferAnswer
std::unique_ptr< Contents > mCurrentLocalOfferAnswer
std::shared_ptr< SipMessage > mLastRemoteSessionModification
std::shared_ptr< SipMessage > mLastLocalSessionModification
bool sessionTimerSupportedLocalAndPeer() const
InviteSession(InviteSession &&)=delete
SipMessage mLastReferNoSubRequest
unsigned int mStaleReInviteTimerSeq
virtual void requestOffer()
Called to request that the far end provide an offer.
virtual void end() override
static std::unique_ptr< Contents > makeOfferAnswer(const Contents &offerAnswer)
DialogUsageManager::EncryptionLevel mProposedEncryptionLevel
unsigned long mCurrentRetransmit200
bool hasRemoteOfferAnswer() const
std::queue< QueuedNIT * > mNITQueue
virtual void refer(const NameAddr &referTo, bool referSub=true)
sends a refer request
void startRetransmit200Timer()
void setSessionTimerHeaders(SipMessage &msg)
bool mSessionRefreshReInvite
void dispatchSentReinviteAnswered(const SipMessage &msg)
Tokens mPeerSupportedLanguages
uint32_t mSessionInterval
void storePeerCapabilities(const SipMessage &msg)
void dispatchGlare(const SipMessage &msg)
HashMap< Data, std::shared_ptr< SipMessage > > AckMap
virtual void provideOfferCommand(const Contents &offer)
Provide asynchronous method access by using command.
void dispatchConnected(const SipMessage &msg)
void dispatchReceivedReinviteSentOffer(const SipMessage &msg)
virtual void acceptNIT(int statusCode=200, const Contents *contents=0)
accepts an INFO or MESSAGE request with a 2xx and an optional contents
void checkDeferredSessionExpiration()
InviteSession(const InviteSession &)=delete
void setSessionTimerPreferences()
bool mPeerSupportsSessionTimer
virtual void onReadyToSend(SipMessage &msg) override
virtual void rejectNITCommand(int statusCode=488)
Asynchronously rejects an INFO or MESSAGE request with an error status code.
InviteSessionHandle getSessionHandle()
virtual void provideAnswer(const Contents &answer)
Similar to provideOffer - called to set the answer to be signaled to the peer.
void dispatchWaitingToOffer(const SipMessage &msg)
virtual void rejectCommand(int statusCode, WarningCategory *warning=0)
Asynchronously rejects an offer at the SIP level.
void handleSessionTimerResponse(const SipMessage &msg)
virtual void targetRefresh(const NameAddr &localUri)
will send a reINVITE (current offerAnswer) or UPDATE with new Contact header
virtual void info(const Contents &contents)
sends an info request
void dispatchMessage(const SipMessage &msg)
@ UAS_ReceivedUpdateWaitingAnswer
@ ReceivedReinviteSentOffer
@ UAS_WaitingToRequestOffer
@ UAS_FirstSentOfferReliable
@ UAS_NoAnswerReliableWaitingPrack
@ UAC_ReceivedUpdateEarly
@ UAS_FirstSentAnswerReliable
@ ReceivedReinviteNoOffer
@ UAS_ProvidedOfferReliable
@ UAC_SentUpdateEarlyGlare
@ UAS_OfferProvidedAnswer
@ UAS_OfferReliableProvidedAnswer
@ UAS_AcceptedWaitingAnswer
@ UAS_EarlyProvidedAnswer
@ SentReinviteNoOfferGlare
void dispatchWaitingToRequestOffer(const SipMessage &msg)
Tokens mPeerRequiresOptionTags
unsigned int mSessionRefreshTimerSeq
bool updateMethodSupported() const
const SdpContents & getProposedRemoteSdp() const
void referNoSub(const SipMessage &msg)
const Contents & getRemoteOfferAnswer() const
static void setOfferAnswer(SipMessage &msg, const Contents &offerAnswer, const Contents *alternative=0)
void dispatchWaitingToHangup(const SipMessage &msg)
void startStaleReInviteTimer()
std::unique_ptr< Contents > mCurrentRemoteOfferAnswer
Tokens & getPeerSupportedOptionTags()
void dispatchInfo(const SipMessage &msg)
bool mSessionExpirationPending
void dispatch(const SipMessage &msg) override
Event toEvent(const SipMessage &msg, const Contents *offeranswer)
bool isAckForCurrent200(const SipMessage &ack) const
Tokens mPeerSupportedOptionTags
virtual void acceptNITCommand(int statusCode=200, const Contents *contents=0)
Asynchronously accepts an INFO or MESSAGE request with a 2xx and an optional contents.
virtual void acceptReferNoSub(int statusCode=200)
void dispatchBye(const SipMessage &msg)
void handleSessionTimerRequest(SipMessage &response, const SipMessage &request)
InviteSession & operator=(InviteSession &&)=delete
Mimes & getPeerSupportedMimeTypes()
bool isTerminated() const
const Contents & getLocalOfferAnswer() const
void dispatchWaitingToTerminate(const SipMessage &msg)
DialogUsageManager::EncryptionLevel getEncryptionLevel(const SipMessage &msg)
bool isReliable(const SipMessage &msg) const
virtual void messageCommand(const Contents &contents)
void provideProposedOffer()
Tokens & getPeerSupportedLanguages()
void dispatchReinviteNoOfferGlare(const SipMessage &msg)
NameAddrs & getPeerPAssertedIdentities()
virtual void provideOffer(const Contents &offer)
Called to set the offer that will be used in the next message that sends an offer.
static Data toData(State state)
Tokens mPeerAllowedEvents
std::shared_ptr< SipMessage > sendAck(const Contents *answer=0)
ParserContainer< Token > mUserEndReasons
void dispatchAnswered(const SipMessage &msg)
DialogUsageManager::EncryptionLevel mCurrentEncryptionLevel
Represents the "name-addr" and the "addr-spec" elements in the RFC 3261 grammar.
Container class for ParserCategory, used by SipMessage to represent multi-valued headers (Contact,...
Provides an interface to process and generate SDP bodies (MIME content-type application/sdp).
Represents a SIP message.
Represents the "warning-value" element in the RFC 3261 grammar.
dcm! – add UnusedChecking(_enum) below;