1 #ifndef FILEZILLA_ENGINE_FTP_RAWTRANSFER_HEADER 2 #define FILEZILLA_ENGINE_FTP_RAWTRANSFER_HEADER 3 4 #include "ftpcontrolsocket.h" 5 6 enum rawtransferStates 7 { 8 rawtransfer_init = 0, 9 rawtransfer_type, 10 rawtransfer_port_pasv, 11 rawtransfer_rest, 12 rawtransfer_transfer, 13 rawtransfer_waitfinish, 14 rawtransfer_waittransferpre, 15 rawtransfer_waittransfer, 16 rawtransfer_waitsocket 17 }; 18 19 class CFtpRawTransferOpData final : public COpData, public CFtpOpData 20 { 21 public: CFtpRawTransferOpData(CFtpControlSocket & controlSocket)22 CFtpRawTransferOpData(CFtpControlSocket& controlSocket) 23 : COpData(PrivCommand::rawtransfer, L"CFtpRawTransferOpData") 24 , CFtpOpData(controlSocket) 25 { 26 } 27 28 virtual int Send() override; 29 virtual int ParseResponse() override; 30 31 std::wstring GetPassiveCommand(); 32 bool ParsePasvResponse(); 33 bool ParseEpsvResponse(); 34 35 std::wstring cmd_; 36 37 CFtpTransferOpData* pOldData{}; 38 39 bool bPasv{true}; 40 bool bTriedPasv{}; 41 bool bTriedActive{}; 42 43 std::wstring host_; 44 int port_{}; 45 }; 46 47 #endif 48