本文整理汇总了C++中std::shared_ptr::CheckFolderPermissions方法的典型用法代码示例。如果您正苦于以下问题:C++ shared_ptr::CheckFolderPermissions方法的具体用法?C++ shared_ptr::CheckFolderPermissions怎么用?C++ shared_ptr::CheckFolderPermissions使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类std::shared_ptr
的用法示例。
在下文中一共展示了shared_ptr::CheckFolderPermissions方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: IMAPResult
IMAPResult
IMAPCommandSELECT::ExecuteCommand(std::shared_ptr<HM::IMAPConnection> pConnection, std::shared_ptr<IMAPCommandArgument> pArgument)
{
if (!pConnection->IsAuthenticated())
return IMAPResult(IMAPResult::ResultNo, "Authenticate first");
std::shared_ptr<IMAPSimpleCommandParser> pParser = std::shared_ptr<IMAPSimpleCommandParser>(new IMAPSimpleCommandParser());
pParser->Parse(pArgument);
if (pParser->ParamCount() < 1)
return IMAPResult(IMAPResult::ResultBad, "SELECT Command requires at least 1 parameter.");
String sFolderName = pParser->GetParamValue(pArgument, 0);
if (sFolderName == Configuration::Instance()->GetIMAPConfiguration()->GetIMAPPublicFolderName())
return IMAPResult(IMAPResult::ResultBad, "SELECT Only sub folders of the root shared folder can be selected.");
std::shared_ptr<IMAPFolder> pSelectedFolder = pConnection->GetFolderByFullPath(sFolderName);
if (!pSelectedFolder)
return IMAPResult(IMAPResult::ResultBad, "Folder could not be found.");
bool readAccess = false;
bool writeAccess = false;
pConnection->CheckFolderPermissions(pSelectedFolder, readAccess, writeAccess);
// Check if the user has access to read this folder.
if (!readAccess)
return IMAPResult(IMAPResult::ResultBad, "ACL: Read permission denied (Required for SELECT command).");
pConnection->SetCurrentFolder(pSelectedFolder, false);
std::set<__int64> recent_messages;
auto messages = MessagesContainer::Instance()->GetMessages(pSelectedFolder->GetAccountID(), pSelectedFolder->GetID(), recent_messages, true);
pConnection->SetRecentMessages(recent_messages);
long lCount = messages->GetCount();
__int64 lFirstUnseenID = messages->GetFirstUnseenUID();
long lRecentCount = (int) recent_messages.size();
String sRespTemp;
sRespTemp.Format(_T("* %d EXISTS\r\n"), lCount);
String sResponse = sRespTemp; // EXISTS
sRespTemp.Format(_T("* %d RECENT\r\n"), lRecentCount);
sResponse += sRespTemp;
sResponse += _T("* FLAGS (\\Deleted \\Seen \\Draft \\Answered \\Flagged)\r\n");
sRespTemp.Format(_T("* OK [UIDVALIDITY %d] current uidvalidity\r\n"), pSelectedFolder->GetCreationTime().ToInt());
sResponse += sRespTemp;
if (lFirstUnseenID > 0)
{
sRespTemp.Format(_T("* OK [UNSEEN %d] unseen messages\r\n"), lFirstUnseenID);
sResponse += sRespTemp;
}
sRespTemp.Format(_T("* OK [UIDNEXT %d] next uid\r\n"), pSelectedFolder->GetCurrentUID()+1);
sResponse += sRespTemp;
sResponse += _T("* OK [PERMANENTFLAGS (\\Deleted \\Seen \\Draft \\Answered \\Flagged)] limited\r\n");
if (writeAccess)
sResponse += pArgument->Tag() + _T(" OK [READ-WRITE] SELECT completed\r\n");
else
sResponse += pArgument->Tag() + _T(" OK [READ-ONLY] SELECT completed\r\n");
pConnection->SendAsciiData(sResponse);
return IMAPResult();
}