}
RGWMongoose::RGWMongoose(mg_connection *_conn, int _port)
- : conn(_conn), port(_port), status_num(0), header_done(false),
+ : RGWStreamIOFacade(this),
+ conn(_conn), port(_port), status_num(0), header_done(false),
sent_header(false), has_content_length(false),
explicit_keepalive(false), explicit_conn_close(false)
{
struct mg_connection;
-class RGWMongoose : public RGWStreamIO
+class RGWMongoose : public RGWStreamIOEngine,
+ private RGWStreamIOFacade
{
+ RGWEnv env;
mg_connection *conn;
bufferlist header_data;
int complete_request();
int send_content_length(uint64_t len);
+ RGWEnv& get_env() override {
+ return env;
+ }
+
RGWMongoose(mg_connection *_conn, int _port);
- void flush();
+ RGWMongoose(const RGWMongoose& rhs)
+ : RGWStreamIOFacade(this),
+ env(rhs.env),
+ conn(rhs.conn),
+ header_data(rhs.header_data),
+ data(rhs.data),
+ header_done(rhs.header_done),
+ sent_header(rhs.sent_header),
+ has_content_length(rhs.has_content_length),
+ explicit_keepalive(rhs.explicit_keepalive),
+ explicit_conn_close(rhs.explicit_conn_close) {
+ }
};
#endif
// vim: ts=8 sw=2 smarttab
#include "rgw_frontend.h"
+#include "rgw_client_io_decoimpl.h"
#define dout_subsys ceph_subsys_rgw
OpsLogSocket* olog = pe->olog;
RGWRequest req(store->get_new_req_id());
- RGWMongoose client_io(conn, pe->port);
+ RGWMongoose real_client_io(conn, pe->port);
+ RGWStreamIOLegacyWrapper client_io(&real_client_io);
int ret = process_request(pe->store, rest, &req, &client_io, olog);
if (ret < 0) {