1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-02-15 04:42:04 +00:00
srs/trunk/src/app/srs_app_forward.hpp

75 lines
1.9 KiB
C++
Raw Normal View History

//
// Copyright (c) 2013-2021 Winlin
//
// SPDX-License-Identifier: MIT
//
2013-11-29 14:21:31 +00:00
#ifndef SRS_APP_FORWARD_HPP
#define SRS_APP_FORWARD_HPP
2013-11-29 14:21:31 +00:00
#include <srs_core.hpp>
#include <string>
#include <srs_app_st.hpp>
2013-11-29 14:21:31 +00:00
class ISrsProtocolReadWriter;
class SrsSharedPtrMessage;
2013-11-29 14:21:31 +00:00
class SrsOnMetaDataPacket;
2013-12-15 10:25:55 +00:00
class SrsMessageQueue;
class SrsRtmpJitter;
2013-11-29 14:21:31 +00:00
class SrsRtmpClient;
class SrsRequest;
2021-05-16 08:14:00 +00:00
class SrsLiveSource;
class SrsOriginHub;
2014-05-12 09:27:50 +00:00
class SrsKbps;
class SrsSimpleRtmpClient;
2013-11-29 14:21:31 +00:00
2019-04-30 00:24:52 +00:00
// Forward the stream to other servers.
class SrsForwarder : public ISrsCoroutineHandler
2013-11-29 14:21:31 +00:00
{
private:
2019-04-30 00:24:52 +00:00
// The ep to forward, server[:port].
std::string ep_forward;
SrsRequest* req;
2013-11-29 14:21:31 +00:00
private:
SrsCoroutine* trd;
2013-11-29 14:21:31 +00:00
private:
SrsOriginHub* hub;
SrsSimpleRtmpClient* sdk;
2014-03-18 03:32:58 +00:00
SrsRtmpJitter* jitter;
SrsMessageQueue* queue;
2019-04-30 00:24:52 +00:00
// Cache the sequence header for retry when slave is failed.
// @see https://github.com/ossrs/srs/issues/150
SrsSharedPtrMessage* sh_audio;
SrsSharedPtrMessage* sh_video;
2013-11-29 14:21:31 +00:00
public:
SrsForwarder(SrsOriginHub* h);
2014-03-18 03:32:58 +00:00
virtual ~SrsForwarder();
2013-12-15 10:25:55 +00:00
public:
2017-09-23 14:12:33 +00:00
virtual srs_error_t initialize(SrsRequest* r, std::string ep);
virtual void set_queue_size(srs_utime_t queue_size);
2013-11-29 14:21:31 +00:00
public:
2017-09-23 14:12:33 +00:00
virtual srs_error_t on_publish();
2014-03-18 03:32:58 +00:00
virtual void on_unpublish();
2019-04-30 00:24:52 +00:00
// Forward the audio packet.
// @param shared_metadata, directly ptr, copy it if need to save it.
2017-09-23 14:12:33 +00:00
virtual srs_error_t on_meta_data(SrsSharedPtrMessage* shared_metadata);
2019-04-30 00:24:52 +00:00
// Forward the audio packet.
// @param shared_audio, directly ptr, copy it if need to save it.
2017-09-23 14:12:33 +00:00
virtual srs_error_t on_audio(SrsSharedPtrMessage* shared_audio);
2019-04-30 00:24:52 +00:00
// Forward the video packet.
// @param shared_video, directly ptr, copy it if need to save it.
2017-09-23 14:12:33 +00:00
virtual srs_error_t on_video(SrsSharedPtrMessage* shared_video);
2019-04-30 00:30:13 +00:00
// Interface ISrsReusableThread2Handler.
public:
virtual srs_error_t cycle();
private:
virtual srs_error_t do_cycle();
2013-11-29 14:21:31 +00:00
private:
2017-09-23 14:12:33 +00:00
virtual srs_error_t forward();
2013-11-29 14:21:31 +00:00
};
#endif
2014-08-02 14:18:39 +00:00