mirror of
				https://github.com/ossrs/srs.git
				synced 2025-03-09 15:49:59 +00:00 
			
		
		
		
	Refine typo in service.
This commit is contained in:
		
							parent
							
								
									fbe40dc42c
								
							
						
					
					
						commit
						224d7c539f
					
				
					 7 changed files with 129 additions and 231 deletions
				
			
		| 
						 | 
				
			
			@ -26,9 +26,7 @@
 | 
			
		|||
 | 
			
		||||
#include <srs_core.hpp>
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * The connection interface for all HTTP/RTMP/RTSP object.
 | 
			
		||||
 */
 | 
			
		||||
// The connection interface for all HTTP/RTMP/RTSP object.
 | 
			
		||||
class ISrsConnection
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
| 
						 | 
				
			
			@ -36,18 +34,14 @@ public:
 | 
			
		|||
    virtual ~ISrsConnection();
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * the manager for connection.
 | 
			
		||||
 */
 | 
			
		||||
// The manager for connection.
 | 
			
		||||
class IConnectionManager
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    IConnectionManager();
 | 
			
		||||
    virtual ~IConnectionManager();
 | 
			
		||||
public:
 | 
			
		||||
    /**
 | 
			
		||||
     * Remove then free the specified connection.
 | 
			
		||||
     */
 | 
			
		||||
    // Remove then free the specified connection.
 | 
			
		||||
    virtual void remove(ISrsConnection* c) = 0;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -40,18 +40,16 @@ class SrsKbps;
 | 
			
		|||
class SrsWallClock;
 | 
			
		||||
class SrsTcpClient;
 | 
			
		||||
 | 
			
		||||
// the default timeout for http client.
 | 
			
		||||
#define SRS_HTTP_CLIENT_TIMEOUT (30 * SRS_UTIME_SECONDS)
 | 
			
		||||
// The default timeout for http client.
 | 
			
		||||
#define SRS_HTTP_CLIENT_TIMEOUT (30// SRS_UTIME_SECONDS)
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * The client to GET/POST/PUT/DELETE over HTTP.
 | 
			
		||||
 * @remark We will reuse the TCP transport until initialize or channel error,
 | 
			
		||||
 *      such as send/recv failed.
 | 
			
		||||
 * Usage:
 | 
			
		||||
 *      SrsHttpClient hc;
 | 
			
		||||
 *      hc.initialize("127.0.0.1", 80, 9000);
 | 
			
		||||
 *      hc.post("/api/v1/version", "Hello world!", NULL);
 | 
			
		||||
 */
 | 
			
		||||
// The client to GET/POST/PUT/DELETE over HTTP.
 | 
			
		||||
// @remark We will reuse the TCP transport until initialize or channel error,
 | 
			
		||||
//      such as send/recv failed.
 | 
			
		||||
// Usage:
 | 
			
		||||
//      SrsHttpClient hc;
 | 
			
		||||
//      hc.initialize("127.0.0.1", 80, 9000);
 | 
			
		||||
//      hc.post("/api/v1/version", "Hello world!", NULL);
 | 
			
		||||
class SrsHttpClient
 | 
			
		||||
{
 | 
			
		||||
private:
 | 
			
		||||
| 
						 | 
				
			
			@ -72,33 +70,25 @@ public:
 | 
			
		|||
    SrsHttpClient();
 | 
			
		||||
    virtual ~SrsHttpClient();
 | 
			
		||||
public:
 | 
			
		||||
    /**
 | 
			
		||||
     * Initliaze the client, disconnect the transport, renew the HTTP parser.
 | 
			
		||||
     * @param tm The underlayer TCP transport timeout in srs_utime_t.
 | 
			
		||||
     * @remark we will set default values in headers, which can be override by set_header.
 | 
			
		||||
     */
 | 
			
		||||
    // Initliaze the client, disconnect the transport, renew the HTTP parser.
 | 
			
		||||
    // @param tm The underlayer TCP transport timeout in srs_utime_t.
 | 
			
		||||
    // @remark we will set default values in headers, which can be override by set_header.
 | 
			
		||||
    virtual srs_error_t initialize(std::string h, int p, srs_utime_t tm = SRS_HTTP_CLIENT_TIMEOUT);
 | 
			
		||||
    /**
 | 
			
		||||
     * Set HTTP request header in header[k]=v.
 | 
			
		||||
     * @return the HTTP client itself.
 | 
			
		||||
     */
 | 
			
		||||
    // Set HTTP request header in header[k]=v.
 | 
			
		||||
    // @return the HTTP client itself.
 | 
			
		||||
    virtual SrsHttpClient* set_header(std::string k, std::string v);
 | 
			
		||||
public:
 | 
			
		||||
    /**
 | 
			
		||||
     * to post data to the uri.
 | 
			
		||||
     * @param the path to request on.
 | 
			
		||||
     * @param req the data post to uri. empty string to ignore.
 | 
			
		||||
     * @param ppmsg output the http message to read the response.
 | 
			
		||||
     * @remark user must free the ppmsg if not NULL.
 | 
			
		||||
     */
 | 
			
		||||
    // Post data to the uri.
 | 
			
		||||
    // @param the path to request on.
 | 
			
		||||
    // @param req the data post to uri. empty string to ignore.
 | 
			
		||||
    // @param ppmsg output the http message to read the response.
 | 
			
		||||
    // @remark user must free the ppmsg if not NULL.
 | 
			
		||||
    virtual srs_error_t post(std::string path, std::string req, ISrsHttpMessage** ppmsg);
 | 
			
		||||
    /**
 | 
			
		||||
     * to get data from the uri.
 | 
			
		||||
     * @param the path to request on.
 | 
			
		||||
     * @param req the data post to uri. empty string to ignore.
 | 
			
		||||
     * @param ppmsg output the http message to read the response.
 | 
			
		||||
     * @remark user must free the ppmsg if not NULL.
 | 
			
		||||
     */
 | 
			
		||||
    // Get data from the uri.
 | 
			
		||||
    // @param the path to request on.
 | 
			
		||||
    // @param req the data post to uri. empty string to ignore.
 | 
			
		||||
    // @param ppmsg output the http message to read the response.
 | 
			
		||||
    // @remark user must free the ppmsg if not NULL.
 | 
			
		||||
    virtual srs_error_t get(std::string path, std::string req, ISrsHttpMessage** ppmsg);
 | 
			
		||||
private:
 | 
			
		||||
    virtual void set_recv_timeout(srs_utime_t tm);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -37,18 +37,16 @@ class ISrsReader;
 | 
			
		|||
class SrsHttpResponseReader;
 | 
			
		||||
class SrsStSocket;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * wrapper for http-parser,
 | 
			
		||||
 * provides HTTP message originted service.
 | 
			
		||||
 */
 | 
			
		||||
// A wrapper for http-parser,
 | 
			
		||||
// provides HTTP message originted service.
 | 
			
		||||
class SrsHttpParser
 | 
			
		||||
{
 | 
			
		||||
private:
 | 
			
		||||
    http_parser_settings settings;
 | 
			
		||||
    http_parser parser;
 | 
			
		||||
    // the global parse buffer.
 | 
			
		||||
    // The global parse buffer.
 | 
			
		||||
    SrsFastStream* buffer;
 | 
			
		||||
    // whether allow jsonp parse.
 | 
			
		||||
    // Whether allow jsonp parse.
 | 
			
		||||
    bool jsonp;
 | 
			
		||||
private:
 | 
			
		||||
    // http parse data, reset before parse message.
 | 
			
		||||
| 
						 | 
				
			
			@ -64,24 +62,18 @@ public:
 | 
			
		|||
    SrsHttpParser();
 | 
			
		||||
    virtual ~SrsHttpParser();
 | 
			
		||||
public:
 | 
			
		||||
    /**
 | 
			
		||||
     * initialize the http parser with specified type,
 | 
			
		||||
     * one parser can only parse request or response messages.
 | 
			
		||||
     * @param allow_jsonp whether allow jsonp parser, which indicates the method in query string.
 | 
			
		||||
     */
 | 
			
		||||
    // initialize the http parser with specified type,
 | 
			
		||||
    // one parser can only parse request or response messages.
 | 
			
		||||
    // @param allow_jsonp whether allow jsonp parser, which indicates the method in query string.
 | 
			
		||||
    virtual srs_error_t initialize(enum http_parser_type type, bool allow_jsonp = false);
 | 
			
		||||
    /**
 | 
			
		||||
     * always parse a http message,
 | 
			
		||||
     * that is, the *ppmsg always NOT-NULL when return success.
 | 
			
		||||
     * or error and *ppmsg must be NULL.
 | 
			
		||||
     * @remark, if success, *ppmsg always NOT-NULL, *ppmsg always is_complete().
 | 
			
		||||
     * @remark user must free the ppmsg if not NULL.
 | 
			
		||||
     */
 | 
			
		||||
    // always parse a http message,
 | 
			
		||||
    // that is, the *ppmsg always NOT-NULL when return success.
 | 
			
		||||
    // or error and *ppmsg must be NULL.
 | 
			
		||||
    // @remark, if success, *ppmsg always NOT-NULL, *ppmsg always is_complete().
 | 
			
		||||
    // @remark user must free the ppmsg if not NULL.
 | 
			
		||||
    virtual srs_error_t parse_message(ISrsReader* reader, ISrsHttpMessage** ppmsg);
 | 
			
		||||
private:
 | 
			
		||||
    /**
 | 
			
		||||
     * parse the HTTP message to member field: msg.
 | 
			
		||||
     */
 | 
			
		||||
    // parse the HTTP message to member field: msg.
 | 
			
		||||
    virtual srs_error_t parse_message_imp(ISrsReader* reader);
 | 
			
		||||
private:
 | 
			
		||||
    static int on_message_begin(http_parser* parser);
 | 
			
		||||
| 
						 | 
				
			
			@ -105,62 +97,41 @@ typedef std::pair<std::string, std::string> SrsHttpHeaderField;
 | 
			
		|||
class SrsHttpMessage : public ISrsHttpMessage
 | 
			
		||||
{
 | 
			
		||||
private:
 | 
			
		||||
    /**
 | 
			
		||||
     * parsed url.
 | 
			
		||||
     */
 | 
			
		||||
    // The parsed url.
 | 
			
		||||
    std::string _url;
 | 
			
		||||
    /**
 | 
			
		||||
     * the extension of file, for example, .flv
 | 
			
		||||
     */
 | 
			
		||||
    // The extension of file, for example, .flv
 | 
			
		||||
    std::string _ext;
 | 
			
		||||
    /**
 | 
			
		||||
     * parsed http header.
 | 
			
		||||
     */
 | 
			
		||||
    // parsed http header.
 | 
			
		||||
    http_parser _header;
 | 
			
		||||
    /**
 | 
			
		||||
     * body object, reader object.
 | 
			
		||||
     * @remark, user can get body in string by get_body().
 | 
			
		||||
     */
 | 
			
		||||
    // The body object, reader object.
 | 
			
		||||
    // @remark, user can get body in string by get_body().
 | 
			
		||||
    SrsHttpResponseReader* _body;
 | 
			
		||||
    /**
 | 
			
		||||
     * whether the body is chunked.
 | 
			
		||||
     */
 | 
			
		||||
    // Whether the body is chunked.
 | 
			
		||||
    bool chunked;
 | 
			
		||||
    /**
 | 
			
		||||
     * whether the body is infinite chunked.
 | 
			
		||||
     */
 | 
			
		||||
    // Whether the body is infinite chunked.
 | 
			
		||||
    bool infinite_chunked;
 | 
			
		||||
    /**
 | 
			
		||||
     * whether the request indicates should keep alive
 | 
			
		||||
     * for the http connection.
 | 
			
		||||
     */
 | 
			
		||||
    // Whether the request indicates should keep alive for the http connection.
 | 
			
		||||
    bool keep_alive;
 | 
			
		||||
    /**
 | 
			
		||||
     * uri parser
 | 
			
		||||
     */
 | 
			
		||||
    // The uri parser
 | 
			
		||||
    SrsHttpUri* _uri;
 | 
			
		||||
    /**
 | 
			
		||||
     * use a buffer to read and send ts file.
 | 
			
		||||
     */
 | 
			
		||||
    // Use a buffer to read and send ts file.
 | 
			
		||||
    // TODO: FIXME: remove it.
 | 
			
		||||
    char* _http_ts_send_buffer;
 | 
			
		||||
    // http headers
 | 
			
		||||
    // The http headers
 | 
			
		||||
    std::vector<SrsHttpHeaderField> _headers;
 | 
			
		||||
    // the query map
 | 
			
		||||
    // The query map
 | 
			
		||||
    std::map<std::string, std::string> _query;
 | 
			
		||||
    // the transport connection, can be NULL.
 | 
			
		||||
    // The transport connection, can be NULL.
 | 
			
		||||
    SrsConnection* owner_conn;
 | 
			
		||||
    // whether request is jsonp.
 | 
			
		||||
    // Whether request is jsonp.
 | 
			
		||||
    bool jsonp;
 | 
			
		||||
    // the method in QueryString will override the HTTP method.
 | 
			
		||||
    // The method in QueryString will override the HTTP method.
 | 
			
		||||
    std::string jsonp_method;
 | 
			
		||||
public:
 | 
			
		||||
    SrsHttpMessage(ISrsReader* io);
 | 
			
		||||
    virtual ~SrsHttpMessage();
 | 
			
		||||
public:
 | 
			
		||||
    /**
 | 
			
		||||
     * set the original messages, then update the message.
 | 
			
		||||
     */
 | 
			
		||||
    // set the original messages, then update the message.
 | 
			
		||||
    virtual srs_error_t update(std::string url, bool allow_jsonp, http_parser* header, SrsFastStream* body, std::vector<SrsHttpHeaderField>& headers);
 | 
			
		||||
public:
 | 
			
		||||
    // Get the owner connection, maybe NULL.
 | 
			
		||||
| 
						 | 
				
			
			@ -169,91 +140,62 @@ public:
 | 
			
		|||
public:
 | 
			
		||||
    virtual uint8_t method();
 | 
			
		||||
    virtual uint16_t status_code();
 | 
			
		||||
    /**
 | 
			
		||||
     * method helpers.
 | 
			
		||||
     */
 | 
			
		||||
    // The method helpers.
 | 
			
		||||
    virtual std::string method_str();
 | 
			
		||||
    virtual bool is_http_get();
 | 
			
		||||
    virtual bool is_http_put();
 | 
			
		||||
    virtual bool is_http_post();
 | 
			
		||||
    virtual bool is_http_delete();
 | 
			
		||||
    virtual bool is_http_options();
 | 
			
		||||
    /**
 | 
			
		||||
     * whether body is chunked encoding, for reader only.
 | 
			
		||||
     */
 | 
			
		||||
    // Whether body is chunked encoding, for reader only.
 | 
			
		||||
    virtual bool is_chunked();
 | 
			
		||||
    /**
 | 
			
		||||
     * whether body is infinite chunked encoding.
 | 
			
		||||
     * @remark set by enter_infinite_chunked.
 | 
			
		||||
     */
 | 
			
		||||
    // Whether body is infinite chunked encoding.
 | 
			
		||||
    // @remark set by enter_infinite_chunked.
 | 
			
		||||
    virtual bool is_infinite_chunked();
 | 
			
		||||
    /**
 | 
			
		||||
     * whether should keep the connection alive.
 | 
			
		||||
     */
 | 
			
		||||
    // Whether should keep the connection alive.
 | 
			
		||||
    virtual bool is_keep_alive();
 | 
			
		||||
    /**
 | 
			
		||||
     * the uri contains the host and path.
 | 
			
		||||
     */
 | 
			
		||||
    // The uri contains the host and path.
 | 
			
		||||
    virtual std::string uri();
 | 
			
		||||
    /**
 | 
			
		||||
     * the url maybe the path.
 | 
			
		||||
     */
 | 
			
		||||
    // The url maybe the path.
 | 
			
		||||
    virtual std::string url();
 | 
			
		||||
    virtual std::string host();
 | 
			
		||||
    virtual std::string path();
 | 
			
		||||
    virtual std::string query();
 | 
			
		||||
    virtual std::string ext();
 | 
			
		||||
    /**
 | 
			
		||||
     * get the RESTful matched id.
 | 
			
		||||
     */
 | 
			
		||||
    // Get the RESTful matched id.
 | 
			
		||||
    virtual int parse_rest_id(std::string pattern);
 | 
			
		||||
public:
 | 
			
		||||
    virtual srs_error_t enter_infinite_chunked();
 | 
			
		||||
public:
 | 
			
		||||
    /**
 | 
			
		||||
     * read body to string.
 | 
			
		||||
     * @remark for small http body.
 | 
			
		||||
     */
 | 
			
		||||
    // Read body to string.
 | 
			
		||||
    // @remark for small http body.
 | 
			
		||||
    virtual srs_error_t body_read_all(std::string& body);
 | 
			
		||||
    /**
 | 
			
		||||
     * get the body reader, to read one by one.
 | 
			
		||||
     * @remark when body is very large, or chunked, use this.
 | 
			
		||||
     */
 | 
			
		||||
    // Get the body reader, to read one by one.
 | 
			
		||||
    // @remark when body is very large, or chunked, use this.
 | 
			
		||||
    virtual ISrsHttpResponseReader* body_reader();
 | 
			
		||||
    /**
 | 
			
		||||
     * the content length, -1 for chunked or not set.
 | 
			
		||||
     */
 | 
			
		||||
    // The content length, -1 for chunked or not set.
 | 
			
		||||
    virtual int64_t content_length();
 | 
			
		||||
    /**
 | 
			
		||||
     * get the param in query string,
 | 
			
		||||
     * for instance, query is "start=100&end=200",
 | 
			
		||||
     * then query_get("start") is "100", and query_get("end") is "200"
 | 
			
		||||
     */
 | 
			
		||||
    // Get the param in query string, for instance, query is "start=100&end=200",
 | 
			
		||||
    // then query_get("start") is "100", and query_get("end") is "200"
 | 
			
		||||
    virtual std::string query_get(std::string key);
 | 
			
		||||
    /**
 | 
			
		||||
     * get the headers.
 | 
			
		||||
     */
 | 
			
		||||
    // Get the headers.
 | 
			
		||||
    virtual int request_header_count();
 | 
			
		||||
    virtual std::string request_header_key_at(int index);
 | 
			
		||||
    virtual std::string request_header_value_at(int index);
 | 
			
		||||
    virtual std::string get_request_header(std::string name);
 | 
			
		||||
public:
 | 
			
		||||
    /**
 | 
			
		||||
     * convert the http message to a request.
 | 
			
		||||
     * @remark user must free the return request.
 | 
			
		||||
     */
 | 
			
		||||
    // Convert the http message to a request.
 | 
			
		||||
    // @remark user must free the return request.
 | 
			
		||||
    virtual SrsRequest* to_request(std::string vhost);
 | 
			
		||||
public:
 | 
			
		||||
    virtual bool is_jsonp();
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// the http chunked header size,
 | 
			
		||||
// The http chunked header size,
 | 
			
		||||
// for writev, there always one chunk to send it.
 | 
			
		||||
#define SRS_HTTP_HEADER_CACHE_SIZE 64
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * response writer use st socket
 | 
			
		||||
 */
 | 
			
		||||
// Response writer use st socket
 | 
			
		||||
class SrsHttpResponseWriter : public ISrsHttpResponseWriter
 | 
			
		||||
{
 | 
			
		||||
private:
 | 
			
		||||
| 
						 | 
				
			
			@ -264,17 +206,17 @@ private:
 | 
			
		|||
    iovec* iovss_cache;
 | 
			
		||||
    int nb_iovss_cache;
 | 
			
		||||
private:
 | 
			
		||||
    // reply header has been (logically) written
 | 
			
		||||
    // Reply header has been (logically) written
 | 
			
		||||
    bool header_wrote;
 | 
			
		||||
    // status code passed to WriteHeader
 | 
			
		||||
    // The status code passed to WriteHeader
 | 
			
		||||
    int status;
 | 
			
		||||
private:
 | 
			
		||||
    // explicitly-declared Content-Length; or -1
 | 
			
		||||
    // The explicitly-declared Content-Length; or -1
 | 
			
		||||
    int64_t content_length;
 | 
			
		||||
    // number of bytes written in body
 | 
			
		||||
    // The number of bytes written in body
 | 
			
		||||
    int64_t written;
 | 
			
		||||
private:
 | 
			
		||||
    // wroteHeader tells whether the header's been written to "the
 | 
			
		||||
    // The wroteHeader tells whether the header's been written to "the
 | 
			
		||||
    // wire" (or rather: w.conn.buf). this is unlike
 | 
			
		||||
    // (*response).wroteHeader, which tells only whether it was
 | 
			
		||||
    // logically written.
 | 
			
		||||
| 
						 | 
				
			
			@ -291,9 +233,7 @@ public:
 | 
			
		|||
    virtual srs_error_t send_header(char* data, int size);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * response reader use st socket.
 | 
			
		||||
 */
 | 
			
		||||
// Response reader use st socket.
 | 
			
		||||
class SrsHttpResponseReader : virtual public ISrsHttpResponseReader
 | 
			
		||||
{
 | 
			
		||||
private:
 | 
			
		||||
| 
						 | 
				
			
			@ -301,21 +241,19 @@ private:
 | 
			
		|||
    SrsHttpMessage* owner;
 | 
			
		||||
    SrsFastStream* buffer;
 | 
			
		||||
    bool is_eof;
 | 
			
		||||
    // the left bytes in chunk.
 | 
			
		||||
    // The left bytes in chunk.
 | 
			
		||||
    int nb_left_chunk;
 | 
			
		||||
    // the number of bytes of current chunk.
 | 
			
		||||
    // The number of bytes of current chunk.
 | 
			
		||||
    int nb_chunk;
 | 
			
		||||
    // already read total bytes.
 | 
			
		||||
    // Already read total bytes.
 | 
			
		||||
    int64_t nb_total_read;
 | 
			
		||||
public:
 | 
			
		||||
    SrsHttpResponseReader(SrsHttpMessage* msg, ISrsReader* reader);
 | 
			
		||||
    virtual ~SrsHttpResponseReader();
 | 
			
		||||
public:
 | 
			
		||||
    /**
 | 
			
		||||
     * initialize the response reader with buffer.
 | 
			
		||||
     */
 | 
			
		||||
    // Initialize the response reader with buffer.
 | 
			
		||||
    virtual srs_error_t initialize(SrsFastStream* buffer);
 | 
			
		||||
    // interface ISrsHttpResponseReader
 | 
			
		||||
// interface ISrsHttpResponseReader
 | 
			
		||||
public:
 | 
			
		||||
    virtual bool eof();
 | 
			
		||||
    virtual srs_error_t read(char* data, int nb_data, int* nb_read);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -31,10 +31,8 @@
 | 
			
		|||
#include <srs_service_st.hpp>
 | 
			
		||||
#include <srs_kernel_log.hpp>
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * st thread context, get_id will get the st-thread id,
 | 
			
		||||
 * which identify the client.
 | 
			
		||||
 */
 | 
			
		||||
// The st thread context, get_id will get the st-thread id,
 | 
			
		||||
// which identify the client.
 | 
			
		||||
class SrsThreadContext : public ISrsThreadContext
 | 
			
		||||
{
 | 
			
		||||
private:
 | 
			
		||||
| 
						 | 
				
			
			@ -50,9 +48,7 @@ public:
 | 
			
		|||
    virtual void clear_cid();
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * The basic console log, which write log to console.
 | 
			
		||||
 */
 | 
			
		||||
// The basic console log, which write log to console.
 | 
			
		||||
class SrsConsoleLog : public ISrsLog
 | 
			
		||||
{
 | 
			
		||||
private:
 | 
			
		||||
| 
						 | 
				
			
			@ -74,13 +70,11 @@ public:
 | 
			
		|||
    virtual void error(const char* tag, int context_id, const char* fmt, ...);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Generate the log header.
 | 
			
		||||
 * @param dangerous Whether log is warning or error, log the errno if true.
 | 
			
		||||
 * @param utc Whether use UTC time format in the log header.
 | 
			
		||||
 * @param psize Output the actual header size.
 | 
			
		||||
 * @remark It's a internal API.
 | 
			
		||||
 */
 | 
			
		||||
// Generate the log header.
 | 
			
		||||
// @param dangerous Whether log is warning or error, log the errno if true.
 | 
			
		||||
// @param utc Whether use UTC time format in the log header.
 | 
			
		||||
// @param psize Output the actual header size.
 | 
			
		||||
// @remark It's a internal API.
 | 
			
		||||
bool srs_log_header(char* buffer, int size, bool utc, bool dangerous, const char* tag, int cid, const char* level, int* psize);
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -37,15 +37,13 @@ class SrsPacket;
 | 
			
		|||
class SrsKbps;
 | 
			
		||||
class SrsWallClock;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * The simple RTMP client, provides friendly APIs.
 | 
			
		||||
 * @remark Should never use client when closed.
 | 
			
		||||
 * Usage:
 | 
			
		||||
 *      SrsBasicRtmpClient client("rtmp://127.0.0.1:1935/live/livestream", 3000, 9000);
 | 
			
		||||
 *      client.connect();
 | 
			
		||||
 *      client.play();
 | 
			
		||||
 *      client.close();
 | 
			
		||||
 */
 | 
			
		||||
// The simple RTMP client, provides friendly APIs.
 | 
			
		||||
// @remark Should never use client when closed.
 | 
			
		||||
// Usage:
 | 
			
		||||
//      SrsBasicRtmpClient client("rtmp://127.0.0.1:1935/live/livestream", 3000, 9000);
 | 
			
		||||
//      client.connect();
 | 
			
		||||
//      client.play();
 | 
			
		||||
//      client.close();
 | 
			
		||||
class SrsBasicRtmpClient
 | 
			
		||||
{
 | 
			
		||||
private:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -36,10 +36,10 @@ typedef void* srs_thread_t;
 | 
			
		|||
typedef void* srs_cond_t;
 | 
			
		||||
typedef void* srs_mutex_t;
 | 
			
		||||
 | 
			
		||||
// initialize st, requires epoll.
 | 
			
		||||
// Initialize st, requires epoll.
 | 
			
		||||
extern srs_error_t srs_st_init();
 | 
			
		||||
 | 
			
		||||
// close the netfd, and close the underlayer fd.
 | 
			
		||||
// Close the netfd, and close the underlayer fd.
 | 
			
		||||
// @remark when close, user must ensure io completed.
 | 
			
		||||
extern void srs_close_stfd(srs_netfd_t& stfd);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -81,9 +81,7 @@ extern srs_netfd_t srs_accept(srs_netfd_t stfd, struct sockaddr *addr, int *addr
 | 
			
		|||
 | 
			
		||||
extern ssize_t srs_read(srs_netfd_t stfd, void *buf, size_t nbyte, srs_utime_t timeout);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * The mutex locker.
 | 
			
		||||
 */
 | 
			
		||||
// The mutex locker.
 | 
			
		||||
#define SrsLocker(instance) \
 | 
			
		||||
    impl__SrsLocker _srs_auto_free_##instance(&instance)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -102,10 +100,8 @@ public:
 | 
			
		|||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * the socket provides TCP socket over st,
 | 
			
		||||
 * that is, the sync socket mechanism.
 | 
			
		||||
 */
 | 
			
		||||
// the socket provides TCP socket over st,
 | 
			
		||||
// that is, the sync socket mechanism.
 | 
			
		||||
class SrsStSocket : public ISrsProtocolReadWriter
 | 
			
		||||
{
 | 
			
		||||
private:
 | 
			
		||||
| 
						 | 
				
			
			@ -133,28 +129,22 @@ public:
 | 
			
		|||
    virtual int64_t get_recv_bytes();
 | 
			
		||||
    virtual int64_t get_send_bytes();
 | 
			
		||||
public:
 | 
			
		||||
    /**
 | 
			
		||||
     * @param nread, the actual read bytes, ignore if NULL.
 | 
			
		||||
     */
 | 
			
		||||
    // @param nread, the actual read bytes, ignore if NULL.
 | 
			
		||||
    virtual srs_error_t read(void* buf, size_t size, ssize_t* nread);
 | 
			
		||||
    virtual srs_error_t read_fully(void* buf, size_t size, ssize_t* nread);
 | 
			
		||||
    /**
 | 
			
		||||
     * @param nwrite, the actual write bytes, ignore if NULL.
 | 
			
		||||
     */
 | 
			
		||||
    // @param nwrite, the actual write bytes, ignore if NULL.
 | 
			
		||||
    virtual srs_error_t write(void* buf, size_t size, ssize_t* nwrite);
 | 
			
		||||
    virtual srs_error_t writev(const iovec *iov, int iov_size, ssize_t* nwrite);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * The client to connect to server over TCP.
 | 
			
		||||
 * User must never reuse the client when close it.
 | 
			
		||||
 * Usage:
 | 
			
		||||
 *      SrsTcpClient client("127.0.0.1", 1935, 9 * SRS_UTIME_SECONDS);
 | 
			
		||||
 *      client.connect();
 | 
			
		||||
 *      client.write("Hello world!", 12, NULL);
 | 
			
		||||
 *      client.read(buf, 4096, NULL);
 | 
			
		||||
 * @remark User can directly free the object, which will close the fd.
 | 
			
		||||
 */
 | 
			
		||||
// The client to connect to server over TCP.
 | 
			
		||||
// User must never reuse the client when close it.
 | 
			
		||||
// Usage:
 | 
			
		||||
//      SrsTcpClient client("127.0.0.1", 1935, 9// SRS_UTIME_SECONDS);
 | 
			
		||||
//      client.connect();
 | 
			
		||||
//      client.write("Hello world!", 12, NULL);
 | 
			
		||||
//      client.read(buf, 4096, NULL);
 | 
			
		||||
// @remark User can directly free the object, which will close the fd.
 | 
			
		||||
class SrsTcpClient : public ISrsProtocolReadWriter
 | 
			
		||||
{
 | 
			
		||||
private:
 | 
			
		||||
| 
						 | 
				
			
			@ -166,25 +156,19 @@ private:
 | 
			
		|||
    // The timeout in srs_utime_t.
 | 
			
		||||
    srs_utime_t timeout;
 | 
			
		||||
public:
 | 
			
		||||
    /**
 | 
			
		||||
     * Constructor.
 | 
			
		||||
     * @param h the ip or hostname of server.
 | 
			
		||||
     * @param p the port to connect to.
 | 
			
		||||
     * @param tm the timeout in srs_utime_t.
 | 
			
		||||
     */
 | 
			
		||||
    // Constructor.
 | 
			
		||||
    // @param h the ip or hostname of server.
 | 
			
		||||
    // @param p the port to connect to.
 | 
			
		||||
    // @param tm the timeout in srs_utime_t.
 | 
			
		||||
    SrsTcpClient(std::string h, int p, srs_utime_t tm);
 | 
			
		||||
    virtual ~SrsTcpClient();
 | 
			
		||||
public:
 | 
			
		||||
    /**
 | 
			
		||||
     * Connect to server over TCP.
 | 
			
		||||
     * @remark We will close the exists connection before do connect.
 | 
			
		||||
     */
 | 
			
		||||
    // Connect to server over TCP.
 | 
			
		||||
    // @remark We will close the exists connection before do connect.
 | 
			
		||||
    virtual srs_error_t connect();
 | 
			
		||||
private:
 | 
			
		||||
    /**
 | 
			
		||||
     * Close the connection to server.
 | 
			
		||||
     * @remark User should never use the client when close it.
 | 
			
		||||
     */
 | 
			
		||||
    // Close the connection to server.
 | 
			
		||||
    // @remark User should never use the client when close it.
 | 
			
		||||
    virtual void close();
 | 
			
		||||
// interface ISrsProtocolReadWriter
 | 
			
		||||
public:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -32,17 +32,17 @@
 | 
			
		|||
 | 
			
		||||
#include <srs_service_st.hpp>
 | 
			
		||||
 | 
			
		||||
// whether the url is starts with http:// or https://
 | 
			
		||||
// Whether the url is starts with http:// or https://
 | 
			
		||||
extern bool srs_string_is_http(std::string url);
 | 
			
		||||
extern bool srs_string_is_rtmp(std::string url);
 | 
			
		||||
 | 
			
		||||
// get local ip, fill to @param ips
 | 
			
		||||
// Get local ip, fill to @param ips
 | 
			
		||||
extern std::vector<std::string>& srs_get_local_ips();
 | 
			
		||||
 | 
			
		||||
// get local public ip, empty string if no public internet address found.
 | 
			
		||||
// Get local public ip, empty string if no public internet address found.
 | 
			
		||||
extern std::string srs_get_public_internet_address();
 | 
			
		||||
 | 
			
		||||
// detect whether specified device is internet public address.
 | 
			
		||||
// Detect whether specified device is internet public address.
 | 
			
		||||
extern bool srs_net_device_is_internet(std::string ifname);
 | 
			
		||||
extern bool srs_net_device_is_internet(const sockaddr* addr);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue