FtpDataRetrieve.h
Go to the documentation of this file.
1 /****
2  * Sming Framework Project - Open Source framework for high efficiency native ESP8266 development.
3  * Created 2015 by Skurydin Alexey
4  * http://github.com/SmingHub/Sming
5  * All files of the Sming Core are provided under the LGPL v3 license.
6  *
7  * FtpDataRetrieve.h
8  *
9  ****/
10 
11 #pragma once
12 
13 #include "FtpDataStream.h"
14 #include "FileSystem.h"
15 
17 {
18 public:
19  FtpDataRetrieve(FtpServerConnection& connection, const String& fileName)
20  : FtpDataStream(connection), file(fileOpen(fileName, File::ReadOnly))
21  {
22  }
23 
25  {
26  fileClose(file);
27  }
28 
29  void transferData(TcpConnectionEvent sourceEvent) override
30  {
31  if(completed) {
32  return;
33  }
34  char buf[1024];
35  int len = fileRead(file, buf, sizeof(buf));
36  write(buf, len, TCP_WRITE_FLAG_COPY);
37  if(fileIsEOF(file)) {
38  completed = true;
40  }
41  }
42 
43 private:
44  FileHandle file;
45 };
Definition: FtpDataRetrieve.h:17
void transferData(TcpConnectionEvent sourceEvent) override
Definition: FtpDataRetrieve.h:29
~FtpDataRetrieve()
Definition: FtpDataRetrieve.h:24
FtpDataRetrieve(FtpServerConnection &connection, const String &fileName)
Definition: FtpDataRetrieve.h:19
Definition: FtpDataStream.h:41
void finishTransfer()
Definition: FtpDataStream.h:58
bool completed
Definition: FtpDataStream.h:84
Definition: FtpServerConnection.h:28
Wraps up all file access methods.
Definition: File.h:30
The String class.
Definition: WString.h:137
virtual int write(const char *data, int len, uint8_t apiflags=TCP_WRITE_FLAG_COPY)
Base write operation.
FileHandle fileOpen(const T &path, FileOpenFlags flags=File::ReadOnly)
Open file by path.
Definition: Core/FileSystem.h:120
bool fileIsEOF(FileHandle file)
Check if at end of file.
Definition: Core/FileSystem.h:185
int fileRead(FileHandle file, void *data, size_t size)
Read from file.
Definition: Core/FileSystem.h:163
IFS::FileHandle FileHandle
Definition: Core/FileSystem.h:24
int fileClose(FileHandle file)
Clode file.
Definition: Core/FileSystem.h:130
TcpConnectionEvent
Definition: TcpConnection.h:26