| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 | /** * Copyright (c) 2020 Staz Modrzynski * Copyright (c) 2020 Paul-Louis Ageneau * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */#ifndef RTC_MEDIA_HANDLER_H#define RTC_MEDIA_HANDLER_H#include "common.hpp"#include "description.hpp"#include "message.hpp"namespace rtc {class RTC_CPP_EXPORT MediaHandler : public std::enable_shared_from_this<MediaHandler> {public:	MediaHandler();	virtual ~MediaHandler();	/// Called when a media is added or updated	/// @param desc Description of the media	virtual void media([[maybe_unused]] const Description::Media &desc) {}	/// Called when there is traffic coming from the peer	/// @param messages Incoming messages from the peer, can be modified by the handler	/// @param send Send callback to send messages back to the peer	virtual void incoming([[maybe_unused]] message_vector &messages, [[maybe_unused]] const message_callback &send) {}	/// Called when there is traffic that needs to be sent to the peer	/// @param messages Outgoing messages to the peer, can be modified by the handler	/// @param send Send callback to send messages back to the peer	virtual void outgoing([[maybe_unused]] message_vector &messages, [[maybe_unused]] const message_callback &send) {}	virtual bool requestKeyframe(const message_callback &send);	virtual bool requestBitrate(unsigned int bitrate, const message_callback &send);	void addToChain(shared_ptr<MediaHandler> handler);	void setNext(shared_ptr<MediaHandler> handler);	shared_ptr<MediaHandler> next();	shared_ptr<const MediaHandler> next() const;	shared_ptr<MediaHandler> last();             // never null	shared_ptr<const MediaHandler> last() const; // never null	void mediaChain(const Description::Media &desc);	void incomingChain(message_vector &messages, const message_callback &send);	void outgoingChain(message_vector &messages, const message_callback &send);private:	shared_ptr<MediaHandler> mNext;};} // namespace rtc#endif // RTC_MEDIA_HANDLER_H
 |