Skip to main content
Version: 2.x

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.

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