正在显示
2 个修改的文件
包含
105 行增加
和
94 行删除
| @@ -63,87 +63,6 @@ bool is_common_space(char ch) | @@ -63,87 +63,6 @@ bool is_common_space(char ch) | ||
| 63 | return (ch == ' ' || ch == '\t' || ch == CR || ch == LF); | 63 | return (ch == ' ' || ch == '\t' || ch == CR || ch == LF); |
| 64 | } | 64 | } |
| 65 | 65 | ||
| 66 | -class SrsFileBuffer | ||
| 67 | -{ | ||
| 68 | -private: | ||
| 69 | - // last available position. | ||
| 70 | - char* last; | ||
| 71 | - // end of buffer. | ||
| 72 | - char* end; | ||
| 73 | - // start of buffer. | ||
| 74 | - char* start; | ||
| 75 | -public: | ||
| 76 | - // current consumed position. | ||
| 77 | - char* pos; | ||
| 78 | - // current parsed line. | ||
| 79 | - int line; | ||
| 80 | - | ||
| 81 | - SrsFileBuffer(); | ||
| 82 | - virtual ~SrsFileBuffer(); | ||
| 83 | - virtual int fullfill(const char* filename); | ||
| 84 | - virtual bool empty(); | ||
| 85 | -}; | ||
| 86 | - | ||
| 87 | -SrsFileBuffer::SrsFileBuffer() | ||
| 88 | -{ | ||
| 89 | - line = 0; | ||
| 90 | - | ||
| 91 | - pos = last = start = NULL; | ||
| 92 | - end = start; | ||
| 93 | -} | ||
| 94 | - | ||
| 95 | -SrsFileBuffer::~SrsFileBuffer() | ||
| 96 | -{ | ||
| 97 | - srs_freep(start); | ||
| 98 | -} | ||
| 99 | - | ||
| 100 | -int SrsFileBuffer::fullfill(const char* filename) | ||
| 101 | -{ | ||
| 102 | - int ret = ERROR_SUCCESS; | ||
| 103 | - | ||
| 104 | - int fd = -1; | ||
| 105 | - int nread = 0; | ||
| 106 | - int filesize = 0; | ||
| 107 | - | ||
| 108 | - // TODO: FIXME: refine the file stream. | ||
| 109 | - if ((fd = ::open(filename, O_RDONLY, 0)) < 0) { | ||
| 110 | - ret = ERROR_SYSTEM_CONFIG_INVALID; | ||
| 111 | - srs_error("open conf file error. ret=%d", ret); | ||
| 112 | - goto finish; | ||
| 113 | - } | ||
| 114 | - | ||
| 115 | - if ((filesize = FILE_SIZE(fd) - FILE_OFFSET(fd)) <= 0) { | ||
| 116 | - ret = ERROR_SYSTEM_CONFIG_EOF; | ||
| 117 | - srs_error("read conf file error. ret=%d", ret); | ||
| 118 | - goto finish; | ||
| 119 | - } | ||
| 120 | - | ||
| 121 | - srs_freep(start); | ||
| 122 | - pos = last = start = new char[filesize]; | ||
| 123 | - end = start + filesize; | ||
| 124 | - | ||
| 125 | - if ((nread = read(fd, start, filesize)) != filesize) { | ||
| 126 | - ret = ERROR_SYSTEM_CONFIG_INVALID; | ||
| 127 | - srs_error("read file read error. expect %d, actual %d bytes, ret=%d", | ||
| 128 | - filesize, nread, ret); | ||
| 129 | - goto finish; | ||
| 130 | - } | ||
| 131 | - | ||
| 132 | - line = 1; | ||
| 133 | - | ||
| 134 | -finish: | ||
| 135 | - if (fd > 0) { | ||
| 136 | - ::close(fd); | ||
| 137 | - } | ||
| 138 | - | ||
| 139 | - return ret; | ||
| 140 | -} | ||
| 141 | - | ||
| 142 | -bool SrsFileBuffer::empty() | ||
| 143 | -{ | ||
| 144 | - return pos >= end; | ||
| 145 | -} | ||
| 146 | - | ||
| 147 | SrsConfDirective::SrsConfDirective() | 66 | SrsConfDirective::SrsConfDirective() |
| 148 | { | 67 | { |
| 149 | } | 68 | } |
| @@ -228,7 +147,7 @@ int SrsConfDirective::parse(const char* filename) | @@ -228,7 +147,7 @@ int SrsConfDirective::parse(const char* filename) | ||
| 228 | { | 147 | { |
| 229 | int ret = ERROR_SUCCESS; | 148 | int ret = ERROR_SUCCESS; |
| 230 | 149 | ||
| 231 | - SrsFileBuffer buffer; | 150 | + _srs_internal::SrsFileBuffer buffer; |
| 232 | 151 | ||
| 233 | if ((ret = buffer.fullfill(filename)) != ERROR_SUCCESS) { | 152 | if ((ret = buffer.fullfill(filename)) != ERROR_SUCCESS) { |
| 234 | return ret; | 153 | return ret; |
| @@ -238,7 +157,7 @@ int SrsConfDirective::parse(const char* filename) | @@ -238,7 +157,7 @@ int SrsConfDirective::parse(const char* filename) | ||
| 238 | } | 157 | } |
| 239 | 158 | ||
| 240 | // see: ngx_conf_parse | 159 | // see: ngx_conf_parse |
| 241 | -int SrsConfDirective::parse_conf(SrsFileBuffer* buffer, SrsDirectiveType type) | 160 | +int SrsConfDirective::parse_conf(_srs_internal::SrsFileBuffer* buffer, SrsDirectiveType type) |
| 242 | { | 161 | { |
| 243 | int ret = ERROR_SUCCESS; | 162 | int ret = ERROR_SUCCESS; |
| 244 | 163 | ||
| @@ -298,7 +217,7 @@ int SrsConfDirective::parse_conf(SrsFileBuffer* buffer, SrsDirectiveType type) | @@ -298,7 +217,7 @@ int SrsConfDirective::parse_conf(SrsFileBuffer* buffer, SrsDirectiveType type) | ||
| 298 | } | 217 | } |
| 299 | 218 | ||
| 300 | // see: ngx_conf_read_token | 219 | // see: ngx_conf_read_token |
| 301 | -int SrsConfDirective::read_token(SrsFileBuffer* buffer, vector<string>& args) | 220 | +int SrsConfDirective::read_token(_srs_internal::SrsFileBuffer* buffer, vector<string>& args) |
| 302 | { | 221 | { |
| 303 | int ret = ERROR_SUCCESS; | 222 | int ret = ERROR_SUCCESS; |
| 304 | 223 | ||
| @@ -2866,6 +2785,69 @@ bool SrsConfig::get_heartbeat_summaries() | @@ -2866,6 +2785,69 @@ bool SrsConfig::get_heartbeat_summaries() | ||
| 2866 | return true; | 2785 | return true; |
| 2867 | } | 2786 | } |
| 2868 | 2787 | ||
| 2788 | +namespace _srs_internal | ||
| 2789 | +{ | ||
| 2790 | + SrsFileBuffer::SrsFileBuffer() | ||
| 2791 | + { | ||
| 2792 | + line = 0; | ||
| 2793 | + | ||
| 2794 | + pos = last = start = NULL; | ||
| 2795 | + end = start; | ||
| 2796 | + } | ||
| 2797 | + | ||
| 2798 | + SrsFileBuffer::~SrsFileBuffer() | ||
| 2799 | + { | ||
| 2800 | + srs_freep(start); | ||
| 2801 | + } | ||
| 2802 | + | ||
| 2803 | + int SrsFileBuffer::fullfill(const char* filename) | ||
| 2804 | + { | ||
| 2805 | + int ret = ERROR_SUCCESS; | ||
| 2806 | + | ||
| 2807 | + int fd = -1; | ||
| 2808 | + int nread = 0; | ||
| 2809 | + int filesize = 0; | ||
| 2810 | + | ||
| 2811 | + // TODO: FIXME: refine the file stream. | ||
| 2812 | + if ((fd = ::open(filename, O_RDONLY, 0)) < 0) { | ||
| 2813 | + ret = ERROR_SYSTEM_CONFIG_INVALID; | ||
| 2814 | + srs_error("open conf file error. ret=%d", ret); | ||
| 2815 | + goto finish; | ||
| 2816 | + } | ||
| 2817 | + | ||
| 2818 | + if ((filesize = FILE_SIZE(fd) - FILE_OFFSET(fd)) <= 0) { | ||
| 2819 | + ret = ERROR_SYSTEM_CONFIG_EOF; | ||
| 2820 | + srs_error("read conf file error. ret=%d", ret); | ||
| 2821 | + goto finish; | ||
| 2822 | + } | ||
| 2823 | + | ||
| 2824 | + srs_freep(start); | ||
| 2825 | + pos = last = start = new char[filesize]; | ||
| 2826 | + end = start + filesize; | ||
| 2827 | + | ||
| 2828 | + if ((nread = read(fd, start, filesize)) != filesize) { | ||
| 2829 | + ret = ERROR_SYSTEM_CONFIG_INVALID; | ||
| 2830 | + srs_error("read file read error. expect %d, actual %d bytes, ret=%d", | ||
| 2831 | + filesize, nread, ret); | ||
| 2832 | + goto finish; | ||
| 2833 | + } | ||
| 2834 | + | ||
| 2835 | + line = 1; | ||
| 2836 | + | ||
| 2837 | + finish: | ||
| 2838 | + if (fd > 0) { | ||
| 2839 | + ::close(fd); | ||
| 2840 | + } | ||
| 2841 | + | ||
| 2842 | + return ret; | ||
| 2843 | + } | ||
| 2844 | + | ||
| 2845 | + bool SrsFileBuffer::empty() | ||
| 2846 | + { | ||
| 2847 | + return pos >= end; | ||
| 2848 | + } | ||
| 2849 | +}; | ||
| 2850 | + | ||
| 2869 | bool srs_directive_equals(SrsConfDirective* a, SrsConfDirective* b) | 2851 | bool srs_directive_equals(SrsConfDirective* a, SrsConfDirective* b) |
| 2870 | { | 2852 | { |
| 2871 | // both NULL, equal. | 2853 | // both NULL, equal. |
| @@ -82,7 +82,10 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | @@ -82,7 +82,10 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||
| 82 | #define SRS_AUTO_INGEST_TYPE_FILE "file" | 82 | #define SRS_AUTO_INGEST_TYPE_FILE "file" |
| 83 | #define SRS_AUTO_INGEST_TYPE_STREAM "stream" | 83 | #define SRS_AUTO_INGEST_TYPE_STREAM "stream" |
| 84 | 84 | ||
| 85 | -class SrsFileBuffer; | 85 | +namespace _srs_internal |
| 86 | +{ | ||
| 87 | + class SrsFileBuffer; | ||
| 88 | +}; | ||
| 86 | 89 | ||
| 87 | class SrsConfDirective | 90 | class SrsConfDirective |
| 88 | { | 91 | { |
| @@ -94,19 +97,20 @@ public: | @@ -94,19 +97,20 @@ public: | ||
| 94 | public: | 97 | public: |
| 95 | SrsConfDirective(); | 98 | SrsConfDirective(); |
| 96 | virtual ~SrsConfDirective(); | 99 | virtual ~SrsConfDirective(); |
| 97 | - std::string arg0(); | ||
| 98 | - std::string arg1(); | ||
| 99 | - std::string arg2(); | ||
| 100 | - void set_arg0(std::string value); | ||
| 101 | - SrsConfDirective* at(int index); | ||
| 102 | - SrsConfDirective* get(std::string _name); | ||
| 103 | - SrsConfDirective* get(std::string _name, std::string _arg0); | 100 | +public: |
| 101 | + virtual std::string arg0(); | ||
| 102 | + virtual std::string arg1(); | ||
| 103 | + virtual std::string arg2(); | ||
| 104 | + virtual void set_arg0(std::string value); | ||
| 105 | + virtual SrsConfDirective* at(int index); | ||
| 106 | + virtual SrsConfDirective* get(std::string _name); | ||
| 107 | + virtual SrsConfDirective* get(std::string _name, std::string _arg0); | ||
| 104 | public: | 108 | public: |
| 105 | virtual int parse(const char* filename); | 109 | virtual int parse(const char* filename); |
| 106 | public: | 110 | public: |
| 107 | enum SrsDirectiveType{parse_file, parse_block}; | 111 | enum SrsDirectiveType{parse_file, parse_block}; |
| 108 | - virtual int parse_conf(SrsFileBuffer* buffer, SrsDirectiveType type); | ||
| 109 | - virtual int read_token(SrsFileBuffer* buffer, std::vector<std::string>& args); | 112 | + virtual int parse_conf(_srs_internal::SrsFileBuffer* buffer, SrsDirectiveType type); |
| 113 | + virtual int read_token(_srs_internal::SrsFileBuffer* buffer, std::vector<std::string>& args); | ||
| 110 | public: | 114 | public: |
| 111 | virtual bool is_vhost(); | 115 | virtual bool is_vhost(); |
| 112 | }; | 116 | }; |
| @@ -290,6 +294,31 @@ public: | @@ -290,6 +294,31 @@ public: | ||
| 290 | virtual bool get_heartbeat_summaries(); | 294 | virtual bool get_heartbeat_summaries(); |
| 291 | }; | 295 | }; |
| 292 | 296 | ||
| 297 | +namespace _srs_internal | ||
| 298 | +{ | ||
| 299 | + // TODO: FIXME: use SrsFileReader. | ||
| 300 | + class SrsFileBuffer | ||
| 301 | + { | ||
| 302 | + private: | ||
| 303 | + // last available position. | ||
| 304 | + char* last; | ||
| 305 | + // end of buffer. | ||
| 306 | + char* end; | ||
| 307 | + // start of buffer. | ||
| 308 | + char* start; | ||
| 309 | + public: | ||
| 310 | + // current consumed position. | ||
| 311 | + char* pos; | ||
| 312 | + // current parsed line. | ||
| 313 | + int line; | ||
| 314 | + | ||
| 315 | + SrsFileBuffer(); | ||
| 316 | + virtual ~SrsFileBuffer(); | ||
| 317 | + virtual int fullfill(const char* filename); | ||
| 318 | + virtual bool empty(); | ||
| 319 | + }; | ||
| 320 | +}; | ||
| 321 | + | ||
| 293 | /** | 322 | /** |
| 294 | * deep compare directive. | 323 | * deep compare directive. |
| 295 | */ | 324 | */ |
-
请 注册 或 登录 后发表评论