FtpDataStore.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  * FtpDataStore.h
8  *
9  ****/
10 
11 #pragma once
12 
13 #include "FtpDataStream.h"
14 #include "FileSystem.h"
15 
17 {
18 public:
19  FtpDataStore(FtpServerConnection& connection, const String& fileName)
20  : FtpDataStream(connection), file(fileOpen(fileName, File::WriteOnly | File::CreateNewAlways))
21  {
22  }
23 
25  {
26  fileClose(file);
27  }
28 
29  err_t onReceive(pbuf* buf) override
30  {
31  if(completed) {
33  }
34 
35  if(buf == nullptr) {
36  completed = true;
37  response(226, "Transfer completed");
38  return TcpConnection::onReceive(buf);
39  }
40 
41  pbuf* cur = buf;
42  while(cur != nullptr && cur->len > 0) {
43  fileWrite(file, (uint8_t*)cur->payload, cur->len);
44  cur = cur->next;
45  }
46 
47  return TcpConnection::onReceive(buf);
48  }
49 
50 private:
51  FileHandle file;
52 };
Definition: FtpServerConnection.h:27
The String class.
Definition: WString.h:136
int fileWrite(FileHandle file, const void *data, size_t size)
Write to file.
Definition: Core/FileSystem.h:142
static constexpr OpenFlags WriteOnly
Write-only.
Definition: File.h:73
virtual err_t onReceive(pbuf *buf)
Definition: FtpDataStream.h:40
void response(int code, String text=nullptr)
Definition: FtpDataStream.h:72
err_t onReceive(pbuf *buf) override
Definition: FtpDataStore.h:37
FtpDataStore(FtpServerConnection &connection, const String &fileName)
Definition: FtpDataStore.h:27
FtpDataStream(FtpServerConnection &control)
Definition: FtpDataStream.h:51
int fileClose(FileHandle file)
Clode file.
Definition: Core/FileSystem.h:130
bool completed
Definition: FtpDataStream.h:92
FileHandle fileOpen(const T &path, FileOpenFlags flags=File::ReadOnly)
Open file by path.
Definition: Core/FileSystem.h:120
IFS::FileHandle FileHandle
Definition: Core/FileSystem.h:24
Definition: FtpDataStore.h:16
~FtpDataStore()
Definition: FtpDataStore.h:32
static constexpr OpenFlags CreateNewAlways
Create new file or overwrite file if it exists.
Definition: File.h:78