From f9913fa28a27f23fde2d4956c62cbb2fb2bc2ee8 Mon Sep 17 00:00:00 2001 From: Vincent Richard Date: Thu, 21 Nov 2013 22:16:57 +0100 Subject: Boost/C++11 shared pointers. --- src/mdn/MDNHelper.cpp | 82 +++++++++++++++++++++++++-------------------------- 1 file changed, 40 insertions(+), 42 deletions(-) (limited to 'src/mdn/MDNHelper.cpp') diff --git a/src/mdn/MDNHelper.cpp b/src/mdn/MDNHelper.cpp index a0d48599..1205aef2 100644 --- a/src/mdn/MDNHelper.cpp +++ b/src/mdn/MDNHelper.cpp @@ -38,33 +38,33 @@ namespace vmime { namespace mdn { -void MDNHelper::attachMDNRequest(ref msg, const mailboxList& mailboxes) +void MDNHelper::attachMDNRequest(shared_ptr msg, const mailboxList& mailboxes) { - ref
hdr = msg->getHeader(); + shared_ptr
hdr = msg->getHeader(); hdr->DispositionNotificationTo()->setValue(mailboxes); } -void MDNHelper::attachMDNRequest(ref msg, const mailbox& mbox) +void MDNHelper::attachMDNRequest(shared_ptr msg, const mailbox& mbox) { mailboxList mboxList; - mboxList.appendMailbox(mbox.clone().dynamicCast ()); + mboxList.appendMailbox(vmime::clone(mbox)); attachMDNRequest(msg, mboxList); } -const std::vector MDNHelper::getPossibleMDNs(const ref msg) +const std::vector MDNHelper::getPossibleMDNs(const shared_ptr msg) { std::vector result; - const ref hdr = msg->getHeader(); + const shared_ptr hdr = msg->getHeader(); if (hdr->hasField(fields::DISPOSITION_NOTIFICATION_TO)) { - const mailboxList& dnto = *hdr->DispositionNotificationTo()->getValue() - .dynamicCast (); + const mailboxList& dnto = + *hdr->DispositionNotificationTo()->getValue (); for (size_t i = 0 ; i < dnto.getMailboxCount() ; ++i) result.push_back(sendableMDNInfos(msg, *dnto.getMailboxAt(i))); @@ -74,9 +74,9 @@ const std::vector MDNHelper::getPossibleMDNs(const ref msg) +bool MDNHelper::isMDN(const shared_ptr msg) { - const ref hdr = msg->getHeader(); + const shared_ptr hdr = msg->getHeader(); // A MDN message implies the following: // - a Content-Type field is present and its value is "multipart/report" @@ -84,10 +84,9 @@ bool MDNHelper::isMDN(const ref msg) // and its value is "disposition-notification" if (hdr->hasField(fields::CONTENT_TYPE)) { - const contentTypeField& ctf = *(hdr->ContentType() - .dynamicCast ()); + const contentTypeField& ctf = *dynamicCast (hdr->ContentType()); - const mediaType type = *ctf.getValue().dynamicCast (); + const mediaType type = *ctf.getValue (); if (type.getType() == vmime::mediaTypes::MULTIPART && type.getSubType() == vmime::mediaTypes::MULTIPART_REPORT) @@ -104,7 +103,7 @@ bool MDNHelper::isMDN(const ref msg) } -receivedMDNInfos MDNHelper::getReceivedMDN(const ref msg) +receivedMDNInfos MDNHelper::getReceivedMDN(const shared_ptr msg) { if (!isMDN(msg)) throw exceptions::invalid_argument(); @@ -113,9 +112,9 @@ receivedMDNInfos MDNHelper::getReceivedMDN(const ref msg) } -bool MDNHelper::needConfirmation(const ref msg) +bool MDNHelper::needConfirmation(const shared_ptr msg) { - ref hdr = msg->getHeader(); + shared_ptr hdr = msg->getHeader(); // No "Return-Path" field if (!hdr->hasField(fields::RETURN_PATH)) @@ -124,8 +123,7 @@ bool MDNHelper::needConfirmation(const ref msg) // More than one address in Disposition-Notification-To if (hdr->hasField(fields::DISPOSITION_NOTIFICATION_TO)) { - const mailboxList& dnto = *hdr->DispositionNotificationTo()->getValue() - .dynamicCast (); + const mailboxList& dnto = *hdr->DispositionNotificationTo()->getValue (); if (dnto.getMailboxCount() > 1) return true; @@ -134,7 +132,7 @@ bool MDNHelper::needConfirmation(const ref msg) // Return-Path != Disposition-Notification-To const mailbox& mbox = *dnto.getMailboxAt(0); - const path& rp = *hdr->ReturnPath()->getValue().dynamicCast (); + const path& rp = *hdr->ReturnPath()->getValue (); if (mbox.getEmail() != rp.getLocalPart() + "@" + rp.getDomain()) return true; @@ -145,7 +143,7 @@ bool MDNHelper::needConfirmation(const ref msg) } -ref MDNHelper::buildMDN(const sendableMDNInfos& mdnInfos, +shared_ptr MDNHelper::buildMDN(const sendableMDNInfos& mdnInfos, const string& text, const charset& ch, const mailbox& expeditor, @@ -155,19 +153,19 @@ ref MDNHelper::buildMDN(const sendableMDNInfos& mdnInfos, const std::map & fields) { // Create a new message - ref msg = vmime::create (); + shared_ptr msg = make_shared (); // Fill-in header fields - ref
hdr = msg->getHeader(); + shared_ptr
hdr = msg->getHeader(); hdr->ContentType()->setValue(mediaType(vmime::mediaTypes::MULTIPART, vmime::mediaTypes::MULTIPART_REPORT)); - hdr->ContentType().dynamicCast ()->setReportType("disposition-notification"); + dynamicCast (hdr->ContentType())->setReportType("disposition-notification"); hdr->Disposition()->setValue(dispo); addressList to; - to.appendAddress(vmime::create (mdnInfos.getRecipient())); + to.appendAddress(make_shared (mdnInfos.getRecipient())); hdr->To()->setValue(to); hdr->From()->setValue(expeditor); @@ -186,36 +184,36 @@ ref MDNHelper::buildMDN(const sendableMDNInfos& mdnInfos, } -ref MDNHelper::createFirstMDNPart(const sendableMDNInfos& /* mdnInfos */, +shared_ptr MDNHelper::createFirstMDNPart(const sendableMDNInfos& /* mdnInfos */, const string& text, const charset& ch) { - ref part = vmime::create (); + shared_ptr part = make_shared (); // Header - ref
hdr = part->getHeader(); + shared_ptr
hdr = part->getHeader(); hdr->ContentType()->setValue(mediaType(vmime::mediaTypes::TEXT, vmime::mediaTypes::TEXT_PLAIN)); - hdr->ContentType().dynamicCast ()->setCharset(ch); + dynamicCast (hdr->ContentType())->setCharset(ch); // Body - part->getBody()->setContents(vmime::create (text)); + part->getBody()->setContents(make_shared (text)); return (part); } -ref MDNHelper::createSecondMDNPart(const sendableMDNInfos& mdnInfos, +shared_ptr MDNHelper::createSecondMDNPart(const sendableMDNInfos& mdnInfos, const disposition& dispo, const string& reportingUA, const std::vector & reportingUAProducts, const std::map & additionalFields) { - ref part = vmime::create (); + shared_ptr part = make_shared (); // Header - ref
hdr = part->getHeader(); + shared_ptr
hdr = part->getHeader(); hdr->ContentDisposition()->setValue(vmime::contentDispositionTypes::INLINE); hdr->ContentType()->setValue(mediaType(vmime::mediaTypes::MESSAGE, @@ -257,7 +255,7 @@ ref MDNHelper::createSecondMDNPart(const sendableMDNInfos& mdnInfos, ruaText += reportingUAProducts[i]; } - ref rua = headerFieldFactory::getInstance()-> + shared_ptr rua = headerFieldFactory::getInstance()-> create(vmime::fields::REPORTING_UA); rua->setValue(ruaText); @@ -266,7 +264,7 @@ ref MDNHelper::createSecondMDNPart(const sendableMDNInfos& mdnInfos, } // -- Final-Recipient - ref fr = headerFieldFactory::getInstance()-> + shared_ptr fr = headerFieldFactory::getInstance()-> create(vmime::fields::FINAL_RECIPIENT); fr->setValue("rfc822; " + mdnInfos.getRecipient().getEmail().generate()); @@ -291,7 +289,7 @@ ref MDNHelper::createSecondMDNPart(const sendableMDNInfos& mdnInfos, it = additionalFields.find(vmime::fields::ERROR); if (it != additionalFields.end()) { - ref error = headerFieldFactory::getInstance()-> + shared_ptr error = headerFieldFactory::getInstance()-> create(vmime::fields::ERROR); error->setValue(it->second); fields.appendField(error); @@ -300,7 +298,7 @@ ref MDNHelper::createSecondMDNPart(const sendableMDNInfos& mdnInfos, it = additionalFields.find(vmime::fields::WARNING); if (it != additionalFields.end()) { - ref warn = headerFieldFactory::getInstance()-> + shared_ptr warn = headerFieldFactory::getInstance()-> create(vmime::fields::WARNING); warn->setValue(it->second); fields.appendField(warn); @@ -309,7 +307,7 @@ ref MDNHelper::createSecondMDNPart(const sendableMDNInfos& mdnInfos, it = additionalFields.find(vmime::fields::FAILURE); if (it != additionalFields.end()) { - ref fail = headerFieldFactory::getInstance()-> + shared_ptr fail = headerFieldFactory::getInstance()-> create(vmime::fields::FAILURE); fail->setValue(it->second); fields.appendField(fail); @@ -322,18 +320,18 @@ ref MDNHelper::createSecondMDNPart(const sendableMDNInfos& mdnInfos, fields.generate(vos); - part->getBody()->setContents(vmime::create (oss.str())); + part->getBody()->setContents(make_shared (oss.str())); return (part); } -ref MDNHelper::createThirdMDNPart(const sendableMDNInfos& mdnInfos) +shared_ptr MDNHelper::createThirdMDNPart(const sendableMDNInfos& mdnInfos) { - ref part = vmime::create (); + shared_ptr part = make_shared (); // Header - ref
hdr = part->getHeader(); + shared_ptr
hdr = part->getHeader(); hdr->ContentDisposition()->setValue(vmime::contentDispositionTypes::INLINE); hdr->ContentType()->setValue(mediaType(vmime::mediaTypes::TEXT, @@ -345,7 +343,7 @@ ref MDNHelper::createThirdMDNPart(const sendableMDNInfos& mdnInfos) mdnInfos.getMessage()->getHeader()->generate(vos); - part->getBody()->setContents(vmime::create (oss.str())); + part->getBody()->setContents(make_shared (oss.str())); return (part); } -- cgit v1.2.3