// Copyright (c) 2010 Martin Knafve / hMailServer.com. // http://www.hmailserver.com #pragma once #include "IMAPCommand.h" #include "../Common/Util/ByteBuffer.h" namespace HM { class ByteBuffer; class IMAPFolder; class Domain; class IMAPCommandAppend : public IMAPCommand { public: IMAPCommandAppend(); virtual ~IMAPCommandAppend(); virtual IMAPResult ExecuteCommand(std::shared_ptr pConnection, std::shared_ptr pArgument); void ParseBinary(std::shared_ptr pConnection, std::shared_ptr pBuf); private: void Finish_(std::shared_ptr pConnection); bool TruncateBuffer_(const std::shared_ptr pConnection ); bool WriteData_(const std::shared_ptr pConnection, const BYTE *pBuf, size_t WriteLen); void KillCurrentMessage_(); int GetMaxMessageSize_(std::shared_ptr pDomain); String current_tag_; String flags_to_set_; String create_time_to_set_; size_t bytes_left_to_receive_; String message_file_name_; ByteBuffer append_buffer_; std::shared_ptr destination_folder_; std::shared_ptr current_message_; }; }