mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
update the config file format
This commit is contained in:
parent
bb775ef7bd
commit
ce021b25c7
2 changed files with 906 additions and 906 deletions
1544
trunk/src/core/srs_core_config.cpp
Executable file → Normal file
1544
trunk/src/core/srs_core_config.cpp
Executable file → Normal file
File diff suppressed because it is too large
Load diff
268
trunk/src/core/srs_core_config.hpp
Executable file → Normal file
268
trunk/src/core/srs_core_config.hpp
Executable file → Normal file
|
@ -1,135 +1,135 @@
|
||||||
/*
|
/*
|
||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
|
|
||||||
Copyright (c) 2013 winlin
|
Copyright (c) 2013 winlin
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
this software and associated documentation files (the "Software"), to deal in
|
this software and associated documentation files (the "Software"), to deal in
|
||||||
the Software without restriction, including without limitation the rights to
|
the Software without restriction, including without limitation the rights to
|
||||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||||
the Software, and to permit persons to whom the Software is furnished to do so,
|
the Software, and to permit persons to whom the Software is furnished to do so,
|
||||||
subject to the following conditions:
|
subject to the following conditions:
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
The above copyright notice and this permission notice shall be included in all
|
||||||
copies or substantial portions of the Software.
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef SRS_CORE_CONIFG_HPP
|
#ifndef SRS_CORE_CONIFG_HPP
|
||||||
#define SRS_CORE_CONIFG_HPP
|
#define SRS_CORE_CONIFG_HPP
|
||||||
|
|
||||||
/*
|
/*
|
||||||
#include <srs_core_config.hpp>
|
#include <srs_core_config.hpp>
|
||||||
*/
|
*/
|
||||||
#include <srs_core.hpp>
|
#include <srs_core.hpp>
|
||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
#include <srs_core_reload.hpp>
|
#include <srs_core_reload.hpp>
|
||||||
|
|
||||||
// default vhost for rtmp
|
// default vhost for rtmp
|
||||||
#define RTMP_VHOST_DEFAULT "__defaultVhost__"
|
#define RTMP_VHOST_DEFAULT "__defaultVhost__"
|
||||||
|
|
||||||
// conf node: enabled.
|
// conf node: enabled.
|
||||||
#define RTMP_VHOST_ENABLED "enabled"
|
#define RTMP_VHOST_ENABLED "enabled"
|
||||||
|
|
||||||
class SrsFileBuffer
|
class SrsFileBuffer
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
int fd;
|
int fd;
|
||||||
int line;
|
int line;
|
||||||
// start of buffer.
|
// start of buffer.
|
||||||
char* start;
|
char* start;
|
||||||
// end of buffer.
|
// end of buffer.
|
||||||
char* end;
|
char* end;
|
||||||
// current consumed position.
|
// current consumed position.
|
||||||
char* pos;
|
char* pos;
|
||||||
// last available position.
|
// last available position.
|
||||||
char* last;
|
char* last;
|
||||||
|
|
||||||
SrsFileBuffer();
|
SrsFileBuffer();
|
||||||
virtual ~SrsFileBuffer();
|
virtual ~SrsFileBuffer();
|
||||||
virtual int open(const char* filename);
|
virtual int open(const char* filename);
|
||||||
};
|
};
|
||||||
|
|
||||||
class SrsConfDirective
|
class SrsConfDirective
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
int conf_line;
|
int conf_line;
|
||||||
std::string name;
|
std::string name;
|
||||||
std::vector<std::string> args;
|
std::vector<std::string> args;
|
||||||
std::vector<SrsConfDirective*> directives;
|
std::vector<SrsConfDirective*> directives;
|
||||||
public:
|
public:
|
||||||
SrsConfDirective();
|
SrsConfDirective();
|
||||||
virtual ~SrsConfDirective();
|
virtual ~SrsConfDirective();
|
||||||
std::string arg0();
|
std::string arg0();
|
||||||
std::string arg1();
|
std::string arg1();
|
||||||
std::string arg2();
|
std::string arg2();
|
||||||
SrsConfDirective* at(int index);
|
SrsConfDirective* at(int index);
|
||||||
SrsConfDirective* get(std::string _name);
|
SrsConfDirective* get(std::string _name);
|
||||||
public:
|
public:
|
||||||
virtual int parse(const char* filename);
|
virtual int parse(const char* filename);
|
||||||
public:
|
public:
|
||||||
enum SrsDirectiveType{parse_file, parse_block};
|
enum SrsDirectiveType{parse_file, parse_block};
|
||||||
virtual int parse_conf(SrsFileBuffer* buffer, SrsDirectiveType type);
|
virtual int parse_conf(SrsFileBuffer* buffer, SrsDirectiveType type);
|
||||||
virtual int read_token(SrsFileBuffer* buffer, std::vector<std::string>& args);
|
virtual int read_token(SrsFileBuffer* buffer, std::vector<std::string>& args);
|
||||||
virtual int refill_buffer(SrsFileBuffer* buffer, bool d_quoted, bool s_quoted, int startline, char*& pstart);
|
virtual int refill_buffer(SrsFileBuffer* buffer, bool d_quoted, bool s_quoted, int startline, char*& pstart);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* the config parser.
|
* the config parser.
|
||||||
* for the config supports reload, so never keep the reference cross st-thread,
|
* for the config supports reload, so never keep the reference cross st-thread,
|
||||||
* that is, never save the SrsConfDirective* get by any api of config,
|
* that is, never save the SrsConfDirective* get by any api of config,
|
||||||
* for it maybe free in the reload st-thread cycle.
|
* for it maybe free in the reload st-thread cycle.
|
||||||
* you can keep it before st-thread switch, or simply never keep it.
|
* you can keep it before st-thread switch, or simply never keep it.
|
||||||
*/
|
*/
|
||||||
class SrsConfig
|
class SrsConfig
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
bool show_help;
|
bool show_help;
|
||||||
bool show_version;
|
bool show_version;
|
||||||
std::string config_file;
|
std::string config_file;
|
||||||
SrsConfDirective* root;
|
SrsConfDirective* root;
|
||||||
std::vector<SrsReloadHandler*> subscribes;
|
std::vector<SrsReloadHandler*> subscribes;
|
||||||
public:
|
public:
|
||||||
SrsConfig();
|
SrsConfig();
|
||||||
virtual ~SrsConfig();
|
virtual ~SrsConfig();
|
||||||
public:
|
public:
|
||||||
virtual int reload();
|
virtual int reload();
|
||||||
virtual void subscribe(SrsReloadHandler* handler);
|
virtual void subscribe(SrsReloadHandler* handler);
|
||||||
virtual void unsubscribe(SrsReloadHandler* handler);
|
virtual void unsubscribe(SrsReloadHandler* handler);
|
||||||
public:
|
public:
|
||||||
virtual int parse_options(int argc, char** argv);
|
virtual int parse_options(int argc, char** argv);
|
||||||
virtual SrsConfDirective* get_vhost(std::string vhost);
|
virtual SrsConfDirective* get_vhost(std::string vhost);
|
||||||
virtual SrsConfDirective* get_gop_cache(std::string vhost);
|
virtual SrsConfDirective* get_gop_cache(std::string vhost);
|
||||||
virtual SrsConfDirective* get_hls(std::string vhost);
|
virtual SrsConfDirective* get_hls(std::string vhost);
|
||||||
virtual SrsConfDirective* get_hls_path(std::string vhost);
|
virtual SrsConfDirective* get_hls_path(std::string vhost);
|
||||||
virtual SrsConfDirective* get_refer(std::string vhost);
|
virtual SrsConfDirective* get_refer(std::string vhost);
|
||||||
virtual SrsConfDirective* get_refer_play(std::string vhost);
|
virtual SrsConfDirective* get_refer_play(std::string vhost);
|
||||||
virtual SrsConfDirective* get_refer_publish(std::string vhost);
|
virtual SrsConfDirective* get_refer_publish(std::string vhost);
|
||||||
virtual SrsConfDirective* get_listen();
|
virtual SrsConfDirective* get_listen();
|
||||||
virtual SrsConfDirective* get_chunk_size();
|
virtual SrsConfDirective* get_chunk_size();
|
||||||
virtual SrsConfDirective* get_pithy_print_publish();
|
virtual SrsConfDirective* get_pithy_print_publish();
|
||||||
virtual SrsConfDirective* get_pithy_print_play();
|
virtual SrsConfDirective* get_pithy_print_play();
|
||||||
private:
|
private:
|
||||||
virtual int parse_file(const char* filename);
|
virtual int parse_file(const char* filename);
|
||||||
virtual int parse_argv(int& i, char** argv);
|
virtual int parse_argv(int& i, char** argv);
|
||||||
virtual void print_help(char** argv);
|
virtual void print_help(char** argv);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* deep compare directive.
|
* deep compare directive.
|
||||||
*/
|
*/
|
||||||
bool srs_directive_equals(SrsConfDirective* a, SrsConfDirective* b);
|
bool srs_directive_equals(SrsConfDirective* a, SrsConfDirective* b);
|
||||||
|
|
||||||
// global config
|
// global config
|
||||||
extern SrsConfig* config;
|
extern SrsConfig* config;
|
||||||
|
|
||||||
#endif
|
#endif
|
Loading…
Add table
Add a link
Reference in a new issue