/** * Stores a message before it has been enqueued * (enqueueing automatically stores the message so this is * only required if storage is required prior to that * point). */ void MessageStorePlugin::stage(const boost::intrusive_ptr<broker::PersistableMessage>& msg) { if (msg->getPersistenceId() == 0 && !msg->isContentReleased()) { provider->second->stage(msg); } }
/** * Appends content to a previously staged message */ void MessageStorePlugin::appendContent (const boost::intrusive_ptr<const broker::PersistableMessage>& msg, const std::string& data) { if (msg->getPersistenceId()) provider->second->appendContent(msg, data); else THROW_STORE_EXCEPTION("Cannot append content. Message not known to store!"); }
/** * Loads (a section) of content data for the specified * message (previously stored through a call to stage or * enqueue) into data. The offset refers to the content * only (i.e. an offset of 0 implies that the start of the * content should be loaded, not the headers or related * meta-data). */ void MessageStorePlugin::loadContent(const broker::PersistableQueue& queue, const boost::intrusive_ptr<const broker::PersistableMessage>& msg, std::string& data, uint64_t offset, uint32_t length) { if (msg->getPersistenceId()) provider->second->loadContent(queue, msg, data, offset, length); else THROW_STORE_EXCEPTION("Cannot load content. Message not known to store!"); }