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 : http_data() = default;
16 :
17 30 : explicit http_data(std::shared_ptr<data::out_data> data) : data_(std::move(data))
18 30 : {}
19 :
20 39 : ~http_data() override = default;
21 :
22 : public:
23 :
24 24 : void to_buffer(std::vector<boost::asio::const_buffer> &buffer) const override{
25 24 : if(data_){
26 21 : data_->to_buffer(buffer);
27 : }
28 24 : }
29 :
30 9 : void set_data(std::shared_ptr<data::out_data> data){
31 9 : data_ = std::move(data);
32 9 : }
33 :
34 15 : std::shared_ptr<data::out_data> get_data(){
35 15 : return data_;
36 : }
37 :
38 24 : size_t get_size() override{
39 24 : if(data_){
40 18 : return data_->get_size();
41 : }
42 6 : return 0;
43 : }
44 : };
45 :
46 : }
47 :
48 : #endif
|