mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
Refactor code, add stop for hybrid server to do cleanup.
This commit is contained in:
parent
db5788b205
commit
7c9b31815f
5 changed files with 38 additions and 0 deletions
|
@ -98,6 +98,10 @@ srs_error_t SrsServerAdapter::run()
|
|||
return err;
|
||||
}
|
||||
|
||||
void SrsServerAdapter::stop()
|
||||
{
|
||||
}
|
||||
|
||||
SrsHybridServer::SrsHybridServer()
|
||||
{
|
||||
}
|
||||
|
@ -168,5 +172,14 @@ srs_error_t SrsHybridServer::run()
|
|||
return err;
|
||||
}
|
||||
|
||||
void SrsHybridServer::stop()
|
||||
{
|
||||
vector<ISrsHybridServer*>::iterator it;
|
||||
for (it = servers.begin(); it != servers.end(); ++it) {
|
||||
ISrsHybridServer* server = *it;
|
||||
server->stop();
|
||||
}
|
||||
}
|
||||
|
||||
SrsHybridServer* _srs_hybrid = new SrsHybridServer();
|
||||
|
||||
|
|
|
@ -30,16 +30,22 @@
|
|||
|
||||
class SrsServer;
|
||||
|
||||
// The hibrid server interfaces, we could register many servers.
|
||||
class ISrsHybridServer
|
||||
{
|
||||
public:
|
||||
ISrsHybridServer();
|
||||
virtual ~ISrsHybridServer();
|
||||
public:
|
||||
// Only ST initialized before each server, we could fork processes as such.
|
||||
virtual srs_error_t initialize() = 0;
|
||||
// Run each server, should never block except the SRS master server.
|
||||
virtual srs_error_t run() = 0;
|
||||
// Stop each server, should do cleanup, for example, kill processes forked by server.
|
||||
virtual void stop() = 0;
|
||||
};
|
||||
|
||||
// The SRS server adapter, the master server.
|
||||
class SrsServerAdapter : public ISrsHybridServer
|
||||
{
|
||||
private:
|
||||
|
@ -50,8 +56,10 @@ public:
|
|||
public:
|
||||
virtual srs_error_t initialize();
|
||||
virtual srs_error_t run();
|
||||
virtual void stop();
|
||||
};
|
||||
|
||||
// The hybrid server manager.
|
||||
class SrsHybridServer
|
||||
{
|
||||
private:
|
||||
|
@ -64,6 +72,7 @@ public:
|
|||
public:
|
||||
virtual srs_error_t initialize();
|
||||
virtual srs_error_t run();
|
||||
virtual void stop();
|
||||
};
|
||||
|
||||
extern SrsHybridServer* _srs_hybrid;
|
||||
|
|
|
@ -420,14 +420,19 @@ srs_error_t run_hybrid_server()
|
|||
_srs_hybrid->register_server(new SrtServerAdapter());
|
||||
#endif
|
||||
|
||||
// Do some system initialize.
|
||||
if ((err = _srs_hybrid->initialize()) != srs_success) {
|
||||
return srs_error_wrap(err, "hybrid initialize");
|
||||
}
|
||||
|
||||
// Should run util hybrid servers all done.
|
||||
if ((err = _srs_hybrid->run()) != srs_success) {
|
||||
return srs_error_wrap(err, "hybrid run");
|
||||
}
|
||||
|
||||
// After all done, stop and cleanup.
|
||||
_srs_hybrid->stop();
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
|
|
|
@ -211,6 +211,9 @@ SrtServerAdapter::~SrtServerAdapter()
|
|||
srs_error_t SrtServerAdapter::initialize()
|
||||
{
|
||||
srs_error_t err = srs_success;
|
||||
|
||||
// TODO: FIXME: We could fork processes here, because here only ST is initialized.
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
|
@ -218,6 +221,8 @@ srs_error_t SrtServerAdapter::run()
|
|||
{
|
||||
srs_error_t err = srs_success;
|
||||
|
||||
// TODO: FIXME: We could start a coroutine to dispatch SRT task to processes.
|
||||
|
||||
if(_srs_config->get_srt_enabled()) {
|
||||
srs_trace("srt server is enabled...");
|
||||
unsigned short srt_port = _srs_config->get_srt_listen_port();
|
||||
|
@ -242,3 +247,8 @@ srs_error_t SrtServerAdapter::run()
|
|||
|
||||
return err;
|
||||
}
|
||||
|
||||
void SrtServerAdapter::stop()
|
||||
{
|
||||
// TODO: FIXME: If forked processes, we should do cleanup.
|
||||
}
|
||||
|
|
|
@ -47,6 +47,7 @@ public:
|
|||
public:
|
||||
virtual srs_error_t initialize();
|
||||
virtual srs_error_t run();
|
||||
virtual void stop();
|
||||
};
|
||||
|
||||
#endif//SRT_SERVER_H
|
Loading…
Add table
Add a link
Reference in a new issue