winlin

refine hijack io for srslibrtmp

... ... @@ -21,8 +21,8 @@
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
#ifndef SRS_KERNEL_AAC_HPP
#define SRS_KERNEL_AAC_HPP
#ifndef SRS_KERNEL_BALANCE_HPP
#define SRS_KERNEL_BALANCE_HPP
/*
#include <srs_kernel_balance.hpp>
... ...
... ... @@ -102,7 +102,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
SrsBlockSyncSocket* skt = (SrsBlockSyncSocket*)ctx;
srs_freep(skt);
}
int srs_hijack_io_create_socket(srs_hijack_io_t ctx)
int srs_hijack_io_create_socket(srs_hijack_io_t ctx, srs_rtmp_t owner)
{
SrsBlockSyncSocket* skt = (SrsBlockSyncSocket*)ctx;
... ... @@ -329,10 +329,10 @@ srs_hijack_io_t SimpleSocketStream::hijack_io()
return io;
}
int SimpleSocketStream::create_socket()
int SimpleSocketStream::create_socket(srs_rtmp_t owner)
{
srs_assert(io);
return srs_hijack_io_create_socket(io);
return srs_hijack_io_create_socket(io, owner);
}
int SimpleSocketStream::connect(const char* server_ip, int port)
... ...
... ... @@ -51,7 +51,7 @@ public:
virtual ~SimpleSocketStream();
public:
virtual srs_hijack_io_t hijack_io();
virtual int create_socket();
virtual int create_socket(srs_rtmp_t owner);
virtual int connect(const char* server, int port);
// ISrsBufferReader
public:
... ...
... ... @@ -539,7 +539,7 @@ srs_rtmp_t srs_rtmp_create(const char* url)
srs_freep(context->skt);
context->skt = new SimpleSocketStream();
if (context->skt->create_socket() != ERROR_SUCCESS) {
if (context->skt->create_socket(context) != ERROR_SUCCESS) {
// free the context and return NULL
srs_freep(context);
return NULL;
... ... @@ -561,7 +561,7 @@ srs_rtmp_t srs_rtmp_create2(const char* url)
srs_freep(context->skt);
context->skt = new SimpleSocketStream();
if (context->skt->create_socket() != ERROR_SUCCESS) {
if (context->skt->create_socket(context) != ERROR_SUCCESS) {
// free the context and return NULL
srs_freep(context);
return NULL;
... ...
... ... @@ -992,7 +992,7 @@ typedef void* srs_hijack_io_t;
extern srs_hijack_io_t srs_hijack_io_get(srs_rtmp_t rtmp);
#endif
// define the following macro and functions in your module to hijack the io.
// the example @see https://github.com/winlinvip/st-load
// the example @see https://github.com/ossrs/srs-bench
// which use librtmp but use its own io(use st also).
#ifdef SRS_HIJACK_IO
/**
... ... @@ -1006,9 +1006,10 @@ typedef void* srs_hijack_io_t;
extern void srs_hijack_io_destroy(srs_hijack_io_t ctx);
/**
* create socket, not connect yet.
* @param owner, the rtmp context which create this socket.
* @return 0, success; otherswise, failed.
*/
extern int srs_hijack_io_create_socket(srs_hijack_io_t ctx);
extern int srs_hijack_io_create_socket(srs_hijack_io_t ctx, srs_rtmp_t owner);
/**
* connect socket at server_ip:port.
* @return 0, success; otherswise, failed.
... ...
... ... @@ -29,6 +29,9 @@
*/
#include <srs_core.hpp>
// default http listen port.
#define SRS_DEFAULT_HTTP_PORT 80
#if !defined(SRS_EXPORT_LIBRTMP)
#include <map>
... ... @@ -68,9 +71,6 @@ class ISrsHttpResponseWriter;
// for ead all of http body, read each time.
#define SRS_HTTP_READ_CACHE_BYTES 4096
// default http listen port.
#define SRS_DEFAULT_HTTP_PORT 80
// for http parser macros
#define SRS_CONSTS_HTTP_OPTIONS HTTP_OPTIONS
#define SRS_CONSTS_HTTP_GET HTTP_GET
... ...