21 mEventType(msg.header(h_Event).value()),
59 Data key = mEventType + mDocumentKey;
60 std::pair<DialogUsageManager::ServerSubscriptions::iterator,DialogUsageManager::ServerSubscriptions::iterator> subs;
61 subs =
mDum.mServerSubscriptions.equal_range(key);
66 for (DialogUsageManager::ServerSubscriptions::iterator i = subs.first; i != subs.second; ++i)
79std::shared_ptr<SipMessage>
83 mLastResponse->header(h_Expires).value() = mExpires;
88std::shared_ptr<SipMessage>
92 mLastResponse->header(h_Expires).value() = mExpires;
109 if (msg.
exists(h_Expires))
111 mExpires = msg.
header(h_Expires).value();
113 if (msg.
exists(h_SIPIfMatch))
119 mLastResponse->header(h_Expires).value() = mExpires;
122 if (
mDum.mPublicationPersistenceManager)
158 mLastResponse->header(h_Expires).value() = mExpires;
176 if (msg.
seq() == mTimerSeq)
181 if (
mDum.mPublicationPersistenceManager)
195 response->header(h_SIPETag).value() = mEtag;
203 uint32_t expires = response->header(h_Expires).value();
206 if (
mDum.mPublicationPersistenceManager)
226 strm <<
"ServerPublication " << mDocumentKey <<
" " << mEventType;
#define resip_assert(x)
This file needs to work for both C and C++ code.
static Data getAor(const Data &filename, const Security::PEMType &pemType)
BaseUsageHandle getBaseHandle() const
DialogUsageManager & mDum
An alternative to std::string, encapsulates an arbitrary buffer of bytes.
void send(std::shared_ptr< SipMessage > request)
ServerPublicationHandler * getServerPublicationHandler(const Data &eventType)
ServerSubscriptionHandler * getServerSubscriptionHandler(const Data &eventType)
static ContentsSecAttrs extractFromPkcs7(const SipMessage &message, Security &security)
static void makeResponse(SipMessage &response, const SipMessage &request, int responseCode, const Data &reason=Data::Empty, const Data &hostname=Data::Empty, const Data &warning=Data::Empty)
Make a response to a provided request.
virtual void addUpdateDocument(const PubDocument &document)=0
virtual bool removeDocument(const Data &eventType, const Data &documentKey, const Data &eTag, uint64_t lastUpdated, bool syncPublication=false)=0
virtual void onRemoved(ServerPublicationHandle, const Data &etag, const SipMessage &pub, uint32_t expires)=0
virtual void onUpdate(ServerPublicationHandle, const Data &etag, const SipMessage &pub, const Contents *contents, const SecurityAttributes *attrs, uint32_t expires)=0
virtual void onExpired(ServerPublicationHandle, const Data &etag)=0
virtual void onInitial(ServerPublicationHandle, const Data &etag, const SipMessage &pub, const Contents *contents, const SecurityAttributes *attrs, uint32_t expires)=0
virtual void onRefresh(ServerPublicationHandle, const Data &etag, const SipMessage &pub, const Contents *contents, const SecurityAttributes *attrs, uint32_t expires)=0
std::shared_ptr< SipMessage > accept(int statusCode=200)
virtual ~ServerPublication()
std::shared_ptr< SipMessage > reject(int responseCode)
virtual EncodeStream & dump(EncodeStream &strm) const
virtual void dispatch(const SipMessage &msg)
const Data & getEtag() const
Data getPublisher() const
void send(std::shared_ptr< SipMessage > response)
Handle< ServerPublication > ServerPublicationHandle
ServerPublicationHandle getHandle()
const Data & getDocumentKey() const
void updateMatchingSubscriptions()
virtual void onPublished(ServerSubscriptionHandle associated, ServerPublicationHandle publication, const Contents *contents, const SecurityAttributes *attrs)
Represents a SIP message.
bool isRequest() const
Returns true if message is a request, false otherwise.
Contents * getContents() const
Retrieves the body of a SIP message.
const RequestLine & header(const RequestLineType &l) const
Returns the RequestLine. This is only valid for request messages.
bool exists(const HeaderBase &headerType) const
Returns true if the given header field is present, false otherwise.
static uint64_t getTimeSecs()
Returns the current clock time in seconds.
dcm! – add UnusedChecking(_enum) below;
StatusLineType h_StatusLine
unsigned long long uint64_t
RequestLineType h_RequestLine
std::unique_ptr< Contents > mContents
std::unique_ptr< SecurityAttributes > mAttributes