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

GC: Eliminate unused code. v5.0.84

This commit is contained in:
winlin 2022-10-30 12:42:37 +08:00
parent 7d9dc69ae1
commit ef0aefd546
8 changed files with 20 additions and 43 deletions

View file

@ -406,21 +406,21 @@ void SrsResourceManager::dispose(ISrsResource* c)
}
}
SrsSweepGc::SrsSweepGc()
SrsLazySweepGc::SrsLazySweepGc()
{
}
SrsSweepGc::~SrsSweepGc()
SrsLazySweepGc::~SrsLazySweepGc()
{
}
srs_error_t SrsSweepGc::start()
srs_error_t SrsLazySweepGc::start()
{
srs_error_t err = srs_success;
return err;
}
void SrsSweepGc::remove(SrsLazyObject* c)
void SrsLazySweepGc::remove(SrsLazyObject* c)
{
// TODO: FIXME: MUST lazy sweep.
srs_freep(c);

View file

@ -125,11 +125,11 @@ private:
};
// A simple lazy-sweep GC, just wait for a long time to delete the disposable resources.
class SrsSweepGc : public ISrsLazyGc
class SrsLazySweepGc : public ISrsLazyGc
{
public:
SrsSweepGc();
virtual ~SrsSweepGc();
SrsLazySweepGc();
virtual ~SrsLazySweepGc();
public:
virtual srs_error_t start();
virtual void remove(SrsLazyObject* c);
@ -144,21 +144,19 @@ class SrsLazyObjectWrapper : public ISrsResource
{
private:
T* resource_;
ISrsResource* wrapper_;
bool is_root_;
public:
SrsLazyObjectWrapper(T* resource = NULL, ISrsResource* wrapper = NULL) {
wrapper_ = wrapper ? wrapper : this;
resource_ = resource ? resource : new T();
resource_->gc_use(wrapper_);
resource_->gc_use();
is_root_ = !resource;
if (!resource) {
resource_->gc_set_creator_wrapper(wrapper_);
resource_->gc_set_creator_wrapper(wrapper ? wrapper : this);
}
}
virtual ~SrsLazyObjectWrapper() {
resource_->gc_dispose(wrapper_);
resource_->gc_dispose();
if (is_root_) {
resource_->gc_set_creator_wrapper(NULL);

View file

@ -366,7 +366,7 @@ srs_error_t SrsLazyGbSession::drive_state()
}
// Now, we're able to query session by ssrc, for media packets.
SrsLazyGbSessionWrapper* wrapper = dynamic_cast<SrsLazyGbSessionWrapper*>(gc_available_wrapper());
SrsLazyGbSessionWrapper* wrapper = dynamic_cast<SrsLazyGbSessionWrapper*>(gc_creator_wrapper());
srs_assert(wrapper); // It MUST never be NULL, because this method is in the cycle of coroutine.
_srs_gb_manager->add_with_fast_id(ssrc, wrapper);
}
@ -998,7 +998,7 @@ srs_error_t SrsLazyGbSipTcpConn::bind_session(SrsSipMessage* msg, SrsLazyGbSessi
if (msg->type_ != HTTP_REQUEST || msg->method_ != HTTP_REGISTER) return err;
// The lazy-sweep wrapper for this resource.
SrsLazyGbSipTcpConnWrapper* wrapper = dynamic_cast<SrsLazyGbSipTcpConnWrapper*>(gc_available_wrapper());
SrsLazyGbSipTcpConnWrapper* wrapper = dynamic_cast<SrsLazyGbSipTcpConnWrapper*>(gc_creator_wrapper());
srs_assert(wrapper); // It MUST never be NULL, because this method is in the cycle of coroutine of receiver.
// Find exists session for register, might be created by another object and still alive.
@ -1480,7 +1480,7 @@ srs_error_t SrsLazyGbMediaTcpConn::bind_session(uint32_t ssrc, SrsLazyGbSessionW
if (!ssrc) return err;
// The lazy-sweep wrapper for this resource.
SrsLazyGbMediaTcpConnWrapper* wrapper = dynamic_cast<SrsLazyGbMediaTcpConnWrapper*>(gc_available_wrapper());
SrsLazyGbMediaTcpConnWrapper* wrapper = dynamic_cast<SrsLazyGbMediaTcpConnWrapper*>(gc_creator_wrapper());
srs_assert(wrapper); // It MUST never be NULL, because this method is in the cycle of coroutine.
// Find exists session for register, might be created by another object and still alive.

View file

@ -1348,7 +1348,7 @@ srs_error_t SrsServerAdapter::run(SrsWaitGroup* wg)
}
#endif
SrsSweepGc* gc = dynamic_cast<SrsSweepGc*>(_srs_gc);
SrsLazySweepGc* gc = dynamic_cast<SrsLazySweepGc*>(_srs_gc);
if ((err = gc->start()) != srs_success) {
return srs_error_wrap(err, "start gc");
}

View file

@ -336,7 +336,7 @@ srs_error_t srs_global_initialize()
#ifdef SRS_GB28181
_srs_gb_manager = new SrsResourceManager("GB", true);
#endif
_srs_gc = new SrsSweepGc();
_srs_gc = new SrsLazySweepGc();
// Initialize global pps, which depends on _srs_clock
_srs_pps_ids = new SrsPps();