Line data Source code
1 : #ifndef HTTP_DATA_FRAME_HPP
2 : #define HTTP_DATA_FRAME_HPP
3 :
4 : #include <memory>
5 : #include "http_frame.hpp"
6 :
7 : namespace thinger::http{
8 :
9 : class http_data : public http_frame{
10 :
11 : private:
12 : std::shared_ptr<data::out_data> data_;
13 : public:
14 :
15 553 : http_data() = default;
16 :
17 15185 : explicit http_data(std::shared_ptr<data::out_data> data) : data_(std::move(data))
18 15185 : {}
19 :
20 15738 : ~http_data() override = default;
21 :
22 : public:
23 :
24 15864 : frame_kind kind() const override {
25 15864 : return frame_kind::data;
26 : }
27 :
28 15714 : void to_buffer(std::vector<boost::asio::const_buffer> &buffer) const override{
29 15714 : if(data_){
30 15173 : data_->to_buffer(buffer);
31 : }
32 15714 : }
33 :
34 9 : void set_data(std::shared_ptr<data::out_data> data){
35 9 : data_ = std::move(data);
36 9 : }
37 :
38 15 : std::shared_ptr<data::out_data> get_data(){
39 15 : return data_;
40 : }
41 :
42 24 : size_t get_size() override{
43 24 : if(data_){
44 18 : return data_->get_size();
45 : }
46 6 : return 0;
47 : }
48 : };
49 :
50 : }
51 :
52 : #endif
|