@@ -225,22 +225,22 @@ using MultipartFormDataItems = std::vector<MultipartFormData>;
225225using ContentReceiver =
226226 std::function<bool (const char *data, size_t data_length)>;
227227
228- using MultipartContentReceiver =
229- std::function<bool (const std::string& name, const char *data, size_t data_length)>;
230-
231228using MultipartContentHeader =
232229 std::function<bool (const std::string &name, const MultipartFile &file)>;
233230
231+ using MultipartContentReceiver =
232+ std::function<bool (const std::string& name, const char *data, size_t data_length)>;
233+
234234class ContentReader {
235235 public:
236236 using Reader = std::function<bool (ContentReceiver receiver)>;
237- using MultipartReader = std::function<bool (MultipartContentReceiver receiver, MultipartContentHeader header )>;
237+ using MultipartReader = std::function<bool (MultipartContentHeader header, MultipartContentReceiver receiver )>;
238238
239239 ContentReader (Reader reader, MultipartReader muitlpart_reader)
240240 : reader_(reader), muitlpart_reader_(muitlpart_reader) {}
241241
242- bool operator ()(MultipartContentReceiver receiver, MultipartContentHeader header ) const {
243- return muitlpart_reader_ (receiver, header );
242+ bool operator ()(MultipartContentHeader header, MultipartContentReceiver receiver ) const {
243+ return muitlpart_reader_ (header, receiver );
244244 }
245245
246246 bool operator ()(ContentReceiver receiver) const {
@@ -591,13 +591,13 @@ class Server {
591591 bool read_content_with_content_receiver (Stream &strm, bool last_connection,
592592 Request &req, Response &res,
593593 ContentReceiver receiver,
594- MultipartContentReceiver multipart_receiver ,
595- MultipartContentHeader multipart_header );
594+ MultipartContentHeader multipart_header ,
595+ MultipartContentReceiver multipart_receiver );
596596 bool read_content_core (Stream &strm, bool last_connection,
597597 Request &req, Response &res,
598598 ContentReceiver receiver,
599- MultipartContentReceiver multipart_receiver ,
600- MultipartContentHeader mulitpart_header );
599+ MultipartContentHeader mulitpart_header ,
600+ MultipartContentReceiver multipart_receiver );
601601
602602 virtual bool process_and_close_socket (socket_t sock);
603603
@@ -2796,22 +2796,24 @@ Server::write_content_with_provider(Stream &strm, const Request &req,
27962796inline bool Server::read_content (Stream &strm, bool last_connection,
27972797 Request &req, Response &res) {
27982798 auto ret = read_content_core (strm, last_connection, req, res,
2799+ // Regular
27992800 [&](const char *buf, size_t n) {
28002801 if (req.body .size () + n > req.body .max_size ()) { return false ; }
28012802 req.body .append (buf, n);
28022803 return true ;
28032804 },
2805+ // Multipart
2806+ [&](const std::string &name, const MultipartFile &file) {
2807+ req.files .emplace (name, file);
2808+ return true ;
2809+ },
28042810 [&](const std::string &name, const char *buf, size_t n) {
28052811 // TODO: handle elements with a same key
28062812 auto it = req.files .find (name);
28072813 auto &content = it->second .content ;
28082814 if (content.size () + n > content.max_size ()) { return false ; }
28092815 content.append (buf, n);
28102816 return true ;
2811- },
2812- [&](const std::string &name, const MultipartFile &file) {
2813- req.files .emplace (name, file);
2814- return true ;
28152817 }
28162818 );
28172819
@@ -2827,18 +2829,18 @@ inline bool
28272829Server::read_content_with_content_receiver (Stream &strm, bool last_connection,
28282830 Request &req, Response &res,
28292831 ContentReceiver receiver,
2830- MultipartContentReceiver multipart_receiver ,
2831- MultipartContentHeader multipart_header ) {
2832+ MultipartContentHeader multipart_header ,
2833+ MultipartContentReceiver multipart_receiver ) {
28322834 return read_content_core (strm, last_connection, req, res,
2833- receiver, multipart_receiver, multipart_header );
2835+ receiver, multipart_header, multipart_receiver );
28342836}
28352837
28362838inline bool
28372839Server::read_content_core (Stream &strm, bool last_connection,
28382840 Request &req, Response &res,
28392841 ContentReceiver receiver,
2840- MultipartContentReceiver multipart_receiver ,
2841- MultipartContentHeader mulitpart_header ) {
2842+ MultipartContentHeader mulitpart_header ,
2843+ MultipartContentReceiver multipart_receiver ) {
28422844 detail::MultipartFormDataParser multipart_form_data_parser;
28432845 ContentReceiver out;
28442846
@@ -3001,9 +3003,9 @@ inline bool Server::routing(Request &req, Response &res, Stream &strm,
30013003 return read_content_with_content_receiver (strm, last_connection, req, res,
30023004 receiver, nullptr , nullptr );
30033005 },
3004- [&](MultipartContentReceiver receiver, MultipartContentHeader header ) {
3006+ [&](MultipartContentHeader header, MultipartContentReceiver receiver ) {
30053007 return read_content_with_content_receiver (strm, last_connection, req, res,
3006- nullptr , receiver, header );
3008+ nullptr , header, receiver );
30073009 }
30083010 );
30093011
0 commit comments