Files
ESPAsyncWebServer/src/AsyncWebServerResponseImpl.h

76 lines
2.2 KiB
C
Raw Normal View History

2015-12-19 18:53:33 +02:00
/*
* AsyncWebImpl.h
*
* Created on: 19.12.2015 г.
* Author: ficeto
*/
#ifndef ASYNCWEBSERVERRESPONSEIMPL_H_
#define ASYNCWEBSERVERRESPONSEIMPL_H_
class AsyncBasicResponse: public AsyncWebServerResponse {
private:
String _content;
public:
AsyncBasicResponse(int code, String contentType=String(), String content=String());
void _respond(AsyncWebServerRequest *request);
size_t _ack(AsyncWebServerRequest *request, size_t len, uint32_t time);
};
2015-12-19 20:48:53 +02:00
class AsyncAbstractResponse: public AsyncWebServerResponse {
private:
String _head;
public:
void _respond(AsyncWebServerRequest *request);
size_t _ack(AsyncWebServerRequest *request, size_t len, uint32_t time);
virtual size_t _fillBuffer(uint8_t *buf, size_t maxLen){ return 0; }
virtual bool _sourceValid(){ return false; }
};
class AsyncFileResponse: public AsyncAbstractResponse {
2015-12-19 18:53:33 +02:00
private:
File _content;
String _path;
void _setContentType(String path);
public:
AsyncFileResponse(FS &fs, String path, String contentType=String(), bool download=false);
~AsyncFileResponse();
2015-12-19 20:48:53 +02:00
bool _sourceValid(){ return !!(_content); }
size_t _fillBuffer(uint8_t *buf, size_t maxLen);
2015-12-19 18:53:33 +02:00
};
2015-12-19 20:48:53 +02:00
class AsyncStreamResponse: public AsyncAbstractResponse {
2015-12-19 18:53:33 +02:00
private:
Stream *_content;
public:
AsyncStreamResponse(Stream &stream, String contentType, size_t len);
2015-12-19 20:48:53 +02:00
bool _sourceValid(){ return !!(_content); }
size_t _fillBuffer(uint8_t *buf, size_t maxLen);
2015-12-19 18:53:33 +02:00
};
2015-12-19 20:48:53 +02:00
class AsyncCallbackResponse: public AsyncAbstractResponse {
2015-12-19 18:53:33 +02:00
private:
AwsResponseFiller _content;
public:
AsyncCallbackResponse(String contentType, size_t len, AwsResponseFiller callback);
2015-12-19 20:48:53 +02:00
bool _sourceValid(){ return !!(_content); }
size_t _fillBuffer(uint8_t *buf, size_t maxLen);
2015-12-19 18:53:33 +02:00
};
2016-01-22 18:06:23 +02:00
class cbuf;
2016-01-19 21:47:26 +02:00
class AsyncResponseStream: public AsyncAbstractResponse, public Print {
private:
cbuf *_content;
public:
AsyncResponseStream(String contentType, size_t len, size_t bufferSize);
2016-01-19 21:47:26 +02:00
~AsyncResponseStream();
bool _sourceValid(){ return (_state < RESPONSE_END); }
size_t _fillBuffer(uint8_t *buf, size_t maxLen);
size_t write(const uint8_t *data, size_t len);
size_t write(uint8_t data);
using Print::write;
2016-01-19 21:47:26 +02:00
};
2015-12-19 18:53:33 +02:00
#endif /* ASYNCWEBSERVERRESPONSEIMPL_H_ */