GoRogue
GoRogue copied to clipboard
Add Alternate Implementation or Flag for MessageBus that Allows Weak References
Although it does not fit all use cases, it can be useful to have either a flag for the existing implementation, or a separate message bus implementation that uses weak references for subscribers could be useful. This would trade the bus being an owner for the subscribers being an owner of would allow subscribers to arbitrarily disappear and not have to be removed from the bus to be GCed.
It disallows:
// object would be GCed since no strong reference is being maintained
bus.RegisterSubscriber(new SubscriberObject());
However can be useful for select cases, provided:
- It is not a default
- The method of activating/deactivating the feature makes it clear what the ramifications are
I don't think it's feasible to include this in the current version; so this would be a new version of MessageBus, and won't be a breaking change.