@@ -12,25 +12,11 @@ export interface HandlerRegistration<TMessage extends MessageType> {
1212 resolveHandler ( handlerContextContainer : Container ) : Handler < TMessage >
1313}
1414
15- interface HandlerBinding {
16- symbol : symbol
17- handler : HandlerType
18- }
19-
20- interface RegisteredHandlers {
21- messageType : ClassConstructor < Message >
22- handlers : HandlerBinding [ ]
23- }
24-
25- interface HandlerRegistrations {
26- [ key : string ] : RegisteredHandlers
27- }
28-
29- type MessageName = string
30-
31- interface HandlerResolver {
15+ export interface HandlerResolver {
3216 handler : HandlerType
3317 symbol : symbol
18+ topicIdentifier : string | undefined
19+ messageType : ClassConstructor < Message > | undefined
3420 resolver ( message : unknown ) : boolean
3521}
3622
@@ -42,9 +28,7 @@ interface HandlerResolver {
4228export class HandlerRegistry {
4329
4430 private container : Container
45- private unhandledMessages : MessageName [ ] = [ ]
4631 private handlerResolvers : HandlerResolver [ ] = [ ]
47- private registeredBusMessages : ClassConstructor < Message > [ ] = [ ]
4832
4933 constructor (
5034 @inject ( LOGGER_SYMBOLS . Logger ) private readonly logger : Logger
@@ -57,12 +41,15 @@ export class HandlerRegistry {
5741 * @param symbol A unique symbol to identify the binding of the message to the function
5842 * @param handler The function handler to dispatch messages to as they arrive
5943 * @param messageType The class type of message to handle
44+ * @param topicIdentifier Identifies the topic where the message is sourced from. This topic must exist
45+ * before being consumed as the library assumes it's managed externally
6046 */
6147 register < TMessage extends MessageType = MessageType > (
6248 resolver : ( message : TMessage ) => boolean ,
6349 symbol : symbol ,
6450 handler : HandlerType ,
65- messageType ?: ClassConstructor < Message >
51+ messageType ?: ClassConstructor < Message > ,
52+ topicIdentifier ?: string
6653 ) : void {
6754
6855 const handlerName = getHandlerName ( handler )
@@ -84,10 +71,8 @@ export class HandlerRegistry {
8471 }
8572 }
8673
87- this . handlerResolvers . push ( { resolver, symbol, handler } )
88- if ( ! ! messageType ) {
89- this . registeredBusMessages . push ( messageType )
90- }
74+ this . handlerResolvers . push ( { messageType, resolver, symbol, handler, topicIdentifier } )
75+
9176 this . logger . info (
9277 'Handler registered' ,
9378 { messageName : messageType ? messageType . name : undefined , handler : handlerName }
@@ -151,8 +136,8 @@ export class HandlerRegistry {
151136 /**
152137 * Retrieves a list of all messages that have handler registrations
153138 */
154- get subscribedBusMessages ( ) : ClassConstructor < Message > [ ] {
155- return this . registeredBusMessages
139+ get messageSubscriptions ( ) : HandlerResolver [ ] {
140+ return this . handlerResolvers
156141 }
157142
158143 private bindHandlers ( ) : void {
0 commit comments