/* */ #ifndef D_RECEIVER_MSE_HANDSHAKE_COMMAND_H #define D_RECEIVER_MSE_HANDSHAKE_COMMAND_H #include "PeerAbstractCommand.h" namespace aria2 { class MSEHandshake; class SocketCore; class Peer; class ReceiverMSEHandshakeCommand:public PeerAbstractCommand { public: enum Seq { RECEIVER_IDENTIFY_HANDSHAKE, RECEIVER_WAIT_KEY, RECEIVER_SEND_KEY_PENDING, RECEIVER_FIND_HASH_MARKER, RECEIVER_RECEIVE_PAD_C_LENGTH, RECEIVER_RECEIVE_PAD_C, RECEIVER_RECEIVE_IA_LENGTH, RECEIVER_RECEIVE_IA, RECEIVER_SEND_STEP2_PENDING, }; private: Seq sequence_; MSEHandshake* mseHandshake_; void createCommand(); protected: virtual bool executeInternal() CXX11_OVERRIDE; virtual bool exitBeforeExecute() CXX11_OVERRIDE; public: ReceiverMSEHandshakeCommand(cuid_t cuid, const std::shared_ptr& peer, DownloadEngine* e, const std::shared_ptr& s); virtual ~ReceiverMSEHandshakeCommand(); }; } // namespace aria2 #endif // D_RECEIVER_MSE_HANDSHAKE_COMMAND_H