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

GB: Refine lazy object GC. v5.0.114 (#3321)

* GB: Refine lazy object GC.

1. Remove gc_set_creator_wrapper, pass by resource constructor.
2. Remove SRS_LAZY_WRAPPER_GENERATOR macro, use template directly.
3. Remove interfaces ISrsGbSipConn and ISrsGbSipConnWrapper.
4. Remove ISrsGbMediaConn and ISrsGbMediaConnWrapper.

* GC: Refine wrapper constructor.

* GB: Refine lazy object GC. v5.0.114
This commit is contained in:
Winlin 2022-12-20 19:54:25 +08:00 committed by GitHub
parent 7eaee46f1f
commit 6f3d6b9b65
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 104 additions and 223 deletions

View file

@ -55,24 +55,16 @@ class SrsLazyObject
private:
// The reference count of resource, 0 is no wrapper and safe to sweep.
int32_t gc_ref_;
// The creator wrapper, which created this resource. Note that it might be disposed and the pointer is NULL, so be
// careful and make sure to check it before use it.
ISrsResource* gc_creator_wrapper_;
public:
SrsLazyObject();
virtual ~SrsLazyObject();
public:
// For wrapper to use this resource.
virtual SrsLazyObject* gc_use();
virtual void gc_use();
// For wrapper to dispose this resource.
virtual SrsLazyObject* gc_dispose();
virtual void gc_dispose();
// The current reference count of resource.
virtual int32_t gc_ref();
public:
// Set the creator wrapper, from which resource clone wrapper.
virtual void gc_set_creator_wrapper(ISrsResource* wrapper);
// Get the first available wrapper. NULL if the creator wrapper disposed.
virtual ISrsResource* gc_creator_wrapper();
};
// The lazy-sweep GC, wait for a long time to dispose resource even when resource is disposable.