1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-02-14 20:31:56 +00:00

refine the srs-librtmp, add hijack get the object.

This commit is contained in:
winlin 2014-12-02 14:02:28 +08:00
parent a94dbecdc4
commit b28dc7364e
4 changed files with 38 additions and 5 deletions

View file

@ -290,6 +290,11 @@ SimpleSocketStream::~SimpleSocketStream()
}
}
srs_hijack_io_t SimpleSocketStream::hijack_io()
{
return io;
}
int SimpleSocketStream::create_socket()
{
srs_assert(io);

View file

@ -50,6 +50,7 @@ public:
SimpleSocketStream();
virtual ~SimpleSocketStream();
public:
virtual srs_hijack_io_t hijack_io();
virtual int create_socket();
virtual int connect(const char* server, int port);
// ISrsBufferReader

View file

@ -534,7 +534,10 @@ srs_rtmp_t srs_rtmp_create2(const char* url)
void srs_rtmp_destroy(srs_rtmp_t rtmp)
{
srs_assert(rtmp != NULL);
if (!rtmp) {
return;
}
Context* context = (Context*)rtmp;
srs_freep(context);
@ -2424,6 +2427,23 @@ const char* srs_human_format_time()
return buf;
}
#ifdef SRS_HIJACK_IO
srs_hijack_io_t srs_hijack_io_get(srs_rtmp_t rtmp)
{
if (!rtmp) {
return NULL;
}
Context* context = (Context*)rtmp;
if (!context->skt) {
return NULL;
}
return context->skt->hijack_io();
}
#endif
#ifdef __cplusplus
}
#endif

View file

@ -107,7 +107,7 @@ extern srs_rtmp_t srs_rtmp_create(const char* url);
extern srs_rtmp_t srs_rtmp_create2(const char* url);
/**
* close and destroy the rtmp stack.
* @remark, user should use the rtmp again.
* @remark, user should never use the rtmp again.
*/
extern void srs_rtmp_destroy(srs_rtmp_t rtmp);
@ -895,14 +895,21 @@ extern const char* srs_human_format_time();
*************************************************************/
// the void* will convert to your handler for io hijack.
typedef void* srs_hijack_io_t;
// define the following macro and functions in your module to hijack the io.
// the example @see https://github.com/winlinvip/st-load
// which use librtmp but use its own io(use st also).
#ifdef SRS_HIJACK_IO
#ifndef _WIN32
// for iovec.
#include <sys/uio.h>
#endif
/**
* get the hijack io object in rtmp protocol sdk.
* @remark, user should never provides this method, srs-librtmp provides it.
*/
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
// which use librtmp but use its own io(use st also).
#ifdef SRS_HIJACK_IO
/**
* create hijack.
* @return NULL for error; otherwise, ok.