module puppeteer.signal_wrapper; import puppeteer.signal; import std.stdio; //TODO: life would be so much easier if this class could be shared :) package synchronized class SignalWrapper(T1...) { private shared mixin Signal!T1 signal; public void addListener(void delegate(T1) shared listener) shared { signal.connect(listener); } public void removeListener(void delegate(T1) shared listener) shared { signal.disconnect(listener); } public void emit(T1 args) shared { signal.emit(args); } @property public size_t listenersNumber() shared { return slots_idx; } }