Files
nginx-rtmp-module/ngx_rtmp_relay_module.h
2012-11-21 07:31:54 +04:00

69 lines
1.9 KiB
C

/*
* Copyright (c) 2012 Roman Arutyunyan
*/
#ifndef _NGX_RTMP_RELAY_H_INCLUDED_
#define _NGX_RTMP_RELAY_H_INCLUDED_
#include "ngx_rtmp.h"
/* TODO: rename to ngx_rtmp_relay_t */
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;
unsigned push:1;
#if 0
void *tag; /* usually module reference */
void *data; /* module-specific data */
#endif
ngx_rtmp_relay_get_peer_pt *get_peer;
void *get_peer_arg;
} ngx_rtmp_relay_target_t;
typedef struct ngx_rtmp_relay_ctx_s ngx_rtmp_relay_ctx_t;
struct ngx_rtmp_relay_ctx_s {
ngx_rtmp_relay_target_t *relay;
void *tag;
void *data;
} ngx_rtmp_relay_ctx_t;
enum {
NGX_RTMP_RELAY_PENDING,
NGX_RTMP_RELAY_RUNNING,
NGX_RTMP_RELAY_STOPPED
};
typedef struct {
ngx_array_t relays; /* ngx_rtmp_relay_target_t * */
ngx_array_t states; /* ngx_uint_t */
ngx_event_t sync_evt;
} ngx_rtmp_relay_room_ctx_t;
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_ */