Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/mail.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph Wurst <christoph@winzerhof-wurst.at>2021-03-15 16:24:37 +0300
committerChristoph Wurst <christoph@winzerhof-wurst.at>2021-03-15 16:24:37 +0300
commit51667da1f15c053cfae5f78b1b0eacc4a6b87c17 (patch)
treef64d00e21092981154f4ca16423cafdd7c3b44c6 /lib/Service
parent39aedaa054f74a4ea88566856ddffd23a1d81ad5 (diff)
Log performance of saving a draft
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
Diffstat (limited to 'lib/Service')
-rw-r--r--lib/Service/MailTransmission.php15
1 files changed, 14 insertions, 1 deletions
diff --git a/lib/Service/MailTransmission.php b/lib/Service/MailTransmission.php
index 729da0374..ea31e5e2e 100644
--- a/lib/Service/MailTransmission.php
+++ b/lib/Service/MailTransmission.php
@@ -61,6 +61,7 @@ use OCA\Mail\Model\IMessage;
use OCA\Mail\Model\NewMessageData;
use OCA\Mail\Model\RepliedMessageData;
use OCA\Mail\SMTP\SmtpClientFactory;
+use OCA\Mail\Support\PerformanceLogger;
use OCP\AppFramework\Db\DoesNotExistException;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\Files\File;
@@ -99,6 +100,9 @@ class MailTransmission implements IMailTransmission {
/** @var LoggerInterface */
private $logger;
+ /** @var PerformanceLogger */
+ private $performanceLogger;
+
/**
* @param Folder $userFolder
*/
@@ -111,7 +115,8 @@ class MailTransmission implements IMailTransmission {
IEventDispatcher $eventDispatcher,
MailboxMapper $mailboxMapper,
MessageMapper $messageMapper,
- LoggerInterface $logger) {
+ LoggerInterface $logger,
+ PerformanceLogger $performanceLogger) {
$this->accountService = $accountService;
$this->userFolder = $userFolder;
$this->attachmentService = $attachmentService;
@@ -122,6 +127,7 @@ class MailTransmission implements IMailTransmission {
$this->mailboxMapper = $mailboxMapper;
$this->messageMapper = $messageMapper;
$this->logger = $logger;
+ $this->performanceLogger = $performanceLogger;
}
public function sendMessage(NewMessageData $messageData,
@@ -209,10 +215,12 @@ class MailTransmission implements IMailTransmission {
* @throws ServiceException
*/
public function saveDraft(NewMessageData $message, Message $previousDraft = null): array {
+ $perfLogger = $this->performanceLogger->start('save draft');
$this->eventDispatcher->dispatch(
SaveDraftEvent::class,
new SaveDraftEvent($message->getAccount(), $message, $previousDraft)
);
+ $perfLogger->step('emit pre event');
$account = $message->getAccount();
$imapMessage = $account->newMessage();
@@ -244,11 +252,13 @@ class MailTransmission implements IMailTransmission {
$mail->setBody($imapMessage->getContent());
}
$mail->addHeaderOb(Horde_Mime_Headers_MessageId::create());
+ $perfLogger->step('build draft message');
// 'Send' the message
try {
$transport = new Horde_Mail_Transport_Null();
$mail->send($transport, false, false);
+ $perfLogger->step('create IMAP message');
// save the message in the drafts folder
$client = $this->imapClientFactory->getClient($account);
$draftsMailboxId = $account->getMailAccount()->getDraftsMailboxId();
@@ -262,6 +272,7 @@ class MailTransmission implements IMailTransmission {
$mail,
[Horde_Imap_Client::FLAG_DRAFT]
);
+ $perfLogger->step('save message on IMAP');
} catch (DoesNotExistException $e) {
throw new ServiceException('Drafts mailbox does not exist', 0, $e);
} catch (Horde_Exception $e) {
@@ -272,7 +283,9 @@ class MailTransmission implements IMailTransmission {
DraftSavedEvent::class,
new DraftSavedEvent($account, $message, $previousDraft)
);
+ $perfLogger->step('emit post event');
+ $perfLogger->end();
return [$account, $draftsMailbox, $newUid];
}