1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-03-09 15:49:59 +00:00
srs/trunk/src/srt/srt_server.hpp

53 lines
No EOL
1.1 KiB
C++

#ifndef SRT_SERVER_H
#define SRT_SERVER_H
#include <srt/srt.h>
#include <thread>
#include <memory>
#include <srs_app_hybrid.hpp>
class srt_handle;
class srt_server {
public:
srt_server(unsigned short port);
~srt_server();
int start();//init srt handl and create srt main thread loop
void stop();//stop srt main thread loop
private:
//init srt socket and srt epoll
int init_srt();
//srt main epoll loop
void on_work();
//accept new srt connection
void srt_handle_connection(SRT_SOCKSTATUS status, SRTSOCKET input_fd, const std::string& dscr);
private:
unsigned short listen_port;
SRTSOCKET server_socket;
int _pollid;
bool run_flag;
std::shared_ptr<std::thread> thread_run_ptr;
std::shared_ptr<srt_handle> handle_ptr;
};
typedef std::shared_ptr<srt_server> SRT_SERVER_PTR;
class SrtServerAdapter : public ISrsHybridServer
{
private:
SRT_SERVER_PTR srt_ptr;
public:
SrtServerAdapter();
virtual ~SrtServerAdapter();
public:
virtual srs_error_t initialize();
virtual srs_error_t run();
virtual void stop();
};
#endif//SRT_SERVER_H