srs/trunk/src/app/srs_app_ng_exec.hpp
Winlin d4d1d5d8b5
AI: Move some app files to kernel. v7.0.86 (#4486)
Co-authored-by: OSSRS-AI <winlinam@gmail.com>
2025-09-13 10:26:47 -04:00

54 lines
1.1 KiB
C++

//
// Copyright (c) 2013-2025 The SRS Authors
//
// SPDX-License-Identifier: MIT
//
#ifndef SRS_APP_NG_EXEC_HPP
#define SRS_APP_NG_EXEC_HPP
#include <srs_core.hpp>
#include <string>
#include <vector>
#include <srs_app_st.hpp>
class ISrsRequest;
class SrsPithyPrint;
class SrsProcess;
// The ng-exec is the exec feature introduced by nginx-rtmp,
// @see https://github.com/arut/nginx-rtmp-module/wiki/Directives#exec_push
// @see https://github.com/ossrs/srs/issues/367
class SrsNgExec : public ISrsCoroutineHandler
{
private:
ISrsCoroutine *trd_;
SrsPithyPrint *pprint_;
std::string input_stream_name_;
std::vector<SrsProcess *> exec_publishs_;
public:
SrsNgExec();
virtual ~SrsNgExec();
public:
virtual srs_error_t on_publish(ISrsRequest *req);
virtual void on_unpublish();
// Interface ISrsReusableThreadHandler.
public:
virtual srs_error_t cycle();
private:
virtual srs_error_t do_cycle();
private:
virtual srs_error_t parse_exec_publish(ISrsRequest *req);
virtual void clear_exec_publish();
virtual void show_exec_log_message();
virtual std::string parse(ISrsRequest *req, std::string tmpl);
};
#endif