/* * Copyright (C) Roman Arutyunyan */ #ifndef _NGX_RTMP_RELAY_H_INCLUDED_ #define _NGX_RTMP_RELAY_H_INCLUDED_ #include #include #include "ngx_rtmp.h" typedef struct { ngx_url_t url; ngx_str_t app; ngx_str_t name; ngx_str_t tc_url; ngx_str_t page_url; ngx_str_t swf_url; ngx_str_t flash_ver; ngx_str_t play_path; ngx_int_t live; ngx_int_t start; ngx_int_t stop; void *tag; /* usually module reference */ void *data; /* module-specific data */ ngx_uint_t counter; /* mutable connection counter */ } ngx_rtmp_relay_target_t; typedef struct ngx_rtmp_relay_ctx_s ngx_rtmp_relay_ctx_t; struct ngx_rtmp_relay_ctx_s { ngx_str_t name; ngx_str_t url; ngx_log_t log; ngx_rtmp_session_t *session; ngx_rtmp_relay_ctx_t *publish; ngx_rtmp_relay_ctx_t *play; ngx_rtmp_relay_ctx_t *next; ngx_str_t app; ngx_str_t tc_url; ngx_str_t page_url; ngx_str_t swf_url; ngx_str_t flash_ver; ngx_str_t play_path; ngx_int_t live; ngx_int_t start; ngx_int_t stop; ngx_event_t push_evt; ngx_event_t *static_evt; void *tag; void *data; }; extern ngx_module_t ngx_rtmp_relay_module; ngx_int_t ngx_rtmp_relay_pull(ngx_rtmp_session_t *s, ngx_str_t *name, ngx_rtmp_relay_target_t *target); ngx_int_t ngx_rtmp_relay_push(ngx_rtmp_session_t *s, ngx_str_t *name, ngx_rtmp_relay_target_t *target); #endif /* _NGX_RTMP_RELAY_H_INCLUDED_ */