bursar.CreditEventEmitter
class bursar.CreditEventEmitter
Bases: object
Typed pub/sub event emitter for credit events.
Handlers are registered by event type string and called synchronously when the event is emitted. No-op when no handlers are registered.
Thread-safety: _lock (a threading.RLock) guards all mutations to
_listeners. The emit loop copies the handler list under the lock then
calls each handler outside the lock so a handler that calls on() or
off() during dispatch cannot deadlock.
on(event_type, handler)
Register a handler for a specific event type.
- Parameters:
- event_type (Literal [ 'credits.deducted' , 'credits.deduct_failed' , 'credits.added' , 'credits.refunded' , 'credits.refund_failed' , 'credits.expired' , 'credits.low_balance' , 'credits.plan_changed' , 'credits.reserved' , 'credits.reservation_released' , 'credits.lease_expired' , 'credits.overdraft' , 'credits.cycle_renewed' , 'credits.revoked' , 'credits.quota_blocked' , 'credits.quota_threshold' ])
- handler (Callable [ [CreditEvent ] , None ])
- Return type: None
off(event_type, handler)
Remove a previously registered handler.
- Parameters:
- event_type (Literal [ 'credits.deducted' , 'credits.deduct_failed' , 'credits.added' , 'credits.refunded' , 'credits.refund_failed' , 'credits.expired' , 'credits.low_balance' , 'credits.plan_changed' , 'credits.reserved' , 'credits.reservation_released' , 'credits.lease_expired' , 'credits.overdraft' , 'credits.cycle_renewed' , 'credits.revoked' , 'credits.quota_blocked' , 'credits.quota_threshold' ])
- handler (Callable [ [CreditEvent ] , None ])
- Return type: None
emit(event)
Emit an event to all registered handlers.
The handler list is snapshot-copied under the lock so that handlers
can safely call on()/off() without risk of deadlock or
iterator corruption.
- Parameters: event (CreditEvent)
- Return type: None
clear_type(event_type)
Remove all handlers for a specific type.
- Parameters: event_type (Literal [ 'credits.deducted' , 'credits.deduct_failed' , 'credits.added' , 'credits.refunded' , 'credits.refund_failed' , 'credits.expired' , 'credits.low_balance' , 'credits.plan_changed' , 'credits.reserved' , 'credits.reservation_released' , 'credits.lease_expired' , 'credits.overdraft' , 'credits.cycle_renewed' , 'credits.revoked' , 'credits.quota_blocked' , 'credits.quota_threshold' ])
- Return type: None
clear_all()
Remove all handlers for all types.
- Return type: None